#  Services XML pour l'export des données 
ScoDoc offre un certain nombre de services XML pour faciliter son intégration dans 
d'autres composants (typiquement un portail de services pour étudiant,
comme le portail eSup CEVIF à l'IUT de Villetaneuse).


##  Identification des étudiants 
les étudiants peuvent être identifiés au choix par l'un des trois codes:

 - **`etudid`** : code interne ScoDoc, toujours disponible.

 - **`code_ine`** : code INE Apogée, s'il a été renseigné

 - **`code_nip`** : code NIP Apogée, s'il a été renseigné


##  Listes des principaux points d'entrée 
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> pour des raisons historiques, les noms des fonctions ne sont pas homogènes :-(

  *  **`XMLgetEtudInfos`**
  * Paramètre: etudid ou code_ine ou code_nip
  * Donne des informations sur l'étudiant et les semestres où il est (ou a été) inscrit. 
  * Exemple:
```
<etudiant nom="DUPOND" prenom="FREDERIC" sexe="M." code_ine="250308450" nomprenom="M. Frederic MARSAUD" code_nip="105022504" etudid="ADCDEF" email="toto@xxx.com" photo_url="https://scodoc.example.com/Dept/Fotos/dcp_2777.h90.jpg">
<insemestre etat="I" formsemestre_id="SEM4740" date_fin="2007-06-30" date_debut="2007-01-22" />
<insemestre etat="I" formsemestre_id="SEM3608" date_fin="2007-01-31" date_debut="2006-09-01" />
...
</etudiant>
```

  * **`XMLgetGroupsInPartition`**
  * Paramètres: `partition_id=X`
  * Donne la liste des étudiants dans un semestre, par groupes.
  * Exemple:
```
<ajax-response>
<response type="object" id="MyUpdater">

<group group_id="G20021" partition_name="TP" partition_id="P20020" group_name="AA">
<etud origin="" nom="DUPONT" sexe="M." prenom="Kevin" etudid="EID898"/>
...
</group>

<group ...>
...
</group>

</response>
</ajax-response>
```

 * **`XMLgetFormsemestres`**
   * Paramètres optionnels: 
    * `formsemestre_id`  code semestre ScoDoc
    * `etape_apo` code étape Apogée
   * Donne informations sur le ou les semestres sélectionnés (par défaut, sur tous les semestres).
   * Exemple: 
```
<formsemestrelist>
<formsemestre 
 formsemestre_id="SEM4741" 
 formation_id="xxx"
 semestre_id="xxx"
 titre="xxx"
 date_debut=xxx" date_fin="xxx"
 responsable_id="xxx"
 etape_apo="xxx"
/>
</formsemestrelist>
```


 * **`formation_export_xml`**
  * Paramètre: `formation_id`
  * Export XML du programme pédagogique complet (UE, matières, modules). Ce format XML est réimportable pour créer une nouvelle formation.
  * Exemple:
```
<formation acronyme="DUT R&amp;T" titre_officiel="DUT Réseaux et Télécommunications" formation_code="FCOD2" version="0" titre="DUT Réseaux et Télécommunications" formation_id="FORM1130">
   <ue acronyme="UE 1" ue_code="UCOD5" numero="1" ue_id="UE1131" titre="Formation Générale" formation_id="FORM1130" type="0">
      <matiere titre="Mathématiques" matiere_id="MAT1132" numero="10" ue_id="UE1131">
         <module coefficient="2.0" heures_cours="0.0" semestre_id="1" heures_tp="0.0" numero="10" ue_id="UE1131" matiere_id="MAT1132" abbrev="Algèbre" code="M1"  
           titre="Fondamentaux d'algèbre et de trigonométrie" module_id="MOD1138" formation_id="FORM1130" heures_td="30.0"/>
...
...
```

 * **`formsemestre_bulletinetud`**
  * Paramètres: `format=xml&formsemestre_id=XXX&etudid=YYYX`
  * Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants)
  * Bulletin de notes de l'étudiant. Toutes les notes obtenues dans ce semestres et prises en compte pour le calcul des moyennes (intégralement saisies), et décisions du jury si elles sont affichées (voir réglage des options du semestre).
  * Exemple:
```
<bulletinetud date="2007-07-11T18:50:48.164292" formsemestre_id="SEM4729" publie="1" etudid="10408738" etape_apo="V1TR">
<etudiant nom="DUPONT" prenom="YACINE" sexe="M." code_ine="2222222" etudid="11111111" code_nip="1033333333" email="toto@hotmail.com" photo_url="https://www-gtr.iutv.univ-paris13.fr/Dept/Fotos/dcp_n_01919.h90.jpg"/>
<note value="12.92"/>
<rang ninscrits="31" value="2"/>
<rang_group ninscrits="15" value="4" group_type="td" group_name="A"/>
<rang_group ninscrits="10" value="4" group_type="tp" group_name="A1"/>
<rang_group ninscrits="12" value="6" group_type="ta" group_name="BB"/>
<note_max value="20"/>
	<ue acronyme="UE 1" titre="Formation Générale" id="UE1131" numero="1">
<note value="12.56"/>
	<module coefficient="2.0" code="MC1" numero="35" abbrev="Algèbre linéaire" titre="Algèbre linéaire en dimension finie" id="MIP4731">
<note value="14.80"/>
	<evaluation coefficient="1.0" heure_debut="08:00" heure_fin="11:00" jour="2007-05-05" description="">
<note value="14.80"/>
</evaluation>
</module>
...
```

Si les décisions du jury sont publiées, on a un élément:
```
<decision etat="I" code="ADM"/>
```
et le cas échéant dans la décision une autorisation d'inscription (passage à un autre semestre) sous la forme:
```
<autorisation_inscription semestre_id="3"/>
```

Le bulletin comporte aussi le décompte des absences enregistrées au cours de ce semestre (comptées en nombre de demi-journées):
```
<absences nbabsjust="0" nbabs="2"/>
```

 * **`formsemestre_recapcomplet`**
  * Paramètres: `formsemestre_id=XXXX&tabformat=xml`
  * Paramètre optionnel: xml_with_decisions (force l'envoi des décisions même si elles ne doivent pas être montrées aux étudiants)
  * L'ensemble des bulletins de toutes la promotion d'étudiants (au même format que `formsemestre_bulletinetud`).
  * Exemple:
```
<recapsemestre date="2007-07-11T19:00:12.370531" formsemestre_id="SEM4729">
<evals_info date_derniere_note="2007-07-02 14:04:11.00" nb_evals_vides="0" nb_evals_en_cours="0" nb_evals_completes="28"/>
<bulletinetud ...>
</bulletinetud>
<bulletinetud ...>
</bulletinetud>
...
```


##  Absences 
 * **`XMLgetAbsEtud`**
  * Paramètres: etudid ou code_ine ou code_nip, beg_date, end_date (au format ISO 2009-11-04)
  * La liste des absences entre les dates indiquées (inclues):
```
<absences beg_date="2009-11-03" end_date="2009-11-29" etudid="EID1911">
  <abs begin="2009-11-04 08:00:00" end="2009-11-04 11:59:59" justified="1" description="malade"/>
  <abs begin="2009-11-04 12:00:00" end="2009-11-04 17:59:59" justified="0" description=""/>
</absences>
```

 * Les billets d'absences sont entrés via l'appel **`AddBilletAbsence`**:
  * Paramètres: etudid ou code_ine ou code_nip, begin, end, description
  * Résultat: XML contenant l'ID du billet créé.

 * **`XMLgetBilletsEtud`**
  * Paramètre: etudid ou code_ine ou code_nip 
  * Les "billets" d'absence reçus pour cet étudiant (`etat` vaut 0 si le billet n'a pas été traité, 1 sinon, et `description` est la raison déclarée de l'absence).
  * Exemple (1 row par billet):
```
<table origin="" caption="" id="gt_920276">
 <row>
  <billet_id value="ABS-3"/>
  <abs_begin value="2009-05-01 00:00:00.00"/>
  <abs_end value="2009-05-03 00:00:00.00"/>
  <description value="qqq"/>
  <etat value="0"/>
 </row>
</table>
```