forked from ScoDoc/DocScoDoc
Ajouts détails sur config. d'un utilisateur pour l'API
This commit is contained in:
parent
42f4fe05ff
commit
5b1ad81249
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# API pour ScoDoc 9
|
## API pour ScoDoc 9
|
||||||
L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON.
|
L'API ScoDoc permet à des applications tierces d'interroger ScoDoc. Elle offre un accès aux informations aux formats XML et JSON.
|
||||||
|
|
||||||
La version ScoDoc 9 a introduit une nouvelle API avec un nouveau mécanisme d'authentification.
|
La version ScoDoc 9 a introduit une nouvelle API avec un nouveau mécanisme d'authentification.
|
||||||
@ -24,45 +24,51 @@ Les objets ScoDoc manipulables sont identifiés par des id.
|
|||||||
|
|
||||||
L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/fonction`.
|
L'URL complète est de la forme: `https://scodoc.example.com/ScoDoc/api/fonction`.
|
||||||
|
|
||||||
# Fonctions de l'API ScoDoc 7 portées en ScoDoc 9
|
## Configuration de ScoDoc pour utiliser l'API
|
||||||
|
|
||||||
L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md)
|
Il est nécessaire de disposer d'un compte utilisateur avec les droits adéquats.
|
||||||
|
|
||||||
Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les
|
En général, il est recommandé de créer un rôle, de lui attribuer les permissions
|
||||||
fonctions suivantes sont disponibles avec le mécanisme d'authentification
|
que l'on veut utiliser, puis de créer un utilisateur ayant ce rôle.
|
||||||
basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et
|
|
||||||
disparaitront en juillet 2022.
|
|
||||||
|
|
||||||
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
|
En ligne de commande, cela peut se faire comme suit (voir détail des commandes
|
||||||
|
[sur le guide de configuration](GuideConfig.md)).
|
||||||
|
|
||||||
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`)
|
```
|
||||||
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`)
|
# se connecter comme utilisateur scodoc
|
||||||
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json)
|
su - scodoc
|
||||||
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
|
|
||||||
- `Notes/formsemestre_id` (deviendra `api/formsemestre`)
|
|
||||||
- `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/<formsemestre_id>`)
|
|
||||||
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
|
|
||||||
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/<etudid>`)
|
|
||||||
- `groups_view` (deviendra `groups`)
|
|
||||||
|
|
||||||
Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
|
# Créer un rôle
|
||||||
à dire `https://votre.site.fr/ScoDoc/<dept>/Scolarite/`, et répondent en GET et
|
flask create-role LecteurAPI
|
||||||
en POST.
|
# Lui donner les droits nécessaires: ici APIView
|
||||||
|
flask edit-role LecteurAPI -a APIView
|
||||||
|
|
||||||
Note:
|
# Créer un nouvel utilisateur avec ce rôle:
|
||||||
- `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API.
|
flask user-create lecteur_api LecteurAPI @all
|
||||||
|
|
||||||
# Fonctions d'API ScoDoc 9 (work in progress)
|
# Ou bien, si on veut utiliser un compte existant:
|
||||||
|
# associer notre rôle à un utilisateur
|
||||||
|
flask user-role lecteur_api -a LecteurAPI
|
||||||
|
|
||||||
|
|
||||||
|
# Au besoin, changer le mot de passe de l'utilisateur
|
||||||
|
# (on aura besoin de ce mot de passe dans la configuration du client d'API)
|
||||||
|
flask user-password lecteur_api
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fonctions d'API ScoDoc 9 (work in progress)
|
||||||
|
|
||||||
Basé sur le ticket [#149](https://scodoc.org/git/viennet/ScoDoc/issues/149)
|
Basé sur le ticket [#149](https://scodoc.org/git/viennet/ScoDoc/issues/149)
|
||||||
|
|
||||||
La documentation ci-dessous concerne la **future** version De ScoDoc.
|
La documentation ci-dessous concerne la **future** version de ScoDoc (9.3, avec
|
||||||
|
parties expérimentales progressivement mises en production à partir de 9.2.12).
|
||||||
|
|
||||||
## Accès à l'API REST
|
### Accès à l'API REST
|
||||||
|
|
||||||
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
|
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
|
||||||
|
|
||||||
### Authentification
|
#### Authentification
|
||||||
|
|
||||||
Lors de votre authentification (_connection avec login et mdp_) à Scodoc, il
|
Lors de votre authentification (_connection avec login et mdp_) à Scodoc, il
|
||||||
vous sera attribué un jeton (token jwt _généré automatiquement_) vous permettant
|
vous sera attribué un jeton (token jwt _généré automatiquement_) vous permettant
|
||||||
@ -87,7 +93,7 @@ La réponse doit ressembler à ceci:
|
|||||||
Vous trouverez dans `/opt/scodoc/tests/api/exemple-api-basic.py` un exemple
|
Vous trouverez dans `/opt/scodoc/tests/api/exemple-api-basic.py` un exemple
|
||||||
complet en python d'interrogation de l'API.
|
complet en python d'interrogation de l'API.
|
||||||
|
|
||||||
### Codes HTTP
|
#### Codes HTTP
|
||||||
Chaque appel à l'API donne lieu à une réponse retournant un code spécifique en
|
Chaque appel à l'API donne lieu à une réponse retournant un code spécifique en
|
||||||
fonction du résultat obtenu. L'analyse de ce code vous permet de vous assurer
|
fonction du résultat obtenu. L'analyse de ce code vous permet de vous assurer
|
||||||
que la requête a été traitée avec succès.
|
que la requête a été traitée avec succès.
|
||||||
@ -105,7 +111,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
|
|||||||
* [503](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503) : L'API est momentanément indisponible, réessayez dans quelques minutes.
|
* [503](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/503) : L'API est momentanément indisponible, réessayez dans quelques minutes.
|
||||||
|
|
||||||
|
|
||||||
## Départements
|
### Départements
|
||||||
* **`departements`**
|
* **`departements`**
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Paramètres:** `viewable` (optionnel, si faux liste aussi les
|
* **Paramètres:** `viewable` (optionnel, si faux liste aussi les
|
||||||
@ -142,7 +148,7 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
|
|||||||
|
|
||||||
* XXX obtenir la liste des référentiels
|
* XXX obtenir la liste des référentiels
|
||||||
|
|
||||||
## Etudiants
|
### Etudiants
|
||||||
* **`etud_dept`**
|
* **`etud_dept`**
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Paramètres:** `code_nip`
|
* **Paramètres:** `code_nip`
|
||||||
@ -452,7 +458,7 @@ formsemestre_id": "SEM12345",
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## UE
|
### UE
|
||||||
* **`UEs`**
|
* **`UEs`**
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Paramètres:** `dept`, `̀semestre`
|
* **Paramètres:** `dept`, `̀semestre`
|
||||||
@ -463,7 +469,7 @@ formsemestre_id": "SEM12345",
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Semestres de formation
|
### Semestres de formation
|
||||||
Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`.
|
Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`.
|
||||||
|
|
||||||
* **`formsemestre`**
|
* **`formsemestre`**
|
||||||
@ -493,7 +499,7 @@ Les sessions de formation (dénommées "semestres" même si elles durent une ann
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Note sur les identifiants de sessions
|
#### Note sur les identifiants de sessions
|
||||||
Le `session_id` peut être utilisé pour identifier de façon prévisible et
|
Le `session_id` peut être utilisé pour identifier de façon prévisible et
|
||||||
(presque) unique une session dans un établissement, ce qui est utile
|
(presque) unique une session dans un établissement, ce qui est utile
|
||||||
notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois
|
notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois
|
||||||
@ -514,7 +520,7 @@ informations suivantes:
|
|||||||
**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
|
**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
|
||||||
|
|
||||||
|
|
||||||
## Modules de formation
|
### Modules de formation
|
||||||
Les moduleimpl sont les modules d'un semestre, ou les ressources, ou les SAÉs.
|
Les moduleimpl sont les modules d'un semestre, ou les ressources, ou les SAÉs.
|
||||||
On peut récupérer soit un module par son id, soit la listes des modules d'un semestre.
|
On peut récupérer soit un module par son id, soit la listes des modules d'un semestre.
|
||||||
|
|
||||||
@ -530,7 +536,7 @@ On peut récupérer soit un module par son id, soit la listes des modules d'un s
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Groupes et partitions
|
### Groupes et partitions
|
||||||
|
|
||||||
L'ensemble des étudiants d'un semestre peut être réparti selon une ou
|
L'ensemble des étudiants d'un semestre peut être réparti selon une ou
|
||||||
plusieurs partitions (types de groupes). Chaque partition est constituée
|
plusieurs partitions (types de groupes). Chaque partition est constituée
|
||||||
@ -664,7 +670,7 @@ d'un nombre quelconque de groupes d'étudiants.
|
|||||||
TODO: à changer, passer les paramètres dans le corps de la requête
|
TODO: à changer, passer les paramètres dans le corps de la requête
|
||||||
|
|
||||||
|
|
||||||
## Bulletins de notes
|
### Bulletins de notes
|
||||||
* **`evaluations`**
|
* **`evaluations`**
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Paramètres:** `moduleimpl_id`
|
* **Paramètres:** `moduleimpl_id`
|
||||||
@ -702,7 +708,7 @@ d'un nombre quelconque de groupes d'étudiants.
|
|||||||
TODO vérifier et passer les valeurs dans le corps.
|
TODO vérifier et passer les valeurs dans le corps.
|
||||||
|
|
||||||
|
|
||||||
## Absences
|
### Absences
|
||||||
**Remarques**, les dates sont au format iso `yyyy-mm-dd`. Les dates de fin ne sont pas incluses. Et `demi_journee`= 2 si journée complète, =1 si uniquement le matin, =0 si uniquement l'après-midi.
|
**Remarques**, les dates sont au format iso `yyyy-mm-dd`. Les dates de fin ne sont pas incluses. Et `demi_journee`= 2 si journée complète, =1 si uniquement le matin, =0 si uniquement l'après-midi.
|
||||||
|
|
||||||
|
|
||||||
@ -762,7 +768,7 @@ d'un nombre quelconque de groupes d'étudiants.
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Logos
|
### Logos
|
||||||
|
|
||||||
* **`liste des logos globaux`**
|
* **`liste des logos globaux`**
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
@ -798,6 +804,33 @@ d'un nombre quelconque de groupes d'étudiants.
|
|||||||
* **Résultat :** l'image (format png ou jpg)
|
* **Résultat :** l'image (format png ou jpg)
|
||||||
|
|
||||||
|
|
||||||
|
### En savoir plus
|
||||||
## En savoir plus
|
|
||||||
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
|
Voir exemples d'utilisation de l'API en Python, dans `tests/api/`.
|
||||||
|
|
||||||
|
## Fonctions de l'API ScoDoc 7 portées en ScoDoc 9
|
||||||
|
|
||||||
|
L'ancienne API ScoDoc 7 est décrite ici: [ScoDocAPI](ScoDocAPI.md)
|
||||||
|
|
||||||
|
Afin de garantir l'interopérabilité avec les clients ScoDoc 7 (ENT, etc), les
|
||||||
|
fonctions suivantes sont disponibles avec le mécanisme d'authentification
|
||||||
|
basique de ScoDoc 7. Elles sont considérées comme *obsolètes* ("deprecated") et
|
||||||
|
disparaitront en juillet 2022.
|
||||||
|
|
||||||
|
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
|
||||||
|
|
||||||
|
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`)
|
||||||
|
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`)
|
||||||
|
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json)
|
||||||
|
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
|
||||||
|
- `Notes/formsemestre_id` (deviendra `api/formsemestre`)
|
||||||
|
- `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/<formsemestre_id>`)
|
||||||
|
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
|
||||||
|
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/<etudid>`)
|
||||||
|
- `groups_view` (deviendra `groups`)
|
||||||
|
|
||||||
|
Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
|
||||||
|
à dire `https://votre.site.fr/ScoDoc/<dept>/Scolarite/`, et répondent en GET et
|
||||||
|
en POST.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
- `Absences/listeBillets` est un formulaire et ne fait pas partie de l'API.
|
||||||
|
Loading…
Reference in New Issue
Block a user