Sommaire | ||
---|---|---|
|
Introduction
Dans le cadre du projet Service d’accès aux données de la Vitrine-Recherche (SADVR, 2015-2016), une API REST a été développée par l’équipe du Centre d’expertise numérique pour la recherche (CEN-R) afin de redistribuer les données contenues dans le dépôt Vitrine-Recherche.
...
Remarque |
---|
Nous supposons que l'utilisation du JavaScript inclut toujours celle de la bibliothèque jQuery; cette dernière facilitant les appels AJAX nécessaires à l'utilisation des API REST. |
Requêtes et réponses
Le HTTP sépare les envois Web en deux types : les requêtes et les réponses. Le poste client fait une requête HTTP à un serveur, qui lui renvoie une réponse.
Requêtes (routes)
Voici les trois éléments de la requête utilisés dans le cadre du projet SADVR :
...
Remarque |
---|
Le /umontreal/ est inclus dans l'URI afin de permettre une utilisation éventuelle de l'API pour d'autres universités (Laval, Sherbrooke, etc.). |
Réponses
Les réponses contiennent principalement deux éléments :
...
Dans le cas d'une réponse 400 ou 500, le contenu sera le message d'erreur envoyé en JSON.
Identifiant pérenne (idsadvr)
Dans le cadre du projet SADVR, il était impératif de disposer d'un identifiant unique et pérenne représentant les principales entités du dépôt Vitrine-Recherche. L'objectif visé par la mise en place d'un tel identifiant est de pouvoir y référer, sans équivoque, de façon neutre et uniforme.
...
À noter que le matricule attribué aux individus, dans les systèmes de l'Université de Montréal, a été écarté dans la mesure où il s'agit d'une donnée sensible ne pouvant être exposée publiquement, sans contrôle d'accès.
Changements par rapport aux versions antérieures
Pour obtenir la liste de principaux changements effectuées d'une version à l'autre de l'API, voir la page de recension des changements : API REST - Changements par rapport aux versions antérieures.
Service d'exposition des ressources
Le Service des ressources permet d’exposer l’ensemble des valeurs possibles pour 6 des 7 paramètres proposés par le Service de recherche d’identifiant pérenne.
Service | Requête : URI | Requête : paramètres | Réponse : champs pour chaque élément |
---|---|---|---|
Code SAD de toutes les facultés | ressource/faculte | uniterech : identifiant de l'unité de recherche (optionnel, multiple) | codeSad, nom |
Code SAD de tous les départements | ressource/departement | uniterech : identifiant de l'unité de recherche (optionnel, multiple) | codeSad, nom |
Code SAD de tous les titres de fonction | ressource/fonction | --- | codeSad, nomM, nomF |
Numéro SAD de tous les programmes | ressource/programme | --- | noSad, nom |
Identifiant de tous les domaines d'études | ressource/domaineetude | --- | id, nom |
Nom de tous les champs d'expertise de recherche | ressource/expertiserech |
au moins l'un de ces deux paramètres est requis.
|
(ci-dessous mots-clés seulement)
|
Code et nom des langues parlées et écrites | ressource/langue | --- |
|
Disciplines | ressource/discipline | --- | |
Nom des établissements affiliés à l'UdeM | ressource/ettbaffilie | --- | |
Nom des secteurs de recherche | ressource/secteur_recherche | --- |
Remarque |
---|
Règles d'affaire de l'exposition de l'expertise de rechercheIl n'est pas possible d'obtenir l'exposition globale de l'expertise, pour toutes les facultés et tous les départements confondus. Il faut préciser une (et une seule) faculté ou un ou des départements. On peut préciser une faculté ET un département, mais le département doit faire partie de la faculté indiquée. Dans ce cas, le fait d'inclure la faculté est inutile car le service retourne alors les mots-clés associés au département (et non tous les mots-clés utilisés par l'ensemble des départements de la faculté). Le service permet l'exposition de l'expertise conjointe de plusieurs départements. Toutefois, ceux-ci doivent tous faire partie de la même faculté. |
Exemples de routes
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/faculte
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/departement
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/fonction
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/programme
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/domaineetude
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/expertiserech?departement=0337
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/langue
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/discipline
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/ettbaffilie
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.7/umontreal/ressource/secteur_recherche
Réponses
Faculté, bonne requête
Réponse avec bonne requête (200 : OK) pour ressource/faculte
. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{"data": [ { "codeSad": "01", "nom": "Aménagement" }, { "codeSad": "03", "nom": "Arts et sciences" }, { "codeSad": "08", "nom": "Diététique et nutrition" }, [...] { "codeSad": "48", "nom": "Théologie et sc. des religions" }, { "codeSad": "99", "nom": "Université de Montréal" } ]} |
Domaine d'étude, bonne requête
Réponse avec bonne requête (200 : OK) pour ressource/domaineetude
. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{"data": [ { "id": "1", "nom": "Aménagement" }, { "id": "2", "nom": "Arts et musique" }, { "id": "3", "nom": "Communication" }, { "id": "4", "nom": "Droit" }, { "id": "5", "nom": "Économie et politique" }, { "id": "6", "nom": "Enseignement et sciences de l'éducation" }, { "id": "19", "nom": "Environnement et développement durable" }, [...] { "id": "13", "nom": "Technologies de l'information (TIC)" }, { "id": "14", "nom": "Théologie et sciences des religions" } ]} |
Expertise de recherche, bonne requête
Réponse avec bonne requête (200 : OK) pour ressource/expertiserech?departement=0337
. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{"data": [ { "nom": "14e siècle", "volet": "Période chronologique", "nbIndividus": 0, "nomTraduction": [ { "codeLangue": "eng", "nom": "14th century" } ] }, ... { "nom": "Afghanistan", "volet": "Pays", "nbIndividus": 0, "nomTraduction": [ { "codeLangue": "eng", "nom": "Afghanistan" } ] }, ... { "nom": "Afrique", "nomTraduction": [ { "nom": "Africa", "codeLangue": "eng" } ], "nbIndividus": 0, "volet": "Continent" }, ... { "nom": "Afrique du Nord", "nomTraduction": [ { "nom": "North Africa", "codeLangue": "eng" } ], "nbIndividus": 0, "volet": "Sous-région" }, ... { "nom": "Architecture", "volet": "Mot-clé", "nomTraduction": [ { "codeLangue": "eng", "nom": "Architecture" } ], "departement": [ { "departementCodeSad": "0337", "departementNom": "Département d'histoire", "nbIndividus": 1 }, { "departementCodeSad": "0104", "departementNom": "École d'architecture", "nbIndividus": 16 }, { "departementCodeSad": "0108", "departementNom": "École d'urbanisme et d'architecture de paysage ", "nbIndividus": 2 } ], "faculte": [ { "faculteCodeSad": "03", "faculteNom": "Faculté des arts et des sciences", "nbIndividus": 1 }, { "faculteCodeSad": "01", "faculteNom": "Faculté de l'aménagement", "nbIndividus": 18 } ] }, ... ]} |
Ancre | ||||
---|---|---|---|---|
|
Service | Requête : URI | Requête : paramètres | Réponse : champs pour chaque élément |
---|---|---|---|
Identifiants pérennes de tous les individus | /id/individu |
|
|
Identifiants pérennes des unités de recherche | /id/uniterech |
|
|
Exemples de routes
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/uniterech
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu?uniterech=ur13605
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu?faculte=23
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu?departement=0328
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu?fonction=01001
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/uniterech?faculte=23
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/uniterech?departement=0328
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/id/individu?uniterech=ur13605&fonction[0]=42001&fonction[1]=42006
Réponses
Individu, bonne requête
Réponse avec bonne requête (200 : OK) pour id/individu
. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{"data": [ { "idsadvr": "in13692", "prenom": "Sylvie C.", "nom": "Cartier", "fonction": "Professeure titulaire", "uniteAdmin": "Faculté des sciences de l'éducation - Département de psychopédagogie et d'andragogie", "courriel": "sylvie.cartier@umontreal.ca", "etablissementsAffilies": [], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/personne:13692.photoOfficiellePetite" }, { "idsadvr": "in13749", "prenom": "Mohamed", "nom": "Hrimech", "fonction": "Professeur agrégé", "uniteAdmin": "Faculté des sciences de l'éducation - Département de psychopédagogie et d'andragogie", "courriel": "mohamed.hrimech@umontreal.ca", "etablissementsAffilies": [], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/personne:13749.photoOfficiellePetite" } ]} |
Unité de recherche, bonne requête
Réponse avec bonne requête (200 : OK) pour id/uniterech
. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{"data": [ { "idsadvr": "ur13608", "nom": "Groupe de recherche en épidémiologie des zoonoses et santé publique", "acronyme": "GREZOSP", "responsables": [{ "idsadvr": "in14753", "prenom": "Jean-Pierre", "nom": "Vaillancourt", "fonction": "Professeur titulaire", "uniteAdmin": "Faculté de médecine vétérinaire - Départment des sciences cliniques", "courriel": "jean-pierre.vaillancourt@umontreal.ca" }], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/uniterech:13608.photoOfficiellePetite" }, ... { "idsadvr": "ur13621", "nom": "Centre de recherche interdisciplinaire en réadaptation du Montréal métropolitain", "acronyme": "CRIR", "responsables": [ { "idsadvr": "in14505", "prenom": "Bonnie", "nom": "Swaine", "fonction": "Professeure titulaire", "fonctionCodeSAD": "42001", "uniteAdmin": "Faculté de médecine - École de réadaptation", "courriel": "bonnie.swaine@umontreal.ca" }, { "idsadvr": null, "prenom": "Eva", "nom": "Kehayia", "fonction": null, "fonctionCodeSAD": null, "uniteAdmin": null, "courriel": null } ], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/uniterech:13621.photoOfficiellePetite" }, ]} |
Mauvaise requête (400 : Bad request)
Réponse avec mauvaise requête (400 : Bad request). Les erreurs sont contenues dans l'élément errors, selon le paramètre problématique
Bloc de code | ||
---|---|---|
| ||
{ errors: { uniterech: [ "Le paramètre uniterech doit être un entier ou un tableau d'entiers." ] } } |
Erreur serveur interne (500 : Internal server error)
Réponse avec erreur du côté serveur (500 : Internal server error). Le message d'erreur sera dans l'élément errors.
Bloc de code | ||
---|---|---|
| ||
{ errors: "SQLSTATE[42000] [1044] Access denied for user 'usager'@'1.1.1.1/255.255.255.255' to database 'database'" } |
Ancre | ||||
---|---|---|---|---|
|
Service | Requête : URI | Requête : paramètres | Réponse |
---|---|---|---|
Identifiants pérennes de tous les individus | /idext/individu |
|
(ci-dessus, premier niveau seulement; voir exemple de réponse pour détails) |
Exemples de routes
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu?uniterech=ur13605
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu?faculte=23
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu?departement=0328
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu?fonction=01001
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/uniterech?faculte=23
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/uniterech?departement=0328
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/idext/individu?uniterech=ur13605&fonction[0]=42001&fonction[1]=42006
Réponses
Individu, bonne requête
Réponse avec bonne requête (200 : OK) pour id/individu
. Les informations sont contenus dans l'élément data.
...
Bloc de code | ||
---|---|---|
| ||
{ "data": [ { "idsadvr": "in12345", "prenom": "Claude", "nom": "Toupin", "affiliations": [12345 { "fonction": { "codeSad": "42001", "nom": "Professeur titulaire" }, "uniteAdministrative": { "codeSad": "N202A0", "nom": "Faculté des arts et des sciences - Département d'histoire" }, "departement": { "codeSad": "0337", "nom": "Département d'histoire" }, "faculte": { "codeSad": "03", "nom": "Faculté des arts et des sciences" }, "courrielInstitutionnel": "claude.toupin@umontreal.ca", "telephone": { "numero": "5143436111", "poste": "6543" }, "immeuble": "Pavillon Lionel-Groulx", "local": "C6534-1", "exclusion": "0", "exclusionTel": "0" } ], "etablissementsAffilies": [], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/personne:12345.photoOfficiellePetite", "courriels": [], "telephones": [ { "numero": "5143436543", "poste": null, "categorie": "Travail 1" }, { "numero": "5143431234", "poste": null, "categorie": "Télécopieur" } ], "expertise": { "secteursRecherche": [ { "codeLangue": "fre", "nom": "Sciences sociales et humaines", "ordre": "1" }, { "codeLangue": "eng", "nom": "Social Sciences and Humanities", "ordre": "1" } ], "disciplines": [ { "codeLangue": "fre", "nom": "Archéologie", "ordre": "1" }, ... { "codeLangue": "eng", "nom": "Archaeology", "ordre": "1" }, ... ], "motsCles": [ ... { "nom": "Urbanisme", "ordre": "6", "codeLangue": "fre", "departement": "École d'urbanisme", "departementCodeSAD": "0107", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "City planning", "ordre": "6", "codeLangue": "eng", "departement": "École d'urbanisme", "departementCodeSAD": "0107", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Grèce ancienne", "ordre": "5", "codeLangue": "fre", "departement": "Département d'histoire", "departementCodeSAD": "0337", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Ancient Greece", "ordre": "5", "codeLangue": "eng", "departement": "Département d'histoire", "departementCodeSAD": "0337", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, ... ], "pays": [], "continents": [], "periodesChronologiques": [ { "ordre": "7", "codeLangue": "fre", "nom": "Antiquité" }, { "ordre": "7", "codeLangue": "eng", "nom": "Antiquity" } ], "phraseCle": [ { "codeLangue": "fre", "contenu": "Archéologie et histoire grecque" } ] }, "urlVitrine": [ { "nom": "Vitrine de la recherche", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/informations/chercheur/1234/" }, { "nom": "Répertoire des experts à l’intention des médias", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/repertoire-des-experts-a-lintention-des-medias/informations/chercheur/1234/" } ], "recrutementRecherche": false }, { "idsadvr": "in14321", "prenom": "Paul", "nom": "Hurtubise", "affiliations": [ { "fonction": { "codeSad": "42001", "nom": "Professeur titulaire" }, "uniteAdministrative": { "codeSad": "N202A0", "nom": "Faculté des arts et des sciences - Département d'histoire" }, "departement": { "codeSad": "0337", "nom": "Département d'histoire" }, "faculte": { "codeSad": "03", "nom": "Faculté des arts et des sciences" }, "courrielInstitutionnel": "paul.hurtubise@umontreal.ca", "telephone": { "numero": "5143436111", "poste": "7654" }, "immeuble": "3744, rue Jean-Brillant", "local": "333-22", "exclusion": "0", "exclusionTel": "0" } ], "etablissementsAffilies": [], "visuelOfficiel": null, "courriels": [], "telephones": [], "expertise": { "secteursRecherche": [ { "codeLangue": "fre", "nom": "Sciences sociales et humaines", "ordre": "0" }, { "codeLangue": "eng", "nom": "Social Sciences and Humanities", "ordre": "0" } ], "disciplines": [ { "codeLangue": "fre", "nom": "Histoire", "ordre": "0" }, { "codeLangue": "eng", "nom": "History", "ordre": "0" } ], "motsCles": [ { "nom": "Jardins", "ordre": "3", "codeLangue": "fre", "departement": "École d'architecture de paysage", "departementCodeSAD": "0105", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Gardens", "ordre": "3", "codeLangue": "eng", "departement": "École d'architecture de paysage", "departementCodeSAD": "0105", "faculte": null, "faculteCodeSAD": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, ... ], "pays": [], "continents": [], "periodesChronologiques": [], "phraseCle": [ { "codeLangue": "fre", "contenu": "Histoire de la Grèce antique" } ] }, "urlVitrine": [ { "nom": "Vitrine de la recherche", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/informations/chercheur/11111/" }, { "nom": "Répertoire des experts à l’intention des médias", "url": null } ], "recrutementRecherche": false }, |
Service de récupération de données par le biais d’un identifiant pérenne (idsadvr)
Service | Requête : URI | Requête : paramètres | Réponse |
---|---|---|---|
Informations sur un individu | /info/individu | idsadvr : IDSADVR (obligatoire, multiple) | (voir exemple de réponse pour détails) |
Informations sur une unité de recherche | /info/uniterech | idsadvr : IDSADVR (obligatoire, multiple ) | (voir exemple de réponse pour détails) |
Exemples de routes
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/info/individu?idsadvr=in15669
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/info/individu?idsadvr=in13593
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/info/uniterech?idsadvr[0]=ur13603&idsadvr[1]=ur13639&idsadvr[2]=ur13819&idsadvr[3]=ur13900&idsadvr[4]=ur13954
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/info/uniterech?idsadvr=ur13852
- https://www.recherche.umontreal.ca/vitrine/rest/api/1.6/umontreal/info/uniterech?idsadvr=ur13924
Réponses
Individu, bonne requête
Réponse avec bonne requête (200 : OK) pour info/individu. Les informations sont contenus dans l'élément data.
Bloc de code | ||
---|---|---|
| ||
{ "data": [ { "idsadvr": "in12345", "prenom": "Claude", "nom": "Toupin", "sexe": "M", "institution": "Université de Montréal", "paysCode": "CA", "paysNom": "Canada", "consentement": { "departements": [], "facultes": [], "unitesRecherche": [], "UdeM": [ { "nom": "Vitrine de la recherche", "statutConsentement": "1" }, { "nom": "Répertoire des experts à l’intention des médias", "statutConsentement": "1" } ] }, "affichageWeb": [ { "departements": [], "facultes": [], "unitesRecherche": [], "UdeM": [ { "nom": "Vitrine de la recherche", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/informations/chercheur/12345/" }, { "nom": "Répertoire des experts à l’intention des médias", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/repertoire-des-experts-a-lintention-des-medias/informations/chercheur/12345/" } ] } ], "langues": [ { "nom": "Anglais", "medium": "Écrit" }, { "nom": "Français", "medium": "Écrit" }, { "nom": "Anglais", "medium": "Oral" }, { "nom": "Français", "medium": "Oral" }, { "nom": "Grec moderne (après 1453)", "medium": "Oral" } ], "courriels": [], "affiliations": [ { "fonction": { "codeSad": "42001", "nom": "Professeur titulaire" }, "uniteAdministrative": { "codeSad": "N202A0", "nom": "Faculté des arts et des sciences - Département d'histoire" }, "departement": { "codeSad": "0337", "nom": "Département d'histoire" }, "faculte": { "codeSad": "03", "nom": "Faculté des arts et des sciences" }, "courrielInstitutionnel": "claude.toupin@umontreal.ca", "telephone": { "numero": "5143436111", "poste": "5432" }, "immeuble": "Pavillon Lionel-Groulx", "local": "C6543-1", "exclusion": 0, "exclusionTel": 0 } ], "presenceWeb": [ { "categorie": "Page professionnelle (faculté,département,école)", "url": "http://histoire.umontreal.ca/repertoire-departement/toupin-claude/" }, { "categorie": "Site web de l’unité de recherche", "url": "http://abcd.umontreal.ca/" } ], "telephones": [ { "numero": "5143436111", "poste": "4321", "categorie": "Travail 1" }, { "numero": "5143431234", "poste": "", "categorie": "Télécopieur" } ], "etablissementsAffilies": [], "formations": [], "biographie": [ { "codeLangue": "fre", "contenu": "<p>Contenu de la biographie.</p>" } ], "recrutementRecherche": [], "activiteEnseignement": [ { "domainesEtude": [ { "id": "9", "codeLangue": "fre", "nom": "Sciences humaines" }, { "id": "9", "codeLangue": "eng", "nom": "Humanities" } ], "groupesProgramme": [ { "id": "148", "codeLangue": "fre", "nom": "Histoire" }, { "id": "57", "codeLangue": "fre", "nom": "Histoire et Études classiques" }, { "id": "148", "codeLangue": "eng", "nom": "History" }, { "id": "57", "codeLangue": "eng", "nom": "History and Classical Studies" } ], "programmes": [ { "noSad": "116510", "cycle": "1", "faculteNom": "Faculté des arts et des sciences", "faculteCodeSad": "03", "departementNom": "Département d'histoire", "departementCodeSad": "0337", "noms": [ { "codeLangue": "fre", "nom": "Baccalauréat en histoire" } ], "groupesProgramme": [ { "id": "148", "codeLangue": "eng", "nom": "History" }, { "id": "148", "codeLangue": "fre", "nom": "Histoire" } ], "domainesEtude": [ { "id": "9", "codeLangue": "eng", "nom": "Humanities" }, { "id": "9", "codeLangue": "fre", "nom": "Sciences humaines" } ] } ], "cours": [ { "noSad": "HGL1011", "trimestreCode": "H18", "annee": "18", "nom": "Initiation à l'archéologie grécoromaine", "cycle": "1", "sourceDonnees": "SAD", "faculteCodeSad": "03", "faculteNom": "Faculté des arts et des sciences", "programmes": [ { "noSad": "109510", "noms": [ { "codeLangue": "fre", "nom": "Baccalauréat en études classiques" } ] }, ... ] } ] } ] } ], "unitesRecherche": [], "projetsRecherche": [ { "categorie": "Projet de recherche au Canada", "nom": "Un projet de recherche", "dateDebut": "2015", "dateFin": "2019", "exclusion": "0", "selection": "0", "contenu": [], "pays": [], "continents": [], "periodesChronologiques": [], "financement": [ { "organisme": "CRSH/Conseil de recherches en sciences humaines du Canada", "programme": "Programme de subvention", "dateDebut": "2016-04-01", "dateFin": "2019-03-31" } ], "equipe": [ { "chercheurPrincipal": [ { "idsadvr": "in12345", "prenom": "Claude", "nom": "Toupin" } ], "coChercheur": [] } ] } ], "activitesRecherche": [ { "categorie": "Thèses et mémoires dirigés", "typeTransfert": null, "nom": "Titre d'une thèse", "dateDebut": "2016", "dateFin": "2016", "sourceFinancement": null, "exclusion": "0", "selection": "0", "sourceDonnees": "Papyrus", "contenu": [ { "codeLangue": "eng", "contenu": "<strong>Graduate :</strong> Tremblay, Sébastien<br/><strong>Cycle :</strong> Master's<br/><strong>Grade :</strong> M.A." }, { "codeLangue": "fre", "contenu": "<strong>Diplômé(e) :</strong> Tremblay, Sébastien<br/><strong>Cycle :</strong> Maîtrise <br/><strong>Diplôme obtenu :</strong> M.A." } ], "partenaires": [], "infosSupplementaires": [ { "categorie": null, "nom": "Lien vers le document dans Papyrus", "description": null, "adresse": "http://hdl.handle.net/1866/123456", "datePublication": null, "exclusion": "0", "selection": "0" } ] }, ... { "categorie": "Méthodes et formules pédagogiques", "typeTransfert": null, "nom": "Méthodes et formules pédagogiques", "dateDebut": null, "dateFin": null, "sourceFinancement": null, "exclusion": "0", "selection": "0", "sourceDonnees": null, "contenu": [ { "codeLangue": "fre", "contenu": "<p>Un exemple de contenu d'activité avec un <a href=\"http://www.umontreal.ca/" target=\"_blank\">lien</a></p>" } ], "partenaires": [], "infosSupplementaires": [] }, ... ], "publication": null, "communication": null, "expertise": [ { "secteursRecherche": [ { "codeLangue": "eng", "nom": "Social Sciences and Humanities", "ordre": 1 }, { "codeLangue": "fre", "nom": "Sciences sociales et humaines", "ordre": 1 }, { "codeLangue": "eng", "nom": "Environmental Planning and Design", "ordre": 2 }, { "codeLangue": "fre", "nom": "Aménagement", "ordre": 2 }, { "codeLangue": "eng", "nom": "Literature and Languages", "ordre": 3 }, { "codeLangue": "fre", "nom": "Lettres et langues", "ordre": 3 } ], "disciplines": [ { "codeLangue": "eng", "nom": "Classical Archaeology", "ordre": 1 }, { "codeLangue": "fre", "nom": "Archéologie classique", "ordre": 1 }, ... ], "motsCles": [ { "ordre": 5, "codeLangue": "eng", "nom": "Ancient Greece", "departement": null, "departementCodeSad": null, "faculte": null, "faculteCodeSad": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "ordre": 5, "codeLangue": "fre", "nom": "Grèce ancienne", "departement": null, "departementCodeSad": null, "faculte": null, "faculteCodeSad": null, "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "ordre": 6, "codeLangue": "fre", "nom": "Urbanisme", "departement": null, "departementCodeSad": null, "faculte": "Faculté de l'aménagement", "faculteCodeSad": "01", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "ordre": 6, "codeLangue": "eng", "nom": "City planning", "departement": null, "departementCodeSad": null, "faculte": "Faculté de l'aménagement", "faculteCodeSad": "01", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, ... ], "pays": [], "continents": [], "periodesChronologiques": [ { "codeLangue": "eng", "nom": "Antiquity", "ordre": 7 }, { "codeLangue": "fre", "nom": "Antiquité", "ordre": 7 } ], "phraseCle": [ { "codeLangue": "fre", "contenu": "Archéologie et histoire grecque" } ], "contenu": [ { "codeLangue": "fre", "contenu": "<p>Description de l'expertise.</p>" } ] } ], "expertiseMedia": [ { "typesMedias": [ { "typeMedia": "Presse écrite (imprimé, numérique)" }, { "typeMedia": "Radio" }, { "typeMedia": "Télévision" } ], "langues": [ { "nom": "Anglais", "medium": "Écrit" }, { "nom": "Français", "medium": "Écrit" }, { "nom": "Anglais", "medium": "Oral" }, { "nom": "Français", "medium": "Oral" }, { "nom": "Grec moderne (après 1453)", "medium": "Oral" } ], "disciplines": [ { "codeLangue": "eng", "nom": "Archaeology", "ordre": 4 }, { "codeLangue": "fre", "nom": "Archéologie", "ordre": 4 }, ... ], "motsCles": [ { "ordre": 1, "codeLangue": "eng", "nom": "Archeological Data Analysis", "departement": null, "departementCodeSad": null, "faculte": "Faculté des arts et des sciences", "faculteCodeSad": "03", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "ordre": 1, "codeLangue": "fre", "nom": "Analyses des données archéologiques", "departement": null, "departementCodeSad": null, "faculte": "Faculté des arts et des sciences", "faculteCodeSad": "03", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, ... ], "contenu": [ { "codeLangue": "fre", "contenu": "<p>Description de l'expertise</p>" } ], "infosSupplementaires": [] } ], "prix": [ { "vitrine": [], "autre": [] } ], "infosSupplementaires": [ { "categorie": null, "nom": "Découverte d'un nouveau site archéologique", "description": "Un nouveau site archéologique mis à l'étude en Syrie.", "adresse": "http://youtube.com/1234567890asdfghjkl", "datePublication": null, "exclusion": "0", "selection": "0", "sourceDonnees": null } ], "visuels": [ { "categorie": "Photo officielle", "nom": null, "droitAuteur": null, "ordre": null, "url": "http://www.recherche.umontreal.ca/visuel/personne:12345.photoOfficielle", "legendes": [] }, { "categorie": "Portrait du chercheur", "nom": "Mission archéologique", "droitAuteur": "© Claude Toupin", "ordre": null, "url": "http://www.recherche.umontreal.ca/visuel/personne:12345.portrait.1.image", "legendes": [ { "codeLangue": "fre", "contenu": "Photo montrant le site étudié" } ] } ], "activitesPromotion": [] } ] } "activitesPromotion": [] }]} |
Ancre | ||||
---|---|---|---|---|
|
Ce service permet d'effectuer des recherches dans le moteur SOLR de la Vitrine-Recherche par le biais de l'API. Les requêtes sont formulées avec l'API selon la syntaxe native de SOLR. Les résultats produits par SOLR sont interceptés par l'API REST qui les reformate selon une structure de données communes à l'API. Plus précisément, la recherche d'individus (professeurs et experts pour les média) produit une liste de format identique au service étendu de recherche d'identifiants pérennes (/idext/individu
) et le repérage des unités de recherche présente les résultats comme le service de recherche d'identifiants pérennes pour les unités de recherche (/id/uniterech
).
Trois « vitrines »
Présentement, le contenu de trois "vitrines" est repérable via l'API. Il s'agit de la "Vitrine des professeurs", la "Vitrine des unités de recherche" et le "Répertoire des experts à l'intention des médias". Plus tard s'ajouteront la "Vitrine des bâtisseurs" et celle des prix. Chaque vitrine fait l'objet d'une route propre en ce qui concerne le service de repérage.
Service | Route |
---|---|
Recherche dans la Vitrine des professeurs | /recherche/professeur/select |
Recherche dans la Vitrine des unités de recherche | /recherche/uniterech/select |
Recherche dans le Répertoire des experts à l'intention des médias | /recherche/expertmedia/select |
Syntaxe de requête de recherche SOLR
Dans le cadre du repérage dans la Vitrine-Recherche via l'API, une requête SOLR comporte habituellement 5 paramètres.
...
Astuce | ||
---|---|---|
| ||
|
Critères et tri
Professeurs
Type | Champ SOLR | Libellé / fonction |
---|---|---|
Critère, par mots | Texte | Pour la recherche simple (tous les champs) |
Critère, par expression exacte | Secteur_fac | Secteur de recherche |
Critère, par expression exacte | Discipline_fac | Discipline |
Critère, par expression exacte | ObjetsRech_fac | Expertise par mot-clé |
Critère, par expression exacte | Faculte_fac | Faculté |
Critère, par expression exacte | UniteRech_fac | Unité de recherche |
Critère, par expression exacte | ChercheurNP_fac | Nom du professeur |
Tri |
| Nom |
Tri | Expertise_tri | Expertise |
Tri | UniteAdmin_tri | Faculté d'attache |
Unités de recherche
Type | Champ SOLR | Libellé / fonction |
---|---|---|
Critère, par mots | Texte | Pour la recherche simple (tous les champs) : n'est pas utilisé actuellement |
Critère, par expression exacte | Secteur_fac | Secteur de recherche |
Critère, par expression exacte |
| Faculté |
Critère, par expression exacte |
| Établissement affilié à l'UdeM |
Critère, par mots |
| Activité de recherche |
Critère, par expression exacte |
| Responsable |
Critère, par expression exacte |
| Catégorie d'unité de recherche |
Critère, par expression exacte | UniteRech_fac | Nom de l'unité de recherche |
Tri |
| Nom |
Tri |
| Responsable |
Tri |
| Secteur de recherche |
Experts
Type | Champ SOLR | Libellé / fonction |
---|---|---|
Critère, par mots | Texte | Pour la recherche simple et option "tous les champs" de la recherche par critère |
Critère, par expression exacte | Discipline_fac | Discipline |
Critère, par expression exacte | ObjetsRech_fac | Expertise par mot-clé |
Critère, par expression exacte |
| Langue (oral) |
Critère, par expression exacte |
| Langue (écrite) |
Critère, par expression exacte |
| Média privilégié |
Critère, par expression exacte | ChercheurNP_fac | Nom de l'expert |
Tri |
| Nom |
Tri | Expertise_tri | Expertise |
Tri | UniteAdmin_tri | Faculté d'attache |
Réponse
La réponse retournée par l'API REST du SADVR contient deux blocs. Le premier contient les informations relatifs à la pagination des résultats (paginationSOLR
) et le second (data
) contient la liste des résultats.
...
L'élément numFound
est le nombre total d'items trouvés. Les éléments start
et rows
retournent les valeurs de ces paramètres initialement soumis à SOLR lors de la requête. Ces informations sont nécessaires pour permettre à l'application de générer les liens permettant d'atteindre d'autres pages de résultats que celle affichée.
Repérage d'individus : professeurs et experts
Le format de la liste des résultats est le même que celui du service de recherche d’identifiant pérenne étendu pour les individus (/idext/individu
).
Bloc de code |
---|
{ "paginationSOLR": { "numFound": 73, "start": 10, "rows": 10 }, "data": [ ... { "idsadvr": "in20664", "prenom": "Christine", "nom": "Gagnon", "affiliations": [ { "fonction": { "codeSad": "42032", "nom": "Professeure associée" }, "uniteAdministrative": { "codeSad": "C000A0", "nom": "Faculté de droit" }, "departement": { "codeSad": null, "nom": null }, "faculte": { "codeSad": "11", "nom": "Faculté de droit" }, "courrielInstitutionnel": "christine.gagnon.3@umontreal.ca", "telephone": { "numero": null, "poste": null }, "immeuble": null, "local": null, "exclusion": "0", "exclusionTel": "0" } ], "etablissementsAffilies": [], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/personne:20664.photoOfficiellePetite", "courriels": [], "telephones": [], "expertise": { "secteursRecherche": [ { "codeLangue": "fre", "nom": "Sciences sociales et humaines", "ordre": "1" }, { "codeLangue": "fre", "nom": "Droit", "ordre": "2" }, { "codeLangue": "eng", "nom": "Social Sciences and Humanities", "ordre": "1" }, { "codeLangue": "eng", "nom": "Law", "ordre": "2" } ], "disciplines": [ { "codeLangue": "fre", "nom": "Droit", "ordre": "1" }, { "codeLangue": "eng", "nom": "Law", "ordre": "1" } ], "motsCles": [ { "nom": "Droit notarial", "ordre": "1", "codeLangue": "fre", "departement": null, "departementCodeSAD": null, "faculte": "Faculté de droit", "faculteCodeSAD": "11", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Notarial law", "ordre": "1", "codeLangue": "eng", "departement": null, "departementCodeSAD": null, "faculte": "Faculté de droit", "faculteCodeSAD": "11", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Immobilier", "ordre": "2", "codeLangue": "fre", "departement": null, "departementCodeSAD": null, "faculte": "Faculté de droit", "faculteCodeSAD": "11", "uniteRecherche": null, "uniteRechercheIdsadvr": null }, { "nom": "Real estate", "ordre": "2", "codeLangue": "eng", "departement": null, "departementCodeSAD": null, "faculte": "Faculté de droit", "faculteCodeSAD": "11", "uniteRecherche": null, "uniteRechercheIdsadvr": null } ], "pays": [], "continents": [], "periodesChronologiques": [], "phraseCle": [ { "codeLangue": "eng", "contenu": "Co-ownership law" }, { "codeLangue": "fre", "contenu": "Droit de la copropriété" } ] }, "urlVitrine": [ { "nom": "Vitrine de la recherche", "url": "http://www.recherche.umontreal.ca/la-recherche-a-ludem/la-vitrine-des-professeurs/informations/chercheur/7085/" }, { "nom": "Répertoire des experts à l’intention des médias", "url": null } ], "recrutementRecherche": false }, ... ] } |
Repérage d'unités de recherche
Dans le cas des unités de recherche, la liste des résultats se présente de façon identique au service de recherche d’identifiant pérenne pour les unités (/id/uniterech
).
...
Bloc de code | ||
---|---|---|
| ||
{ "paginationSOLR": { "numFound": 36, "start": 0, "rows": 20 }, "data": [ { "idsadvr": "ur13611", "nom": "Centre d'études ethniques des universités montréalaises", "acronyme": "CEETUM", "responsables": [ { "idsadvr": "in13629", "prenom": "Deirdre", "nom": "Meintel", "fonction": "Professeure titulaire", "fonctionCodeSAD": "42001", "uniteAdmin": "Faculté des arts et des sciences - Département d'anthropologie", "courriel": "deirdre.meintel@umontreal.ca" } ], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/uniterech:13611.photoOfficiellePetite" }, { "idsadvr": "ur13614", "nom": "Centre de recherche en droit public", "acronyme": "CRDP", "responsables": [ { "idsadvr": "in14999", "prenom": "Vincent", "nom": "Gautrais", "fonction": "Professeur titulaire", "fonctionCodeSAD": "42001", "uniteAdmin": "Faculté de droit", "courriel": "vincent.gautrais@umontreal.ca" } ], "visuelOfficiel": "http://www.recherche.umontreal.ca/visuel/uniterech:13614.photoOfficiellePetite" }, ... ] } |
Exemples de code d'utilisation
Récupération des données d'une route (code PHP)
Voici un exemple de code PHP qui récupère les informations de base de tous les individus de l'unité de recherche n° 89, et qui les affiche à l'écran.
...
Si l'un des membres n'a pas une information (par exemple, il n'est pas affilié à une unité de recherche), l'attribut est affecté à null.
Récupération des données d'une route (code JavaScript/jQuery)
Voici un exemple de code jQuery qui capte chaque entrée des individus dans des variables, ou qui affiche dans la console les erreurs de la requête.
...
Bloc de code | ||
---|---|---|
| ||
var params = { 'uniterech': 1, 'fonction': ['42001', '42007'] }; $.get('/vitrine/rest/api/1.6/id/individu', params) .done( function(data) { data.data.forEach(function(item) { id = item.id; nom = item.nom; prenom = item.prenom; adresseCourriel = item.courriel; titre = item.titreFonction; uniteAdmin = item.uniteAdmin; //Faire des opérations avec les données }); }) .fail( function (xhr, textStatus, error) { var errors = xhr.responseJSON.errors; if ('uniterech' in errors) { console.log('Erreur dans arguments de "uniterech" : ' + errors['uniterech']); } else if ('faculte' in errors) { console.log('Erreur dans arguments de "faculte" : ' + errors['faculte']); } else if ('departement' in errors) { console.log('Erreur dans arguments de "departement" : ' + errors['departement']); } else if ('fonction' in errors) { console.log('Erreur dans arguments de "fonction" : ' + errors['fonction']); } else { console.log('Erreur interne du serveur : '. errors); } }); |
Tests
Pour exécuter les tests inclus dans l'application (et vérifier que tout fonctionne), allez au Terminal, naviguez vers le répertoire racine de l'application et tapez la ligne suivante.
Bloc de code | ||
---|---|---|
| ||
php vendor/bin/codecept run |
Ressources supplémentaires
Lecture du format JSON dans un navigateur
Il existe plusieurs extensions de navigateur Web qui permettent de mettre en forme la réponse JSON lors de l'affichage dans un navigateur. Cela en facilite la consultation. On retient en particulier JSON Lite pour Firefox (https://addons.mozilla.org/fr/firefox/addon/json-lite/), Chrome (https://chrome.google.com/webstore/detail/json-lite/) et Opera (https://addons.opera.com/fr/extensions/details/json-lite/).
Paquets (Packages)
Les paquets installés pour tous les environnements sont :
...