{
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "const expired = (t) => {",
          "  if (!t) return true;",
          "  try {",
          "    const p = JSON.parse(atob(t.split('.')[1].replace(/-/g,'+').replace(/_/g,'/')));",
          "    return !p.exp || (p.exp * 1000) < (Date.now() + 60000);   // refresh a minute early",
          "  } catch (e) { return true; }",
          "};",
          "",
          "const logins = [",
          "  { v: 'token',      user: pm.collectionVariables.get('userName') },",
          "  { v: 'staffToken', user: pm.collectionVariables.get('staffUserName') },",
          "  { v: 'regToken',   user: pm.collectionVariables.get('regUserName') },",
          "];",
          "",
          "const need = logins.filter(l => l.user && expired(pm.collectionVariables.get(l.v)));",
          "if (need.length) {",
          "  need.forEach(l => {",
          "    pm.sendRequest({",
          "      url: pm.collectionVariables.get('baseUrl') + '/auth/login',",
          "      method: 'POST',",
          "      header: { 'Content-Type': 'application/json' },",
          "      body: { mode: 'raw', raw: JSON.stringify({ UserName: l.user, Password: pm.collectionVariables.get('password') || 'demo' }) },",
          "    }, (err, res) => {",
          "      if (err) { console.log('auto-login failed for ' + l.user, err); return; }",
          "      const j = res.json();",
          "      if (j.result !== 'Ok') { console.log('auto-login rejected for ' + l.user, j.details); return; }",
          "      const u = j.UserMainData || {};",
          "      pm.collectionVariables.set(l.v, (j.token && j.token.data) || '');",
          "      if (l.v === 'token') {",
          "        pm.collectionVariables.set('edStudId', u.ED_STUD_ID || '');",
          "        pm.collectionVariables.set('seUserId', u.SE_USER_ID || '');",
          "        pm.collectionVariables.set('seUserAccntId', u.SE_USER_ACCNT_ID || '');",
          "        pm.collectionVariables.set('facultyId', u.AS_FACULTY_INFO_ID || '');",
          "        pm.collectionVariables.set('acadYearId', u.ED_ACAD_YEAR_ID || '');",
          "        pm.collectionVariables.set('semesterId', u.ED_CODE_SEMESTER_ID || '');",
          "      } else if (l.v === 'regToken') {",
          "        pm.collectionVariables.set('regStudId', u.ED_STUD_ID || '');",
          "      } else {",
          "        pm.collectionVariables.set('staffId', u.SA_STAFF_MEMBER_ID || u.ED_STUD_ID || '');",
          "        pm.collectionVariables.set('staffSeUserId', u.SE_USER_ID || '');",
          "      }",
          "      console.log('auto-login ok: ' + l.user);",
          "    });",
          "  });",
          "}"
        ]
      }
    }
  ],
  "info": {
    "name": "دليل الأساتذة · Faculty Directory",
    "description": "# دليل الأساتذة — Faculty Directory\n\nدليل دكاترة الطالب: المرشد الأكاديمي + دكاترة المقررات المسجلة، مع أزرار تواصل.\n\n---\n\n**إزاي تشغّله:** شغّل `0) Login` الأول — هيملأ التوكن وكل الـ ids لوحده، وبعدها كل الريكوستات تشتغل على طول.\n\n**الحالة:** 4 شغال · 0 شغال بدون داتا · 0 ناقص",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{token}}",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "0) Login (run me first)",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "// Stores the identity + token so every other request just works.",
              "const j = pm.response.json();",
              "if (j.result === \"Ok\") {",
              "    const u = j.UserMainData;",
              "    pm.collectionVariables.set(\"token\",        j.token.data);",
              "    pm.collectionVariables.set(\"edStudId\",     u.ED_STUD_ID);",
              "    pm.collectionVariables.set(\"staffId\",      u.SA_STAFF_MEMBER_ID);",
              "    pm.collectionVariables.set(\"seUserId\",     u.SE_USER_ID);",
              "    pm.collectionVariables.set(\"seUserAccntId\",u.SE_USER_ACCNT_ID);",
              "    pm.collectionVariables.set(\"facultyId\",    u.AS_FACULTY_INFO_ID);",
              "    pm.collectionVariables.set(\"acadYearId\",   u.ED_ACAD_YEAR_ID);",
              "    pm.collectionVariables.set(\"semesterId\",   u.ED_CODE_SEMESTER_ID);",
              "    console.log(\"signed in:\", u.ED_STUD_ID, u.YEAR_DESC_EN, u.SEM_DESC_EN);",
              "}",
              "pm.test(\"login ok\", () => pm.expect(j.result).to.eql(\"Ok\"));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "auth": {
          "type": "noauth"
        },
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"UserName\": \"{{userName}}\",\n  \"Password\": \"{{password}}\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/auth/login",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "auth",
            "login"
          ]
        },
        "description": "يخزّن التوكن وكل الـ ids في متغيرات الكوليكشن. **شغّله الأول.**"
      }
    },
    {
      "name": "0b) Login as STAFF (for the 👨‍🏫 requests)",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const j = pm.response.json();",
              "pm.test('staff login ok', () => pm.expect(j.result).to.eql('Ok'));",
              "const u = j.UserMainData || {};",
              "pm.collectionVariables.set('staffToken', (j.token && j.token.data) || '');",
              "pm.collectionVariables.set('staffId', u.SA_STAFF_MEMBER_ID || u.ED_STUD_ID || '');",
              "pm.collectionVariables.set('staffSeUserId', u.SE_USER_ID || '');",
              "pm.test('is NOT a student', () => pm.expect(u.IsStudent).to.eql(false));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "auth": {
          "type": "noauth"
        },
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"UserName\": \"{{staffUserName}}\",\n  \"Password\": \"{{password}}\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/auth/login",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "auth",
            "login"
          ]
        },
        "description": "نفس إندبوينت الدخول بحساب دكتور. بيخزّن **staffToken** و**staffId**. الريكويستات اللي عليها 👨‍🏫 بتستخدمه."
      }
    },
    {
      "name": "🎓  POST students/getInstructorsAndAdvisorForAsk",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{token}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"EdStudId\": \"{{edStudId}}\",\n  \"EdAcadYearId\": \"{{acadYearId}}\",\n  \"EdCodeSemesterId\": \"{{semesterId}}\",\n  \"AsFacultyInfoId\": \"{{facultyId}}\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/students/getInstructorsAndAdvisorForAsk",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "students",
            "getInstructorsAndAdvisorForAsk"
          ]
        },
        "description": "**✅ شغال بداتا حقيقية**\n⭐ 12 دكتور + المرشد — <span class=\"new\">جديد</span> كل واحد معاه <code>officeHours[]</code>\n\n> بحساب **طالب** — شغّل «0) Login» الأول."
      },
      "response": [
        {
          "name": "رد حقيقي — فيه داتا · 200",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"EdStudId\": \"{{edStudId}}\",\n  \"EdAcadYearId\": \"{{acadYearId}}\",\n  \"EdCodeSemesterId\": \"{{semesterId}}\",\n  \"AsFacultyInfoId\": \"{{facultyId}}\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/students/getInstructorsAndAdvisorForAsk",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "students",
                "getInstructorsAndAdvisorForAsk"
              ]
            },
            "description": "**✅ شغال بداتا حقيقية**\n⭐ 12 دكتور + المرشد — <span class=\"new\">جديد</span> كل واحد معاه <code>officeHours[]</code>\n\n> بحساب **طالب** — شغّل «0) Login» الأول."
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "cookie": [],
          "body": "{\n  \"result\": \"Ok\",\n  \"details\": \"NO ERROR\",\n  \"courses\": {\n    \"AcademicAdvisior\": {\n      \"SA_STF_MEMBER_ID\": 94.0,\n      \"STF_FULL_NAME_AR\": \"د. محمد عبد الحميد محمد على\",\n      \"STF_FULL_NAME_EN\": \"Dr Mohamed abdel hameed mohamed ali\"\n    },\n    \"Instructors\": [\n      {\n        \"CourseAr\": \"العلاج الطبيعي الألورام\",\n        \"CourseEn\": \"Physical Therapy for Oncology\",\n        \"CourseCode\": \"SUR311\",\n        \"Ed_courseId\": 47,\n        \"SA_STF_MEMBER_ID\": 20.0,\n        \"STF_FULL_NAME_AR\": \"أ .م . د سعيد عبدالغنى\",\n        \"STF_FULL_NAME_EN\": \"ِAssist. Prof. Said Abdel Ghany\"\n      },\n      {\n        \"CourseAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n        \"CourseEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n        \"CourseCode\": \"SUR310\",\n        \"Ed_courseId\": 46,\n        \"SA_STF_MEMBER_ID\": 22.0,\n        \"STF_FULL_NAME_AR\": \"Dr.Heba Saad\",\n        \"STF_FULL_NAME_EN\": \"Dr.Heba Saad\"\n      },\n      {\n        \"CourseAr\": \"علم األأ مراض\",\n        \"CourseEn\": \"Pathology\",\n        \"CourseCode\": \"SUR312\",\n        \"Ed_courseId\": 48,\n        \"SA_STF_MEMBER_ID\": 22.0,\n        \"STF_FULL_NAME_AR\": \"Dr.Heba Saad\",\n        \"STF_FULL_NAME_EN\": \"Dr.Heba Saad\"\n      },\n      {\n        \"CourseAr\": \"الاحصاء الطبي\",\n        \"CourseEn\": \"Biostatistics\",\n        \"CourseCode\": \"UM301\",\n        \"Ed_courseId\": 2,\n        \"SA_STF_MEMBER_ID\": 25.0,\n        \"STF_FULL_NAME_AR\": \"Dr. Fatma Essam\",\n        \"STF_FULL_NAME_EN\": \"Dr. Fatma Essam\"\n      },\n      {\n        \"CourseAr\": \"التغذية العلاجية\",\n        \"CourseEn\": \"Clinical Nutrition\",\n        \"CourseCode\": \"INT313\",\n        \"Ed_courseId\": 49,\n        \"SA_STF_MEMBER_ID\": 140.0,\n        \"STF_FULL_NAME_AR\": \"مارينا محب\",\n        \"STF_FULL_NAME_EN\": \"Dr Marina Moheb Aziz Ghobreal\"\n      },\n      {\n        \"CourseAr\": \"أمراض النسا و التوليد\",\n        \"CourseEn\": \"Obstetrics & Gynecology\",\n        \"CourseCode\": \"GYN307\",\n        \"Ed_courseId\": 43,\n        \"SA_STF_MEMBER_ID\": 141.0,\n        \"STF_FULL_NAME_AR\": \"هناء السيد\",\n        \"STF_FULL_NAME_EN\": \"Dr Hanaa Elsayed \"\n      },\n      {\n        \"CourseAr\": \"الجراحة العامة و الحروق و الأمراض الجلدية\",\n        \"CourseEn\": \"General surgery, burn & Dermatology\",\n        \"CourseCode\": \"SUR309\",\n        \"Ed_courseId\": 45,\n        \"SA_STF_MEMBER_ID\": 141.0,\n        \"STF_FULL_NAME_AR\": \"هناء السيد\",\n        \"STF_FULL_NAME_EN\": \"Dr Hanaa Elsayed \"\n      },\n      {\n        \"CourseAr\": \"الجراحة العامة و الحروق و الأمراض الجلدية\",\n        \"CourseEn\": \"General surgery, burn & Dermatology\",\n        \"CourseCode\": \"SUR309\",\n        \"Ed_courseId\": 45,\n        \"SA_STF_MEMBER_ID\": 144.0,\n        \"STF_FULL_NAME_AR\": \"ليندا رأفت\",\n        \"STF_FULL_NAME_EN\": \"TA Linda Raafat Danial Thomas\"\n      },\n      {\n        \"CourseAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n        \"CourseEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n        \"CourseCode\": \"SUR310\",\n        \"Ed_courseId\": 46,\n        \"SA_STF_MEMBER_ID\": 144.0,\n        \"STF_FULL_NAME_AR\": \"ليندا رأفت\",\n        \"STF_FULL_NAME_EN\": \"TA Linda Raafat Danial Thomas\"\n      },\n      {\n        \"CourseAr\": \"العلاج الطبيعي الألورام\",\n        \"CourseEn\": \"Physical Therapy for Oncology\",\n        \"CourseCode\": \"SUR311\",\n        \"Ed_courseId\": 47,\n        \"SA_STF_MEMBER_ID\": 144.0,\n        \"STF_FULL_NAME_AR\": \"ليندا رأفت\",\n        \"STF_FULL_NAME_EN\": \"TA Linda Raafat Danial Thomas\"\n      },\n      {\n        \"CourseAr\": \"علم األأ مراض\",\n        \"CourseEn\": \"Pathology\",\n        \"CourseCode\": \"SUR312\",\n        \"Ed_courseId\": 48,\n        \"SA_STF_MEMBER_ID\": 144.0,\n        \"STF_FULL_NAME_AR\": \"ليندا رأفت\",\n        \"STF_FULL_NAME_EN\": \"TA Linda Raafat Danial Thomas\"\n      },\n      {\n        \"CourseAr\": \"التغذية العلاجية\",\n        \"CourseEn\": \"Clinical Nutrition\",\n        \"CourseCode\": \"INT313\",\n        \"Ed_courseId\": 49,\n        \"SA_STF_MEMBER_ID\": 145.0,\n        \"STF_FULL_NAME_AR\": \"مجدى أدهم محمد \",\n        \"STF_FULL_NAME_EN\": \"TA Magdy Adham Mohamed Zaky \"\n      },\n      {\n        \"CourseAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n        \"CourseEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n        \"CourseCode\": \"SUR310\",\n        \"Ed_courseId\": 46,\n        \"SA_STF_MEMBER_ID\": 145.0,\n        \"STF_FULL_NAME_AR\": \"مجدى أدهم محمد \",\n        \"STF_FULL_NAME_EN\": \"TA Magdy Adham Mohamed Zaky \"\n      },\n      {\n        \"CourseAr\": \"العلاج الطبيعي الألورام\",\n        \"CourseEn\": \"Physical Therapy for Oncology\",\n        \"CourseCode\": \"SUR311\",\n        \"Ed_courseId\": 47,\n        \"SA_STF_MEMBER_ID\": 145.0,\n        \"STF_FULL_NAME_AR\": \"مجدى أدهم محمد \",\n        \"STF_FULL_NAME_EN\": \"TA Magdy Adham Mohamed Zaky \"\n      },\n      {\n        \"CourseAr\": \"أمراض النسا و التوليد\",\n        \"CourseEn\": \"Obstetrics & Gynecology\",\n        \"CourseCode\": \"GYN307\",\n        \"Ed_courseId\": 43,\n        \"SA_STF_MEMBER_ID\": 146.0,\n        \"STF_FULL_NAME_AR\": \"أحمد محمد مصطفى\",\n        \"STF_FULL_NAME_EN\": \"TA Ahmed Mohamed Mostafa\"\n      },\n      {\n        \"CourseAr\": \"العلاج الطبيعى لصحة المرأة\",\n        \"CourseEn\": \"Physical Therapy for Women Health\",\n        \"CourseCode\": \"GYN308\",\n        \"Ed_courseId\": 44,\n        \"SA_STF_MEMBER_ID\": 146.0,\n        \"STF_FULL_NAME_AR\": \"أحمد محمد مصطفى\",\n        \"STF_FULL_NAME_EN\": \"TA Ahmed Mohamed Mostafa\"\n      },\n      {\n        \"CourseAr\": \"الاحصاء الطبي\",\n        \"CourseEn\": \"Biostatistics\",\n        \"CourseCode\": \"UM301\",\n        \"Ed_courseId\": 2,\n        \"SA_STF_MEMBER_ID\": 148.0,\n        \"STF_FULL_NAME_AR\": \"عاطف محمد داهش\",\n        \"STF_FULL_NAME_EN\": \"TA Atef Mohamed Dahesh \"\n      },\n      {\n        \"CourseAr\": \"Engineering Chemistry\",\n        \"CourseEn\": \"Engineering Chemistry\",\n        \"CourseCode\": \"BSM131\",\n        \"Ed_courseId\": 1234,\n        \"SA_STF_MEMBER_ID\": 170.0,\n        \"STF_FULL_NAME_AR\": \"Shereen Samir\",\n        \"STF_FULL_NAME_EN\": \"Shereen Samir\"\n      }\n    ]\n  }\n}"
        }
      ]
    },
    {
      "name": "🎓  POST students/GetOfficeHours",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{token}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"ED_STUD_ID\": \"{{edStudId}}\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/students/GetOfficeHours",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "students",
            "GetOfficeHours"
          ]
        },
        "description": "**✅ شغال بداتا حقيقية**\nنفس المواعيد بشكل كروت (دكتور ← مقرراته ← مواعيده). <span class=\"new\">جديد</span> <code>FromTime</code>/<code>ToTime</code> بـ <code>HH:mm</code>، ومبقاش بيرجّع «الأيام المفضّلة للتدريس» على إنها ساعات مكتبية · <span class=\"new\">جديد ٢</span> والحجز من <code>students/GetOfficeHourOpenings</code> / <code>students/BookOfficeHour</code>\n\n> بحساب **طالب** — شغّل «0) Login» الأول."
      },
      "response": [
        {
          "name": "رد حقيقي — فيه داتا · 200",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ED_STUD_ID\": \"{{edStudId}}\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/students/GetOfficeHours",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "students",
                "GetOfficeHours"
              ]
            },
            "description": "**✅ شغال بداتا حقيقية**\nنفس المواعيد بشكل كروت (دكتور ← مقرراته ← مواعيده). <span class=\"new\">جديد</span> <code>FromTime</code>/<code>ToTime</code> بـ <code>HH:mm</code>، ومبقاش بيرجّع «الأيام المفضّلة للتدريس» على إنها ساعات مكتبية · <span class=\"new\">جديد ٢</span> والحجز من <code>students/GetOfficeHourOpenings</code> / <code>students/BookOfficeHour</code>\n\n> بحساب **طالب** — شغّل «0) Login» الأول."
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "cookie": [],
          "body": "{\n  \"result\": \"Ok\",\n  \"details\": \"NO ERROR\",\n  \"staff\": [\n    {\n      \"SA_STF_MEMBER_ID\": 20.0,\n      \"STF_FULL_NAME_AR\": \"أ .م . د سعيد عبدالغنى\",\n      \"STF_FULL_NAME_EN\": \"ِAssist. Prof. Said Abdel Ghany\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"SUR311\",\n          \"nameAr\": \"العلاج الطبيعي الألورام\",\n          \"nameEn\": \"Physical Therapy for Oncology\",\n          \"degreeAr\": \"أستاذ مساعد\",\n          \"degreeEn\": \"أستاذ مساعد\"\n        }\n      ],\n      \"officeHours\": [\n        {\n          \"SA_OFFICE_HOUR_ID\": 7.0,\n          \"SA_STF_MEMBER_ID\": 20.0,\n          \"GS_CODE_WEEK_DAY_ID\": 4.0,\n          \"DAY_AR\": \"الإثنين\",\n          \"DAY_EN\": \"Monday\",\n          \"FROM_TIME\": \"1900-01-01T10:00:00\",\n          \"TO_TIME\": \"1900-01-01T12:00:00\",\n          \"NOTES\": \"مكتب أعضاء هيئة التدريس\",\n          \"TYPE_FLG\": 1.0\n        }\n      ]\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 22.0,\n      \"STF_FULL_NAME_AR\": \"Dr.Heba Saad\",\n      \"STF_FULL_NAME_EN\": \"Dr.Heba Saad\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"SUR312\",\n          \"nameAr\": \"علم األأ مراض\",\n          \"nameEn\": \"Pathology\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        },\n        {\n          \"code\": \"SUR310\",\n          \"nameAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n          \"nameEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        }\n      ],\n      \"officeHours\": [\n        {\n          \"SA_OFFICE_HOUR_ID\": 8.0,\n          \"SA_STF_MEMBER_ID\": 22.0,\n          \"GS_CODE_WEEK_DAY_ID\": 5.0,\n          \"DAY_AR\": \"الثلاثاء\",\n          \"DAY_EN\": \"Tuesday\",\n          \"FROM_TIME\": \"1900-01-01T10:00:00\",\n          \"TO_TIME\": \"1900-01-01T12:00:00\",\n          \"NOTES\": \"مكتب أعضاء هيئة التدريس\",\n          \"TYPE_FLG\": 1.0\n        }\n      ]\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 25.0,\n      \"STF_FULL_NAME_AR\": \"Dr. Fatma Essam\",\n      \"STF_FULL_NAME_EN\": \"Dr. Fatma Essam\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"UM301\",\n          \"nameAr\": \"الاحصاء الطبي\",\n          \"nameEn\": \"Biostatistics\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        }\n      ],\n      \"officeHours\": [\n        {\n          \"SA_OFFICE_HOUR_ID\": 9.0,\n          \"SA_STF_MEMBER_ID\": 25.0,\n          \"GS_CODE_WEEK_DAY_ID\": 6.0,\n          \"DAY_AR\": \"الأربعاء\",\n          \"DAY_EN\": \"Wednesday\",\n          \"FROM_TIME\": \"1900-01-01T10:00:00\",\n          \"TO_TIME\": \"1900-01-01T12:00:00\",\n          \"NOTES\": \"مكتب أعضاء هيئة التدريس\",\n          \"TYPE_FLG\": 1.0\n        }\n      ]\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 94.0,\n      \"STF_FULL_NAME_AR\": \"د. محمد عبد الحميد محمد على\",\n      \"STF_FULL_NAME_EN\": \"Dr Mohamed abdel hameed mohamed ali\",\n      \"NOTES\": \"\",\n      \"courses\": [\n        {\n          \"code\": \"\",\n          \"nameAr\": \"\",\n          \"nameEn\": \"\",\n          \"degreeAr\": \"\",\n          \"degreeEn\": \"\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 140.0,\n      \"STF_FULL_NAME_AR\": \"مارينا محب\",\n      \"STF_FULL_NAME_EN\": \"Dr Marina Moheb Aziz Ghobreal\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"INT313\",\n          \"nameAr\": \"التغذية العلاجية\",\n          \"nameEn\": \"Clinical Nutrition\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 141.0,\n      \"STF_FULL_NAME_AR\": \"هناء السيد\",\n      \"STF_FULL_NAME_EN\": \"Dr Hanaa Elsayed \",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"GYN307\",\n          \"nameAr\": \"أمراض النسا و التوليد\",\n          \"nameEn\": \"Obstetrics & Gynecology\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        },\n        {\n          \"code\": \"SUR309\",\n          \"nameAr\": \"الجراحة العامة و الحروق و الأمراض الجلدية\",\n          \"nameEn\": \"General surgery, burn & Dermatology\",\n          \"degreeAr\": \"مدرس\",\n          \"degreeEn\": \"مدرس\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 144.0,\n      \"STF_FULL_NAME_AR\": \"ليندا رأفت\",\n      \"STF_FULL_NAME_EN\": \"TA Linda Raafat Danial Thomas\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"SUR309\",\n          \"nameAr\": \"الجراحة العامة و الحروق و الأمراض الجلدية\",\n          \"nameEn\": \"General surgery, burn & Dermatology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        },\n        {\n          \"code\": \"SUR311\",\n          \"nameAr\": \"العلاج الطبيعي الألورام\",\n          \"nameEn\": \"Physical Therapy for Oncology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        },\n        {\n          \"code\": \"SUR312\",\n          \"nameAr\": \"علم األأ مراض\",\n          \"nameEn\": \"Pathology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        },\n        {\n          \"code\": \"SUR310\",\n          \"nameAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n          \"nameEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 145.0,\n      \"STF_FULL_NAME_AR\": \"مجدى أدهم محمد \",\n      \"STF_FULL_NAME_EN\": \"TA Magdy Adham Mohamed Zaky \",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"INT313\",\n          \"nameAr\": \"التغذية العلاجية\",\n          \"nameEn\": \"Clinical Nutrition\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        },\n        {\n          \"code\": \"SUR311\",\n          \"nameAr\": \"العلاج الطبيعي الألورام\",\n          \"nameEn\": \"Physical Therapy for Oncology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        },\n        {\n          \"code\": \"SUR310\",\n          \"nameAr\": \"لعلاج الطبيعى للجراحة العامة و الحروق و االمراض الجلدية\",\n          \"nameEn\": \"Physical Therapy for general surgery, burn & Dermatology\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 146.0,\n      \"STF_FULL_NAME_AR\": \"أحمد محمد مصطفى\",\n      \"STF_FULL_NAME_EN\": \"TA Ahmed Mohamed Mostafa\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"GYN307\",\n          \"nameAr\": \"أمراض النسا و التوليد\",\n          \"nameEn\": \"Obstetrics & Gynecology\",\n          \"degreeAr\": \"مدرس مساعد\",\n          \"degreeEn\": \"مدرس مساعد\"\n        }\n      ],\n      \"officeHours\": []\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 148.0,\n      \"STF_FULL_NAME_AR\": \"عاطف محمد داهش\",\n      \"STF_FULL_NAME_EN\": \"TA Atef Mohamed Dahesh \",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"UM301\",\n          \"nameAr\": \"الاحصاء الطبي\",\n          \"nameEn\": \"Biostatistics\",\n          \"degreeAr\": \"معيد\",\n          \"degreeEn\": \"معيد\"\n        }\n      ],\n      \"officeHours\": [\n        {\n          \"SA_OFFICE_HOUR_ID\": 11.0,\n          \"SA_STF_MEMBER_ID\": 148.0,\n          \"GS_CODE_WEEK_DAY_ID\": 1.0,\n          \"DAY_AR\": \"الجمعة\",\n          \"DAY_EN\": \"Friday\",\n          \"FROM_TIME\": \"2000-01-01T10:00:00\",\n          \"TO_TIME\": \"2000-01-01T12:00:00\",\n          \"NOTES\": \"Office 214\",\n          \"TYPE_FLG\": 0.0\n        },\n        {\n          \"SA_OFFICE_HOUR_ID\": 12.0,\n          \"SA_STF_MEMBER_ID\": 148.0,\n          \"GS_CODE_WEEK_DAY_ID\": 3.0,\n          \"DAY_AR\": \"الأحد\",\n          \"DAY_EN\": \"Sunday\",\n          \"FROM_TIME\": \"2000-01-01T13:00:00\",\n          \"TO_TIME\": \"2000-01-01T15:00:00\",\n          \"NOTES\": \"Office 214\",\n          \"TYPE_FLG\": 0.0\n        },\n        {\n          \"SA_OFFICE_HOUR_ID\": 13.0,\n          \"SA_STF_MEMBER_ID\": 148.0,\n          \"GS_CODE_WEEK_DAY_ID\": 5.0,\n          \"DAY_AR\": \"الثلاثاء\",\n          \"DAY_EN\": \"Tuesday\",\n          \"FROM_TIME\": \"2000-01-01T09:00:00\",\n          \"TO_TIME\": \"2000-01-01T11:00:00\",\n          \"NOTES\": \"By appointment\",\n          \"TYPE_FLG\": 0.0\n        }\n      ]\n    },\n    {\n      \"SA_STF_MEMBER_ID\": 170.0,\n      \"STF_FULL_NAME_AR\": \"Shereen Samir\",\n      \"STF_FULL_NAME_EN\": \"Shereen Samir\",\n      \"NOTES\": \"By appointment\",\n      \"courses\": [\n        {\n          \"code\": \"BSM131\",\n          \"nameAr\": \"Engineering Chemistry\",\n          \"nameEn\": \"Engineering Chemistry\",\n          \"degreeAr\": \"أستاذ\",\n          \"degreeEn\": \"أستاذ\"\n        }\n      ],\n      \"officeHours\": []\n    }\n  ]\n}"
        }
      ]
    },
    {
      "name": "👨‍🏫  POST students/GetOfficeHourOpenings",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{staffToken}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"EdStudId\": \"{{edStudId}}\",\n  \"SaStfMemberId\": \"{{staffId}}\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/students/GetOfficeHourOpenings",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "students",
            "GetOfficeHourOpenings"
          ]
        },
        "description": "**✅ شغال بداتا حقيقية**\n<span class=\"new\">جديد ٢</span> المواعيد المتاحة للحجز (<code>Openings[]</code>) + <code>MyBookings[]</code> + <code>CancelledByLecturer[]</code> — <a href=\"#wn2-oh\">التفاصيل</a>\n\n> بحساب **دكتور** — شغّل «0b) Login as STAFF» الأول. بتوكن طالب هيرجّع `data not found`."
      },
      "response": []
    },
    {
      "name": "🎓  POST students/BookOfficeHour",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{token}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"EdStudId\": \"{{edStudId}}\",\n  \"SaOfficeHourId\": 22,\n  \"Date\": \"2026-10-08\",\n  \"Topic\": \"سؤال في المشروع\"\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/students/BookOfficeHour",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "students",
            "BookOfficeHour"
          ]
        },
        "description": "**✅ شغال بداتا حقيقية**\n<span class=\"new\">جديد ٢</span> حجز ميعاد؛ الإلغاء بـ <code>{Cancel: true, BookingId}</code>\n\n> بحساب **طالب** — شغّل «0) Login» الأول."
      },
      "response": []
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.109.123.243.32.sslip.io"
    },
    {
      "key": "userName",
      "value": "mahmoued.eprahim.23010062"
    },
    {
      "key": "staffUserName",
      "value": "atef.dahesh"
    },
    {
      "key": "regUserName",
      "value": "mahmoued.eprahim.23010062"
    },
    {
      "key": "password",
      "value": "demo"
    },
    {
      "key": "token",
      "value": ""
    },
    {
      "key": "staffToken",
      "value": ""
    },
    {
      "key": "regToken",
      "value": ""
    },
    {
      "key": "edStudId",
      "value": ""
    },
    {
      "key": "regStudId",
      "value": ""
    },
    {
      "key": "staffId",
      "value": ""
    },
    {
      "key": "staffSeUserId",
      "value": ""
    },
    {
      "key": "seUserId",
      "value": ""
    },
    {
      "key": "seUserAccntId",
      "value": ""
    },
    {
      "key": "facultyId",
      "value": ""
    },
    {
      "key": "acadYearId",
      "value": ""
    },
    {
      "key": "semesterId",
      "value": ""
    }
  ]
}