API REST

celcatsanitizer dispose d’une API REST pour permettre à des outils tiers d’accéder facilement à ses données, qui sont renvoyées en JSON. Pour l’instant, il ne permet pas la modification des données.

Le point d’entrée se trouve à l’adresse api/ de l’instance de celcatsanitizer. Il retourne la liste des autres points d’accès en JSON.

Années

api/years/

Liste les années par ordre alphabétique de nom. Le résultat peut être paginé.

Exemple :

{
    "count": 4,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 3,
            "name": "L1",
            "slug": "l1"
        },
        {
            "id": 4,
            "name": "L2",
            "slug": "l2"
        },
        {
            "id": 1,
            "name": "L3",
            "slug": "l3"
        },
        {
            "id": 2,
            "name": "M1",
            "slug": "m1"
        }
    ]
}

api/years/<id>/

Retourne seulement une année.

Exemple :

{
    "id": 1,
    "name": "L3",
    "slug": "l3"
}

api/years/<id>/timetables/

Liste les emplois du temps associés à une année par ordre alphabétique de nom. Le résultat peut être paginé.

Exemple :

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 2,
            "name": "1ere année SRI",
            "slug": "1ere-annee-sri",
            "year": 1,
            "source": 2
        },
        {
            "id": 1,
            "name": "Info",
            "slug": "info",
            "year": 1,
            "source": 1
        }
    ]
}

Emplois du temps

api/timetables/

Liste les emplois du temps par ordre d’année (ID associé) puis de nom. Le résultat peut être paginé.

Exemple :

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "name": "Info",
            "slug": "info",
            "year": 1,
            "source": 1
        }
    ]
}

api/timetables/<id>/

Retourne seulement un emploi du temps.

Exemple :

{
  "id": 1,
  "name": "Info",
  "slug": "info",
  "year": 1,
  "source": 1
}

api/timetables/<id>/groups/

Retourne la liste des groupes associés à un emploi du temps, triés par ordre alphabétique. Le résultat peut être paginé.

Exemple :

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 207,
            "name": "L2 Info s1 CMA",
            "celcat_name": "L2 Info s1 CMA",
            "mention": "L2 Info",
            "semester": 1,
            "subgroup": "A",
            "slug": "l2-info-s1-cma",
            "hidden": false,
            "source": 1
        },
        {
            "id": 208,
            "name": "L3 INFO (toutes sections et semestres confondus)",
            "celcat_name": "L3 INFO (toutes sections et semestres confondus)",
            "mention": "L3 INFO",
            "semester": null,
            "subgroup": "",
            "slug": "l3-info-toutes-sections-et-semestres-confondus",
            "hidden": false,
            "source": 1
        }
    ]
}

Sources

api/sources/

Retourne la liste des sources par ordre d’ID. Le résultat peut être paginé.

Exemple :

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "url": "https://edt.univ-tlse3.fr/calendar/default.aspx?View=month&Type=group&ResourceN  ame=formation_ELINFE",
            "last_update_date": null
        },
        {
            "id": 2,
            "url": "https://edt.univ-tlse3.fr/calendar/default.aspx?View=month&Type=group&ResourceN  ame=formation_ELUSR1_s1",
            "last_update_date": null
        }
    ]
}

api/sources/<id>/

Renvoie seulement une source.

Exemple :

{
    "id": 1,
    "url": "https://edt.univ-tlse3.fr/calendar/default.aspx?View=month&Type=group&ResourceName=formation_ELINFE",
    "last_update_date": null
}

api/sources/<id>/timetables/

Renvoie la liste des emplois du temps associé à une source triés par ordre alphabétique. Le résultat peut être paginé.

Exemple :

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "name": "Info",
            "slug": "info",
            "year": 1,
            "source": 1
        }
    ]
}

Groupes

api/groups/

Liste les groupes par ordre alphabétique. Le résultat peut être paginé.

Exemple :

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 207,
            "name": "L2 Info s1 CMA",
            "celcat_name": "L2 Info s1 CMA",
            "mention": "L2 Info",
            "semester": 1,
            "subgroup": "A",
            "slug": "l2-info-s1-cma",
            "hidden": false,
            "source": 1
        },
        {
            "id": 208,
            "name": "L3 INFO (toutes sections et semestres confondus)",
            "celcat_name": "L3 INFO (toutes sections et semestres confondus)",
            "mention": "L3 INFO",
            "semester": null,
            "subgroup": "",
            "slug": "l3-info-toutes-sections-et-semestres-confondus",
            "hidden": false,
            "source": 1
        }
    ]
}

api/groups/<id>/

Affiche seulement un groupe.

Exemple :

{
    "id": 207,
    "name": "L2 Info s1 CMA",
    "celcat_name": "L2 Info s1 CMA",
    "mention": "L2 Info",
    "semester": 1,
    "subgroup": "A",
    "slug": "l2-info-s1-cma",
    "hidden": false,
    "source": 1
}

api/groups/<id>/courses/

Retourne tous les cours d’un groupe et de ses parents triés par ordre de début. Le résultat peut être paginé.

Exemple :

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 34723,
            "groups": [
                {
                    "id": 98,
                    "name": "L3 INFO s1 CMA",
                    "celcat_name": "L3 INFO s1 CMA",
                    "mention": "L3 INFO",
                    "semester": 1,
                    "subgroup": "A",
                    "slug": "l3-info-s1-cma",
                    "hidden": false,
                    "source": 1
                },
                {
                    "id": 207,
                    "name": "L2 Info s1 CMA",
                    "celcat_name": "L2 Info s1 CMA",
                    "mention": "L2 Info",
                    "semester": 1,
                    "subgroup": "A",
                    "slug": "l2-info-s1-cma",
                    "hidden": false,
                    "source": 1
                }
            ],
            "rooms": [],
            "name": "REUNION / RENCONTRE",
            "type": null,
            "notes": "Nuit de l'info",
            "begin": "2018-12-06T13:30:00+01:00",
            "end": "2018-12-06T23:45:00+01:00",
            "last_update": "2018-12-31T13:26:57.122490+01:00",
            "source": 1
        },
        {
            "id": 34727,
            "groups": [
                {
                    "id": 98,
                    "name": "L3 INFO s1 CMA",
                    "celcat_name": "L3 INFO s1 CMA",
                    "mention": "L3 INFO",
                    "semester": 1,
                    "subgroup": "A",
                    "slug": "l3-info-s1-cma",
                    "hidden": false,
                    "source": 1
                },
                {
                    "id": 207,
                    "name": "L2 Info s1 CMA",
                    "celcat_name": "L2 Info s1 CMA",
                    "mention": "L2 Info",
                    "semester": 1,
                    "subgroup": "A",
                    "slug": "l2-info-s1-cma",
                    "hidden": false,
                    "source": 1
                }
            ],
            "rooms": [],
            "name": "REUNION / RENCONTRE",
            "type": null,
            "notes": "Nuit de l'info",
            "begin": "2018-12-07T07:45:00+01:00",
            "end": "2018-12-07T23:45:00+01:00",
            "last_update": "2018-12-31T13:26:57.136381+01:00",
            "source": 1
        }
    ]
}

api/groups/<id>/courses/days/current/

Retourne la liste des cours du groupe et de ses parents d’un groupe pendant le jour courant, par ordre de début. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

api/groups/<id>/courses/days/<year>/<month>/<day>/

Retourne la liste des cours du groupe et de ses parents pendant le jour spécifié, par ordre de début. Si l’année, le mois ou le jour ne sont pas des nombres, un code 404 est renvoyé. Si la date est invalide, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

Exemple d’erreur (api/groups/<id>/courses/days/2018/111/22) :

{
    "month": "Rentrez un mois valide"
}

Exemple d’erreur (api/groups/<id>/courses/days/2018/11/33) :

{
    "day": "Numéro de jour invalide pour le mois"
}

api/groups/<id>/courses/weeks/

Retourne la liste des semaines de cours d’un groupe.

Exemple :

[
    "2018-12-03T00:00:00+01:00"
]

api/groups/<id>/courses/weeks/current/

Retourne la liste des cours du groupe et de ses parents pendant la semaine courante (ou prochaine lors du week-end) d’un groupe, par ordre de début. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

api/groups/<id>/courses/weeks/<year>/<week>/

Retourne la liste des cours du groupe et de ses parents pendant la semaine spécifiée, par ordre de début. Si l’année ou la semaine ne sont pas des nombres, un code 404 est renvoyé. Si la semaine n’est pas comprise entre 1 et 53, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

Exemple d’erreur (api/groups/<id>/courses/weeks/2018/111/) :

{
    "week": "Rentrez une semaine valide"
}

Salles

api/rooms/

Liste les salles par ordre alphabétique. Le résultat peut être paginé.

Exemple :

{
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 26,
            "name": "1R1-010",
            "slug": "1r1-010"
        },
        {
            "id": 11,
            "name": "1TP1-B08",
            "slug": "1tp1-b08"
        },
        {
            "id": 5,
            "name": "1TP1-B08bis",
            "slug": "1tp1-b08bis"
        }
    ]
}

api/rooms/<id>/

Renvoie une seule salle.

Exemple :

{
    "id": 26,
    "name": "1R1-010",
    "slug": "1r1-010"
}

api/rooms/<id>/courses/

Renvoie la liste des cours se déroulant dans une salle par ordre de début. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

api/rooms/<id>/courses/days/current/

Retourne la liste des cours se déroulant dans une salle pendant le jour courant, par ordre de début. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

api/rooms/<id>/courses/days/<year>/<month>/<day>/

Retourne la liste des cours se déroulant dans une salle pendant le jour spécifié, par ordre de début. Si l’année, le mois ou le jour ne sont pas des nombres, un code 404 est renvoyé. Si la date est invalide, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/days/<year>/<month>/<day>/.

api/rooms/<id>/courses/weeks/current/

Renvoie la liste des cours se déroulant dans une salle pendant la semaine courante (ou la semaine prochaine le week-end) par ordre de début. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/.

api/rooms/<id>/courses/weeks/<year>/<week>/

Renvoie la liste des cours se déroulant dans une salle pendant la semaine spécifiée. Si l’année ou la semaine ne sont pas des nombres, un code 404 est renvoyé. Si la semaine n’est pas comprise entre 1 et 53, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. Le résultat peut être paginé. Le format du résultat est identique à celui de api/groups/<id>/courses/weeks/<year>/<week>/.

api/rooms/qsjps/<day>/<begin>/<end>/

Fournit un accès à QSJPS. <day> est une date devant être formatée de cette manière : YYYY-MM-DD. <begin> et <end> sont des heures qui doivent être formatées de cette manière : HH:mm. La valeur de <begin> doit être inférieure à celle de <end>.

Renvoie la liste des salles vides le début du jour <day> de <begin> à <end>.

En cas de mauvais formatage, une erreur 400 est renvoyée, et les erreurs sont détaillées dans le corps de la réponse. Sinon, la liste des salles libres est renvoyée.

Exemple :

[
  {
      "id": 26,
      "name": "1R1-010",
      "slug": "1r1-010"
  },
  {
      "id": 11,
      "name": "1TP1-B08",
      "slug": "1tp1-b08"
  },
  {
      "id": 5,
      "name": "1TP1-B08bis",
      "slug": "1tp1-b08bis"
  }
]

Exemple d’erreur (api/rooms/qsjps/2019-01-35/12:00/10:00/) :

{
    "day": [
        "Saisissez une date valide."
    ],
    "end": [
        "L’heure de début doit être supérieure à celle de fin."
    ]
}

Exemple d’erreur (api/rooms/qsjps/2019-01-35/12:70/10:70/) :

{
    "day": [
        "Saisissez une date valide."
    ],
    "begin": [
        "Saisissez une heure valide."
    ],
    "end": [
        "Saisissez une heure valide."
    ]
}

Cours

api/courses/

Renvoie la liste des cours. Le résultat peut être paginé.

Exemple :

{
    "count": 4766,
    "next": "http://localhost:8000/api/courses/?page=2",
    "previous": null,
    "results": [
        {
            "id": 22133,
            "groups": [
                {
                    "id": 98,
                    "name": "L3 INFO s1 CMA",
                    "celcat_name": "L3 INFO s1 CMA",
                    "mention": "L3 INFO",
                    "semester": 1,
                    "subgroup": "A",
                    "slug": "l3-info-s1-cma",
                    "hidden": false,
                    "source": 1
                }
            ],
            "rooms": [
                {
                    "id": 1,
                    "name": "Amphi AMPERE (3A)",
                    "slug": "amphi-ampere-3a"
                }
            ],
            "name": "REUNION / RENCONTRE",
            "type": null,
            "notes": null,
            "begin": "2018-09-04T15:45:00+02:00",
            "end": "2018-09-04T16:45:00+02:00",
            "last_update": "2018-09-26T19:34:12.924533+02:00",
            "source": 1
        },
        …
    ]
  }

api/courses/<id>/

Renvoie un seul cours.

Exemple :

  {
    "id": 22133,
    "groups": [
        {
            "id": 98,
            "name": "L3 INFO s1 CMA",
            "celcat_name": "L3 INFO s1 CMA",
            "mention": "L3 INFO",
            "semester": 1,
            "subgroup": "A",
            "slug": "l3-info-s1-cma",
            "hidden": false,
            "source": 1
        }
    ],
    "rooms": [
        {
            "id": 1,
            "name": "Amphi AMPERE (3A)",
            "slug": "amphi-ampere-3a"
        }
    ],
    "name": "REUNION / RENCONTRE",
    "type": null,
    "notes": null,
    "begin": "2018-09-04T15:45:00+02:00",
    "end": "2018-09-04T16:45:00+02:00",
    "last_update": "2018-09-26T19:34:12.924533+02:00",
    "source": 1
}