In dit API-kookboekrecept bekijken we de specifieke API's die in het voorbeeld worden gebruikt om cursussen, afdelingen en semesters op te halen.
Voordat we naar de API's kijken, laten we eens kijken naar de typische hiërarchie van de standaardtypen OrgUnit:
In het diagram zien we dat semesters de directe onderliggende waarden zijn van de hoofdorganisatie-eenheid, dus we kunnen een lijst van alle semesters ophalen met behulp van de API voor organisatiestructuur om een lijst met onderliggende gegevens van de hoofdorganisatie op te vragen en de resultaten te beperken tot semesterobjecten door hun ouTypeId op te geven. In dit voorbeeld hebben semesters een ouTypeId van 5 en heeft de hoofdorganisatie een orgUnitId van 6606.
GET /d2l/api/lp/1.0/orgstructure/6606/descendants/?ouTypeId=5Response:200 OK[{"Identifier": "121194","Name": "Herfst 2012 Semester","Code": "Herfst2012","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}{"Identifier": "122037","Name": "Winter 2013 Semester","Code": "Winter2013","Type": {"Id": 5,"Code": "Semester","Name": "Semester"}}}]
Net als semesters zijn afdelingen ook de directe kinderen van de hoofdorganisatie. We kunnen dus een lijst met afdelingen krijgen door de kinderen van de hoofdorganisatie op te halen en de resultaten te beperken door de ouTypeId van afdelingen op te geven. In dit voorbeeld is de outTypeId voor afdelingen 203.
GET /d2l/api/lp/1.0/orgstructure/6606/children/?ouTypeId=203Response:200 OK[{"Identifier": "121162","Name": "Actuariële Wetenschappen","Code": "ACTSC","Type": {"id": 203,"Code": "Afdeling","Name": "Afdeling"}},{"Identifier": "121139","Name": "Filosofie","Code": "PHIL","Type": {"id": 203,"Code": "Afdeling","Name": "Afdeling"}},{"Identifier": "121140","name": "Digital Arts Communication","Code": "DAC","Type": {"id": 203,"Code": "Afdeling","Name": "Afdeling"}}]
Intuïtief kunnen we de cursussjablonen binnen een afdeling ophalen door de onderliggende modellen op te sommen. In dit voorbeeld willen we het cursussjabloon voor de afdeling Actuariële Wetenschappen bekijken die een orgUnitId van 121162 heeft.
GET /d2l/api/lp/1.0/orgstructure/121162/children/Response:200 OK[{"identifier": "121195","Name": " 2e jaars actuariële wetenschappen cursussen","Code": "ACTSC_COURSE_TEMPLATE","Type": {"id": 2,"Code": "Cursussjabloon","Name": "Cursussjabloon"}}]
Net als bij het ophalen van een lijst met cursussjablonen binnen een afdeling, kunnen we een API-aanroep maken om de lijst met cursussen binnen elk afzonderlijk sjabloon te krijgen. In dit voorbeeld haalt onze query de lijst met 2e jaars Actuariële Wetenschappen op.
GET /d2l/api/lp/1.0/orgstructure/121195/children/response:200 OK[{"identifier": "121196","name": "Wiskunde van investeringen","Code": "ACTSC221","Type": {"id": 3,"Code": "Cursusaanbod","name": "Cursusaanbod"}},{"identifier": "121197","name": "Wiskunde van financiën","Code": "ACTSC231","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}},{"Identifier": "121198","name": "Inleiding tot actuariële wiskunde","Code": "ACTSC232","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}}]
We kunnen ook de cursussen ophalen die in alle sjablonen binnen een afdeling staan door alle afstammelingen (kinderen en hun kinderen) op te sommen en vervolgens de resultaten te beperken door de ouTypeId voor een cursusobject op te geven. In dit voorbeeld haalt onze query elke cursus in de afdeling Actuariële Wetenschappen op door de ouTypeId van 3 op te geven.
GET /d2l/api/lp/1.0/orgstructure/121162/descendants/?ouTypeId=3Response:200 OK[{"Identifier": "121196","Name": "Wiskunde van investeringen","Code": "ACTSC221","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}},{"Identifier": "121199","Name": "Life Contingencies 1","Code": "ACTSC331","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}},{"identifier": "121204","Name": "Beheer van activa-passiva","Code": "ACTSC445","Type": {"id": 3, "Code": "Cursusaanbod","Name": "Cursusaanbod"}}]
Uit het diagram zien we dat de kinderen van een semester het cursusaanbod zijn dat tijdens dat semester wordt vermeld. Om een lijst van alle cursussen binnen een semester op te halen, gebruiken we de API om de onderliggende cursussen weer te geven onder de orgUnitId van het semester. In dit voorbeeld halen we de kinderen van het najaarssemester van 2013 op, die een OrgUnitId van 121194 heeft.
GET /d2l/api/lp/1.0/orgstructure/121194/children/Response:200 OK[{"identifier": "121198","name": "Inleiding tot actuariële wiskunde","Code": "ACTSC232","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}},{"Identifier": "121702","name": "Algebra voor Hons Mathematics","Code": "MATH135","Type": {"id": 3,"Code": "Cursusaanbod","Name": "Cursusaanbod"}},{"Identifier": "121243","Name": "Inleiding tot de structuur en functie van de plant","Code": "BIOL120","Type": {"id": 3,"Code": "Cursusaanbod","name": "Cursusaanbod"}}]
Aan de andere kant, als we willen weten wanneer een bepaalde cursus wordt aangeboden, kunnen we een API-aanroep doen om de lijst met alle cursusaanbiedingen op te halen. In dit voorbeeld geven we de orgUnitId 121198 van de cursus en de ouTypeId voor semester op.
GET /d2l/api/lp/1.0/orgstructure/121198/parents/?outypeid=5Response:200 OK[{"identifier": "121194","name": "Herfst 2012 semester","Code": "Herfst2012","Type": {"id": 5,"Code": "semester","name": "semester"}},{"identifier": "122037","name": "Winter 2013 semester","Code": "Winter2013","type": {"id": 5,"Code": "semester","name": "semester"}}]
Uit dit voorbeeld kunnen we zien dat de cursus zowel in het najaar van 2012 als in het wintersemester van 2013 wordt aangeboden.
Zoals we hebben gezien, zijn er een aantal benaderingen voor het zoeken naar cursussen met behulp van de API's.