Dans cette recette de livre de cuisine API, nous examinerons les API spécifiques que l’exemple utilise pour récupérer les cours, les départements et les semestres.
Avant d’examiner les API, passons en revue la hiérarchie typique des types OrgUnit par défaut :
À partir du diagramme, nous voyons que les semestres sont les enfants directs de l’unité d’organisation racine, nous pouvons donc récupérer une liste de tous les semestres en utilisant le API de structure organisationnelle pour demander une liste d’enfants de l’organisation racine et limiter les résultats aux objets semestriels en spécifiant leur ouTypeId. Dans cet exemple, les semestres ont un ouTypeId de 5 et l’organisation racine a un orgUnitId de 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"}}}]
Comme pour les semestres, les départements sont également les enfants directs de l’organisation racine. Nous pouvons donc obtenir une liste de départements en récupérant les enfants de l’organisation racine et en limitant les résultats en spécifiant l’ouTypeId des départements. Dans cet exemple, l’ouTypeId pour les départements est 203.
GET /d2l/api/lp/1.0/orgstructure/6606/children/ ?ouTypeId=203Response :200 OK[{"Identifier » : « 121162 »,"Name » : « Actuarial Science »,"Code » : « ACTSC »,"Type » : {"Id » : 203,"Code » : « Department »,"Name » : « Department"}},{"Identifier » : « 121139 »,"Name » : « Philosophy »,"Code » : « PHIL »,"Type » : {"Id » : 203,"Code » : « Department »,"Name » : « Department"}},{"Identifier » : « 121140 »,"Name » : « Digital Arts Communication »,"Code » : « DAC »,"Type » : {"Id » : 203,"Code » : « Department »,"Name » : « Department"}}]
Intuitivement, nous pouvons récupérer les modèles de cours au sein d’un département en listant ses enfants. Dans cet exemple, nous aimerions voir le modèle de cours pour le département de sciences actuarielles, qui a un orgUnitId de 121162.
GET /d2l/api/lp/1.0/orgstructure/121162/children/Response :200 OK[{"Identifier » : « 121195 »,"Name » : " 2nd year Actuarial Science Courses »,"Code » : « ACTSC_COURSE_TEMPLATE »,"Type » : {"Id » : 2,"Code » : « Modèle de cours »,"Nom » : « Modèle de cours"}}]
Semblable à la récupération d’une liste de modèles de cours au sein d’un département, nous pouvons faire un appel API pour obtenir la liste des cours dans chaque modèle individuel. Dans cet exemple, notre requête récupère la liste des cours de 2e année en sciences actuarielles.
GET /d2l/api/lp/1.0/orgstructure/121195/children/Response :200 OK[{"Identifier » : « 121196 »,"Name » : « Mathematics of Investment »,"Code » : « ACTSC221 »,"Type » : {"Id » : 3,"Code » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121197 »,"Name » : « Mathematics of Finance »,"Code » : « ACTSC231 »,"Type » : {"Id » : 3,"Code » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121198 »,"Name » : « Intro to Actuarial Mathematics »,"Code » : « ACTSC232 »,"Type » : {"Id » : 3,"Code » : « Offre de cours »,"Nom » : « Offre de cours"}}]
Nous pouvons également récupérer les cours répertoriés dans tous les modèles d’un département en répertoriant tous ses descendants (enfants et leurs enfants), puis en limitant les résultats en spécifiant l’ouTypeId pour un objet de cours. Dans cet exemple, notre requête récupérera tous les cours du département de sciences actuarielles en spécifiant l’ouTypeId de 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 » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121199 »,"Name » : « Life Contingencies 1 »,"Code » : « ACTSC331 »,"Type » : {"Id » : 3,"Code » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121204 »,"Name » : « Asset-Liability Management »,"Code » : « ACTSC445 »,"Type » : {"Id » : 3, « Code » : « Offre de cours »,"Nom » : « Offre de cours"}}]
À partir du diagramme, nous voyons que les enfants d’un semestre sont les offres de cours répertoriées pendant ce semestre. Pour obtenir une liste de tous les cours d’un semestre, nous utilisons l’API pour lister les enfants sous l’orgUnitId du semestre. Dans cet exemple, nous allons récupérer les enfants du semestre d'automne 2013, qui a un OrgUnitId de 121194.
GET /d2l/api/lp/1.0/orgstructure/121194/children/Response :200 OK[{"Identifier » : « 121198 »,"Name » : « Intro to Actuarial Mathematics »,"Code » : « ACTSC232 »,"Type » : {"Id » : 3,"Code » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121702 »,"Name » : « Algebra for Hons Mathematics »,"Code » : « MATH135 »,"Type » : {"Id » : 3,"Code » : « Course Offering »,"Name » : « Course Offering"}},{"Identifier » : « 121243 »,"Name » : « Intro to Plant Structure & Function »,"Code » : « BIOL120 »,"Type » : {"Id » : 3,"Code » : « Offre de cours »,"Nom » : « Offre de cours"}}]
D’autre part, si nous voulons savoir quand un cours particulier est offert, nous pouvons faire un appel API pour récupérer la liste de toutes les offres de cours. Dans cet exemple, nous spécifions l’orgUnitId du cours 121198 et l’ouTypeId pour le semestre.
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"}}]
À partir de cet exemple, nous pouvons voir que le cours est offert à la fois au semestre d'automne 2012 et au semestre d'hiver 2013.
Comme nous l’avons vu, il existe un certain nombre d’approches pour rechercher des cours à l’aide des API.