API d'insertion de données

L’application fournit une API qui permet aux établissements de lire ou de créer en masse certaines données de immerSup Il est possible de lire ou de créer des objets :

  • Domaines
  • Sous-Domaines
  • Structures
  • Formations
  • Cours
  • Créneaux
  • Intervenants
  • Etablissement (lecture seulement)
  • Lycée
  • Campus
  • Batiment
  • Visite (lecture seulement)
  • Evènement hors offre (lecture seulement)

L’API est accessible à https://immersup.etab.fr/api/ (avec immersup.etab l’url de votre instance d’immerSup) Leswagger est accessible à cette adresse : https://immersup.etab.fr/api/schema/swagger-ui/#/

**Pour utiliser ces routes, il faut un token que le référent technique peut générer dans “Administration/Token”. **

Il existe des routes correspondantes respectivement aux usages cités ci-dessus :

  • Domaines : trainingdomains
  • Sous-Domaines : trainingsubdomains
  • Structures : structures
  • Formations : trainings
  • Cours : courses
  • Créneaux : slots
  • Intervenants : speakers
  • Etablissement : establishments
  • Lycée : highschools
  • Campus : campuses
  • Batiment : buildings
  • Visite : visits
  • Evènement hors offre : off_offer_events

Les méthodes GET permettent de lire les données, les méthodes POST permettent d’insérer des données.

Intégration d’un Domaine

Exemple de données pour intégrer un domaine

	{
		"label": "Arts, Lettres & Langues"
	}

Intégration d’un sous-Domaine

Exemple de données pour intégrer un sous-domaine. Le domaine avec un id = 3 doit exister

	{
		"training_domain": 3,
		"label": "Test sous domaine"
	}

Intégration d’une structure

Exemple de données pour intégrer une structure. L’établissement avec un id = 1 doit exister

{ 
	"code": "TEST",
	"label": "Structure Test",
	"establishment": 1
}

Intégration d’une Formation

Exemple de données pour intégrer une formation. Les sous-domaines avec id=11 et id = 12 doivent exister, de même pour la structure avec id=20

	{
		"label": "B.U.T. GEA - Gestion des entreprises et des administrations",
		"training_subdomains": [
			12,11
		],
		"structures": [
			20
		]
	}

Intégration d’un cours

Exemple de données pour intégrer un cours. La formation avec un id=54 doit exister, de même pour la structure avec l’id=2. Les intervenants ne sont pas obligés d’exister déjà côté immersup pour les établissements avec SI.

{
  "label": "Algorithmique et programmation",
  "training": 54,
  "structure": 2,
  "published": true,
  "emails": [
    "intervenant1@unistra.fr","intervenant2@unistra.fr"
  ],
	"speakers": [],
  "url": ""
}

Pour les établissements sans SI ou les lycées, il faut d’abord créer les intervenants puis utiliser cette syntaxe avec les identifiants des intervenants

{
  "label": "Algorithmique et programmation",
  "training": 54,
  "structure": 2,
  "published": true,
	"speakers": [25,4],
  "url": ""
}

Intégration d’un créneau de cours

Exemple de données pour intégrer un créneau de cours. Il faut connaitre l’identifiant du type de cours pour le mettre dans course_type, l’identifiant du cours à mettre dans course et les identifiants de campus et batiment. face-to-face vaut toujours true pour un créneau de cours car le distanciel n’existe pas. Les identifiants des intervenants doivent être parmi les enseignants du cours.

{
  "room": "Rdv devant le batiment",
  "date": "2023-07-19",
  "start_time": "10:00",
  "end_time": "12:00",
  "n_places": 15,
  "additional_information": "Prendre de l'eau il fait chaud",
  "published": true,
  "face_to_face": true,
  "course_type": 1,
  "registration_limit_delay": 48,
  "cancellation_limit_delay": 48,
  "course": 170,
	"campus": 1,
  "building": 3,
  "speakers": [
    822
  ]
}

Intégration d’un créneau de visite

Exemple de données pour intégrer un créneau de visite. Il faut connaitre l’identifiant de la visite à mettre dans visit. face-to-face vaut toujours true pour un créneau de visite car le distanciel n’existe pas. Les identifiants des intervenants doivent être parmi les intervenants du cours.

{
	"room": "dans la cours du lycée",
  "date": "2023-07-19",
  "start_time": "10:00",
  "end_time": "12:00",
  "n_places": 15`
  "additional_information": "Avec de la bonne humeur",
  "published": true,
  "face_to_face": true,
  "registration_limit_delay": 48,
  "cancellation_limit_delay": 48,
  "visit":1,
  "speakers": [
    790
  ]
}

Intégration d’un créneau d’évènement hors offre

Exemple de données pour intégrer un créneau d’évènement hors offre. Il faut connaitre l’identifiant de l’évènement à mettre dans event. face-to-face vaut true pour un créneau en présentiel et false pour un créneau en distanciel. url est obligatoire si le créneau est en distanciel, sinon il faut mettre campus, batiment et salle. Les identifiants des intervenants doivent être parmi les intervenants du cours.

Distanciel

{
  "date": "2023-07-19",
  "start_time": "14:00",
  "end_time": "16:00",
  "n_places": 15,
	"url":"https://unistra.fr",
  "additional_information": "Avec de la bonne humeur",
  "published": true,
  "face_to_face": false,
  "registration_limit_delay": 48,
  "cancellation_limit_delay": 48,
  "event":1,
  "speakers": [
    790
  ]
}

Présentiel

{
	"room":"devant le batiment",
  "date": "2023-07-15",
  "start_time": "14:00",
  "end_time": "16:00",
  "n_places": 15,
  "additional_information": "Avec de la bonne humeur",
  "published": true,
  "face_to_face": true,
  "registration_limit_delay": 48,
  "cancellation_limit_delay": 48,
  "event":1,
	"campus": 1,
  "building": 3,
  "speakers": [
    790
  ]
}

Intégration d’un intervenant

Exemple de données pour intégrer un intervenant. Les intervenants n’ont besoin d’être créés que pour les lycées ou les établissemnts sans ldap. Il faut connaitre l’identifiant de l’établissement ou du lycée.

Pour un établissement sans système d’information

{
  "last_name": "Dupont",
  "first_name": "Daniel",
  "email": "daniel.dupont@etab.fr",
  "establishment": 4,
  "is_active": true
}

Pour un lycée qui partage son offre

{
  "last_name": "Dupont",
  "first_name": "Daniel",
  "email": "daniel.dupont@lycee.fr",
  "highscool": 4,
  "is_active": true
}

Intégration d’un lycée

Exemple de données pour intégrer un lycée. with_convention détermine si le lycée est conventionné ou non. Si oui les adtes de convention sont obligatoire pour un lycée en service (active = true). Si le lycée partage son offre en immersion il faut mettre postbac_immersion= true.

Conventionné

{
  "label": "Lycée Paul Valery",
  "country": "FR",
  "address": "rue du test",
  "address2": "",
  "address3": "",
  "department": "67",
  "city": "Strasbourg",
  "zip_code": "67100",
  "phone_number": "0688888888",
  "fax": "",
  "email": "lycee@ac-strasbourg.fr",
  "head_teacher_name": "M. Dupont",
  "convention_start_date": "2023-07-12",
  "convention_end_date": "2025-08-31",
  "postbac_immersion": false,
  "mailing_list": "",
  "badge_html_color": "#33ff36",
  "active": true,
  "with_convention": true
}

Non Conventionné

{
  "label": "Lycée Paul Valery 2",
  "country": "FR",
  "address": "rue du test",
  "address2": "",
  "address3": "",
  "department": "67",
  "city": "Strasbourg",
  "zip_code": "67100",
  "phone_number": "0688888888",
  "fax": "",
  "email": "lycee2@ac-strasbourg.fr",
  "head_teacher_name": "M. Dupont",
  "postbac_immersion": false,
  "mailing_list": "",
  "badge_html_color": "#33ff36",
  "active": true,
  "with_convention": false
}

Intégration d’un campus

Exemple de données pour intégrer un campus. L’établissement avec un id = 1 doit exister

{
  "label": "Campus de Haguenau",
  "active": true,
  "department": "67",
  "city": "Haguenau",
  "zip_code": "67500",
  "establishment": 1
}

Intégration d’un bâtiment

Exemple de données pour intégrer un bâtiment. Le campus avec un id = 2 doit exister

{
  "label": "Mon nouveau batiment",
  "url": "",
  "active": true,
  "campus": 2
}