...
| API | variables | URL exemple |
|---|---|---|
| OAuth | url_authn_app_tickets | https://authn-app.univ.pc-scol.fr/cas/v1/tickets |
| IDT | url_api_idt | https://idt.univ.pc-scol.fr/api/idt/v1 |
| INS EXT | url_api_ins_ext | https://ins.univ.pc-scol.fr/api/ins/ext/v1v2 |
| INS | url_api_ins | https://ins.univ.pc-scol.fr/api/ins/v1 |
| PIECE EXT | url_api_piece_ext | https://piece.univ.pc-scol.fr/api/pie/ext/v1/v5/ins |
| CHC | url_api_chc | https://chc.univ.pc-scol.fr/api/chc/v6 |
| COC | url_api_coc | https://coc.univ.pc-scol.fr/api/coc/publication/v1v2 |
| PAI | url_api_pai | https://pai.univ.pc-scol.fr/api/v1 |
Méthodes utilisées
| URL (voir variables ci-dessus) | Module/API | Méthode | Utilisation | ||||||
|---|---|---|---|---|---|---|---|---|---|
url_authn_app_tickets?username=${username}&password=${password}&token=true | serveur OAuth | Récupération du Jeton JWT pour authentification des API | |||||||
| url_api_idt/etablissements/${etab}/identites/apprenants?codeApprenant=${codeApprenant} | IDT | rechercherIdentiteApprenant | Rechercher des identité d'apprenants | ||||||
| url_api_ins_ext/gestion/inscription/${etab}/${codeApprenant} | INS EXT v2 | lireInscriptions | Récupération du dossier de l'apprenant et de ses inscriptions | ||||||
| url_api_ins/gestionetablissement/inscriptions/${etab}/${codeApprenantuuidApprenant}/${codeVoeu}/certificat-de-scolarite | INS | imprimerCertificatDeScolaritegenererCertificatDeScolarite | Récupération Génération du certificat de scolarité | ||||||
| url_api_ | inspiece_ext/ | gestionetablissements/ | inscriptions/${etab}/codeApprenant/${codeApprenant}/codePeriode/${ | codeVoeucodePeriode}/codeChemin/${ | codePiececodeChemin}/ | contenuphoto | INSPIECE EXT | contenuPiecevisualiserPhoto | Récupération de la photo de l'étudiant |
url_api_chc/cursus-dca?codeApprenant={codeApprenant} | CHC | lireCursusApprenantlireCusrsuApprenant | Récupération du cursus | ||||||
| url_api_coc/etablissements/${etab}/periodes/${codePeriode}/apprenants/${codeApprenant}/chemins/${chemin} | COC | listerCursusPubliableApprenant | Récupération des notes et résultats de l'étudiant | ||||||
| url_api_coc/etablissements/${etab}/periodes/${codePeriode}/apprenants/${codeApprenant}/chemins/${chemin}/releves-de-notes | COC | listerReleveDeNotePubliableApprenant | Lister les relevés de notes publiables | ||||||
| url_api_coc/modeles-releves-notes/${idReleve}/apprenants/${codeApprenant}/chemins/${chemin}/releves-de-notes-et-resultats | COC | genererRelevesDeNotesEtResultatsPubliableApprenant | Générer un relevé de note | ||||||
| url_api_pai/pai/attestation-de-paiement/${etab}/${codeApprenant}/${codePeriode} | PAI | imprimerAttestationDePaiement | Récupération de l'attestation de paiement |
Tester une API
Nous allons voir comment tester le bon fonctionnement d'une API en la requêtant "à la main".
...
| Bloc de code |
|---|
POST https://authn-app.[univ].pc-scol.fr/cas/v1/tickets?username=[username]&password=[password]&token=true |
Le username et le password à passer sont ceux permettant d'identifier MDW auprès du serveur OAuth de Pégase.
Ces informations correspondent aux paramètres suivant dans application.properties :
- pegase.accesstoken.url
- pegase.accesstoken.username
- pegase.accesstoken.password
Appel de l'API
| Bloc de code |
|---|
GET https://ins.[univ].pc-scol.fr/api/v5/ins/gestion/inscription/[codeEtablissement]/[codeApprenant]/ |
...
| Info |
|---|
| Via Postman le passage du token se fait facilement depuis l'onglet "Authorization" (Type "OAuth 2.0") |
L'url de l'API et le code établissement correspondent aux paramètres suivant dans application.properties :
- pegase.api.ins.url
- pegase.etablissement
Génération des classes clientes java
...
| Bloc de code | ||
|---|---|---|
| ||
# Se rendre dans le répertoire d'installation cd EC:/node-v14.16.0-win-x64 # Installer openapi-generator-cli npm install @openapitools/openapi-generator-cli npm install @openapitools/openapi-generator-cli -g # Forcer l'utilisation de la version 5.4.0 # /!\ IMPORTANT /!\ A vérifier avant chaque génération sous peine d'obtenir des imports non valides openapi-generator-cli version-manager set 5.4.0 # Aide sur la config npx @openapitools/openapi-generator-cli config-help -g jav |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
# Forcer l'utilisation de la version 5.4.0 # /!\ IMPORTANT /!\ A vérifier avant chaque génération sous peine d'obtenir des imports non valides openapi-generator-cli version-manager set 5.4.0 # IDT npx @openapitools/openapi-generator-cli generate -i idt-api-v1-1.0.0-rc.yaml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.idt.invoker -p apiPackage=fr.univlorraine.pegase.idt.api -p modelPackage=fr.univlorraine.pegase.idt.model -p dateLibrary=java17-localdatetime # INS EXT YAMLEXT npx @openapitools/openapi-generator-cli generate -i inscription-ext-api-v1v2-12.2.0-dev.20250424143719.yaml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.insext.invoker -p apiPackage=fr.univlorraine.pegase.insext.api.insext -p modelPackage=fr.univlorraine.pegase.insext.model.insext -p dateLibrary=java17-localdatetime # INS GESTION YAML npx @openapitools/openapi-generator-cli generate -i ins-gestion-api-v5v1-201.0.0-rc.yaml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.ins.invoker -p apiPackage=fr.univlorraine.pegase.ins.api.insgestion -p modelPackage=fr.univlorraine.pegase.ins.model.insgestion -p dateLibrary=java17-localdatetime # PIECE CHCEXT YAML npx @openapitools/openapi-generator-cli generate -i chcpiece-applicationext-api-v6v1-61.2.0.ymlyaml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.pieceext.invoker -p apiPackage=fr.univlorraine.pegase.pieceext.api.chc -p modelPackage=fr.univlorraine.pegase.pieceext.model.chc -p dateLibrary=java17-localdatetime # PAI npx @openapitools/openapi-generator-cli generate # COC PUBLICATION YAML -i pai-api-v1-27.0.0.yaml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.pai.invoker -p apiPackage=fr.univlorraine.pegase.pai.api -p modelPackage=fr.univlorraine.pegase.pai.model -p dateLibrary=java17-localdatetime # CHC npx @openapitools/openapi-generator-cli generate -i cocchc-publicationapplication-api-v2v6-26.08.0.yml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.chc.invoker -p apiPackage=fr.univlorraine.pegase.chc.api.coc -p modelPackage=fr.univlorraine.pegase.chc.model.coc -p dateLibrary=java17-localdatetime # PAI YAMLCOC npx @openapitools/openapi-generator-cli generate -i paicoc-publication-api-v1v2-212.01.0.yamlyml -g java -o C:/tmp/openapi-generator/ -p invokerPackage=fr.univlorraine.pegase.coc.invoker -p apiPackage=fr.univlorraine.pegase.coc.api.pai -p modelPackage=fr.univlorraine.pegase.coc.model.pai -p dateLibrary=java17-localdatetime |
Récupérer le code généré dans le projet
...
/ src/main/java/fr/univlorraine/pegase/api/src/main/java/fr/univlorraine/pegase/model{NOM_API}
Modification des classes générées
Dans les classes générées il faut remplacer l'annotation :
| Bloc de code |
|---|
@javax.annotation.Generated |
par
| Bloc de code |
|---|
@jakarta.annotation.Generated |
Si des erreurs persistent à la compilation ou dans l'IDE, il Il peut être nécessaire d'apporter des modifications au code généré.
...
Corriger l'assignation aux énumérations dans les constructeurs des classes qui le nécessite. Par exemple, le code :
Bloc de code this.canalCommunication = this.getClass().getSimpleName(); devient : this.canalCommunication = CanalCommunicationEnum.fromValue(this.getClass().getSimpleName());
devientet certaines lignes
Bloc de code this.type = this.getClass().getSimpleName(); deviennent : this.canalCommunicationtype = CanalCommunicationEnumTypeEnum.fromValue(this.getClass().getSimpleName());
- Supprimer l'attribut est1 et la constante SERIALIZED_NAME_EST1 de la classe Periode
Remplacer dans les classes qui le nécessite, le code :
Bloc de code @javax.annotation.Generatedpar
@jakarta.annotation.Generatedfr.univlorraine.pegase.insext.model.PeriodeBloc de code
Implémentation
Pour des exemples d'appels aux APIs effectués grâce aux classes générées ci-dessus, voir le code source du PegaseService sur github : https://github.com/EsupPortail/esup-mdw-pegase/blob/master/src/main/java/fr/univlorraine/mondossierweb/service/PegaseService.java
...