في وصفة كتاب الطبخ لواجهة برمجة التطبيقات هذه ، سنراجع واجهات برمجة التطبيقات المحددة التي يستخدمها العينة لاسترداد الدورات والأقسام والفصول الدراسية.
قبل أن نلقي نظرة على واجهات برمجة التطبيقات ، دعنا نراجع التسلسل الهرمي النموذجي لأنواع OrgUnit الافتراضية:
من الرسم التخطيطي، نرى أن الفصول الدراسية هي الأبناء المباشرين لوحدة التنظيم الجذرية، حتى نتمكن من استرداد قائمة بجميع الفصول الدراسية باستخدام واجهة برمجة تطبيقات الهيكل التنظيمي لطلب قائمة بالأطفال في المؤسسة الجذرية وقصر النتائج على كائنات الفصل الدراسي عن طريق تحديد ouTypeId الخاصة بهم. في هذا المثال، تحتوي الفصول الدراسية على ouTypeId 5 وتحتوي المؤسسة الجذرية على orgUnitId 6606.
GET /d2l/api/lp/1.0/orgstructure/6606/descendants/?ouTypeId=5Response:200 OK[{"Identifier": "121194","Name": "Fall 2012 Semester","Code": "Fall2012","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}{"Identifier": "122037","Name": "Winter 2013 Semester","Code": "Winter2013","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}}}]
على غرار الفصول الدراسية ، فإن الأقسام هي أيضا الأبناء المباشرين لمنظمة الجذر. حتى نتمكن من الحصول على قائمة بالأقسام عن طريق استرداد أطفال المنظمة الجذرية والحد من النتائج عن طريق تحديد ouTypeId للأقسام. في هذا المثال، يكون outTypeId للأقسام هو 203.
GET /d2l/api/lp/1.0/orgstructure/6606/children/?ouTypeId=203Response:200 OK[{"Identifier": "121162","Name": "Actoireal Science","Code": "ACTSC","Type": {"Id": 203,"Code": "Department","Name": "Department"}},{"Identifier": "121139","Name": "Philosophy","Code": "PHIL","Type": {"Id": 203,"Code": "Department","Department", "Name": "121140","Name": "Digital Arts Communication","Code": "DAC","Type": {"Id": 203,"Code": "Department","Name": "Department"}}]
بشكل حدسي ، يمكننا استرداد قوالب الدورة التدريبية داخل القسم من خلال سرد أطفاله. في هذا المثال، نود عرض قالب الدورة التدريبية لقسم العلوم الاكتوارية الذي يحتوي على orgUnitId 121162.
GET /d2l/api/lp/1.0/orgstructure/121162/children/Response:200 OK[{"Identifier": "121195","Name": "2nd Year Tاكتوارية Courses Sciences","Code": "ACTSC_COURSE_TEMPLATE","Type": {"Id": 2,"Code": "قالب الدورة","الاسم": "قالب الدورة"}}]
على غرار استرداد قائمة بقوالب الدورات التدريبية داخل القسم ، يمكننا إجراء استدعاء API للحصول على قائمة الدورات التدريبية داخل كل قالب فردي. في هذا المثال، يجلب استعلامنا قائمة دورات العلوم الاكتوارية للسنة الثانية.
GET /d2l/api/lp/1.0/orgstructure/121195/children/Response:200 OK[{"Identifier": "121196","Name": "Math of Investment","Code": "ACTSC221","Type": {"Id": 3,"Code": "Courseing","Name": "Courseing"}},{"Identifier": "121197","Name": "Math of Finance","Code": "ACTSC231","Type": {"Id": 3,"Code": "Courseing","Name": "Courseing"}},{"Identifier": "121198","Name": "مقدمة عن الرياضيات الاكتوارية","Code": "ACTSC232","Type": {"Id": 3,"Code": "عرض الدورة","الاسم": "عرض الدورة"}}]
يمكننا أيضا جلب الدورات المدرجة في جميع القوالب داخل القسم عن طريق سرد جميع أحفاده (الأطفال وأطفالهم) ثم تقييد النتائج عن طريق تحديد ouTypeId لكائن المقرر الدراسي. في هذا المثال، سيقوم استعلامنا بإحضار كل مقرر دراسي في قسم العلوم الاكتوارية عن طريق تحديد ouTypeId للعدد 3.
GET /d2l/api/lp/1.0/orgstructure/121162/descendants/?ouTypeId=3Response:200 OK[{"Identifier": "121196","Name": "Mathematics of Investment","Code": "ACTSC221","Type": {"Id": 3,"Code": "Courseing","Name": "Course Offering"}},{"Identifier": "121199","Name": "Life's Contingies 1","Code": "ACTSC331","Type": {"Id": 3,"Code": "Courseing","Name": "Courseing"}},{"Identifier": "121204","Name": "Asset Liability Management","Code": "ACTSC445","Type": {"Id": 3, "Code": "عرض الدورة","الاسم": "عرض الدورة"}}]
من الرسم البياني ، نرى أن أطفال الفصل الدراسي هم عروض الدورات المدرجة خلال ذلك الفصل الدراسي. لجلب قائمة بجميع الدورات خلال فصل دراسي واحد ، نستخدم واجهة برمجة التطبيقات لإدراج الأطفال ضمن orgUnitId للفصل الدراسي. في هذا المثال ، سنقوم باسترداد أطفال فصل خريف 2013 ، الذي يحتوي على OrgUnitId 121194.
GET /d2l/api/lp/1.0/orgstructure/121194/children/Response:200 OK[{"Identifier": "121198","Name": "مقدمة في الرياضيات الاكتوارية","Code": "ACTSC232","Type": {"Id": 3,"Code": "Course Offering","Name": "Courseing"}},{"Identifier": "121702","Name": "Algebra for Hons Mathematics","Code": "MATH135","Type": {"Id": 3,"Code": "Courseing","Name": "Courseing"}},{"Identifier": "121243","Name": "مقدمة عن هيكل النبات ووظيفته","الكود": "BIOL120","النوع": {"المعرف": 3,"الرمز": "عرض الدورة","الاسم": "عرض الدورة"}}]
من ناحية أخرى ، إذا أردنا معرفة متى يتم تقديم دورة تدريبية معينة ، فيمكننا إجراء استدعاء API لجلب قائمة جميع عروض الدورة التدريبية. في هذا المثال، نحدد 121198 orgUnitId للمقرر الدراسي و ouTypeId للفصل الدراسي.
GET /d2l/api/lp/1.0/orgstructure/121198/parents/?outypeid=5Response:200 OK[{"Identifier": "121194","Name": "Fall 2012 Semester","Code": "Fall2012","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}},{"Identifier": "122037","Name": "Winter 2013 Semester","Code": "Winter2013","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}}]
من هذا المثال ، يمكننا أن نرى أن الدورة يتم تقديمها في كل من فصل خريف 2012 وفصل شتاء 2013.
كما رأينا ، هناك عدد من الأساليب للبحث عن الدورات التدريبية باستخدام واجهات برمجة التطبيقات.