En esta receta de libro de recetas de API, revisaremos las API específicas que usa la muestra para recuperar cursos, departamentos y semestres.
Antes de echar un vistazo a las API, revisemos la jerarquía típica de los tipos OrgUnit predeterminados:
En el diagrama, vemos que los semestres son los hijos directos de la unidad de organización raíz, por lo que podemos recuperar una lista de todos los semestres utilizando el método API de Estructura Organizacional para solicitar una lista de elementos secundarios de la organización raíz y limitar los resultados a objetos semestrales especificando su ouTypeId. En este ejemplo, los semestres tienen un ouTypeId de 5 y la organización raíz tiene un orgUnitId de 6606.
GET /d2l/api/lp/1.0/orgstructure/6606/descendants/?ouTypeId=5Response:200 OK[{"Identificador": "121194","Nombre": "Semestre de otoño de 2012","Código": "Otoño2012","Tipo": {"Id": 5,"Código": "Semestre","Nombre": "Semestre"}{"Identificador": "122037","Nombre": "Semestre de invierno de 2013","Código": "Invierno2013","Tipo": {"Id": 5,"Código": "Semestre","Nombre": "Semestre"}}}]
Al igual que los semestres, los departamentos también son los hijos directos de la organización raíz. Por lo tanto, podemos obtener una lista de departamentos recuperando los elementos secundarios de la organización raíz y limitando los resultados especificando el ouTypeId de los departamentos. En este ejemplo, el valor de outTypeId para los departamentos es 203.
GET /d2l/api/lp/1.0/orgstructure/6606/children/?ouTypeId=203Response:200 OK[{"Identificador": "121162","Nombre": "Ciencia actuarial","Código": "ACTSC","Tipo": {"Id": 203,"Código": "Departamento","Nombre": "Departamento"}},{"Identificador": "121139","Nombre": "Filosofía","Código": "PHIL","Tipo": {"Id": 203,"Código": "Departamento","Nombre": "Departamento"}},{"Identificador": "121140","Nombre": "Comunicación de Artes Digitales","Código": "DAC","Tipo": {"Id": 203,"Código": "Departamento","Nombre": "Departamento"}}]
Intuitivamente, podemos recuperar las plantillas de cursos dentro de un departamento enumerando sus hijos. En este ejemplo, nos gustaría ver la plantilla de curso para el departamento de Ciencias Actuariales que tiene un orgUnitId de 121162.
GET /d2l/api/lp/1.0/orgstructure/121162/children/Response:200 OK[{"Identificador": "121195","Nombre": "Cursos de Ciencias Actuariales de 2º año","Código": "ACTSC_COURSE_TEMPLATE","Tipo": {"Id": 2,"Código": "Plantilla de curso","Nombre": "Plantilla de curso"}}]
De manera similar a recuperar una lista de plantillas de cursos dentro de un departamento, podemos hacer una llamada a la API para obtener la lista de cursos dentro de cada plantilla individual. En este ejemplo, nuestra consulta obtiene la lista de cursos de Ciencias Actuariales de 2º año.
GET /d2l/api/lp/1.0/orgstructure/121195/children/Response:200 OK[{"Identificador": "121196","Nombre": "Matemáticas de la Inversión","Código": "ACTSC221","Tipo": {"Id": 3,"Código": "Oferta de curso","Nombre": "Oferta de curso"}},{"Identificador": "121197","Nombre": "Matemáticas de Finanzas","Código": "ACTSC231","Tipo": {"Id": 3,"Código": "Oferta de Curso","Nombre": "Oferta de Curso"}},{"Identificador": "121198","Nombre": "Introducción a las Matemáticas Actuariales","Código": "ACTSC232","Tipo": {"Id": 3,"Código": "Oferta de curso","Nombre": "Oferta de curso"}}]
También podemos obtener los cursos enumerados en todas las plantillas de un departamento enumerando todos sus descendientes (hijos y sus hijos) y, a continuación, limitar los resultados especificando ouTypeId para un objeto de curso. En este ejemplo, nuestra consulta recuperará todos los cursos del departamento de Ciencias Actuariales especificando el ouTypeId de 3.
GET /d2l/api/lp/1.0/orgstructure/121162/descendants/?ouTypeId=3Response:200 OK[{"Identificador": "121196","Nombre": "Matemáticas de la Inversión","Código": "ACTSC221","Tipo": {"Id": 3,"Código": "Oferta de Curso","Nombre": "Oferta de Curso"}},{"Identificador": "121199","Nombre": "Contingencias de Vida 1","Código": "ACTSC331","Tipo": {"Id": 3,"Código": "Oferta de Curso","Nombre": "Oferta de Curso"}},{"Identificador": "121204","Nombre": "Gestión de Activos-Pasivos","Código": "ACTSC445","Tipo": {"Id": 3, "Código": "Oferta de cursos","Nombre": "Oferta de cursos"}}]
En el diagrama, vemos que los niños de un semestre son las ofertas de cursos enumeradas durante ese semestre. Para obtener una lista de todos los cursos dentro de un semestre, usamos la API para enumerar los niños bajo el orgUnitId del semestre. En este ejemplo, recuperaremos los elementos secundarios del semestre de otoño de 2013, que tiene un OrgUnitId de 121194.
GET /d2l/api/lp/1.0/orgstructure/121194/children/Response:200 OK[{"Identificador": "121198","Nombre": "Introducción a las Matemáticas Actuariales","Código": "ACTSC232","Tipo": {"Id": 3,"Código": "Oferta de curso","Nombre": "Oferta de curso"}},{"Identificador": "121702","Nombre": "Álgebra para Matemáticas Honorables","Código": "MATH135","Tipo": {"Id": 3,"Código": "Oferta de curso","Nombre": "Oferta de curso"}},{"Identificador": "121243","Nombre": "Introducción a la estructura y función de la planta","Código": "BIOL120","Tipo": {"Id": 3,"Código": "Oferta de curso","Nombre": "Oferta de curso"}}]
Por otro lado, si queremos saber cuándo se ofrece un curso en particular, podemos hacer una llamada a la API para obtener la lista de todas las ofertas de cursos. En este ejemplo, especificamos el 121198 orgUnitId del curso y el ouTypeId para el semestre.
GET /d2l/api/lp/1.0/orgstructure/121198/parents/?outypeid=5Response:200 OK[{"Identificador": "121194","Nombre": "Semestre de otoño de 2012","Código": "Otoño2012","Tipo": {"id": 5,"Código": "Semestre","Nombre": "Semestre"}},{"Identificador": "122037","Nombre": "Semestre de invierno de 2013","Código": "Invierno2013","Tipo": {"Id": 5,"Código": "Semestre","Nombre": "Semestre"}}]
A partir de este ejemplo, podemos ver que el curso se ofrece tanto en el semestre de otoño de 2012 como en el semestre de invierno de 2013.
Como hemos visto, hay una serie de enfoques para buscar cursos utilizando las API.