h1. Gestion des réservations h2. Obtenir la liste des réservations d’un utilisateur La liste des réservations d’un utilisateur est accessible à l’adresse @/api/bookings/@ via la méthode @HTTP GET@. h3. Paramètres | Nom | Description | Exemple | | user_external_id | Identifiant unique de l’utilisateur (obligatoire). | {{form_user_nameid}} | | agenda | Restreindre les réservations à un agenda. | Slug d’un agenda. | | category | Restreindre les réservations à une catégorie d’agenda. | Slug d’une catégorie. | | date_start | Filtrer les réservations selon leur date de début. | 2021-09-15 | | date_end | Filtrer les réservations selon leur date de fin. | 2021-09-20 | h3. Exemple
GET /api/bookings/?user_external_id=xxx { "err": 0, "data": [ { "id": 4, "in_waiting_list": false, "user_was_present": true, "user_absence_reason": "", "extra_data": null }, { "id": 11, "in_waiting_list": false, "user_was_present": null, "user_absence_reason": "", "extra_data": null } ] }h2. Obtenir des informations sur une réservation Les informations sur une réservation sont accessibles à l’adresse @/api/booking/ID-DE-LA-RESERVATION/@ via la méthode @HTTP GET@. h3. Exemple
GET /api/booking/4/ { "err": 0, "data": { "booking_id": 4, "in_waiting_list": false, "user_was_present": true, "user_absence_reason": "", "extra_data": null } }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }h2. Mettre à jour les informations sur une réservation Les informations sur une réservation sont modifiables à l’adresse @/api/booking/ID-DE-LA-RESERVATION/@ via la méthode @HTTP PATCH@. h3. Paramètres JSON, corps de la requête | Nom | Description | Exemple | | user_was_present | Information de pointage témoignant de la présence de l’utilisateur. | true | | user_absence_reason | Motif d’absence | | Il est possible de passer n’importe quel paramètre en plus de ceux ci-dessus : ils seront enregistrés et apparaîtront dans la clé @extra_data@ de l’API qui retourne les [[Gestion_des_réservations#Exemple-2|informations d’une réservation]]. h3. Exemple
PATCH /api/booking/4/ { "err": 0, "booking_id": 4, }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }h4. Erreur : réservation en liste d’attente
{ "err": 3, "err_class": "booking is in waiting list" }h4. Erreur : l’évènement est marqué comme déjà pointé
{ "err": 5, "err_class": "event is marked as checked" }h2. Annuler une réservation Il est possible d’annuler une réservation grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/cancel/@ via la méthode @HTTP POST@. h3. Exemple
POST /api/booking/4/cancel/ { "err": 0, "booking_id": 4, }h4. Erreur : réservation déjà annulée
{ "err": 1, "err_class": "already cancelled" }h2. Accepter une réservation Il est possible de déplacer une réservation de la liste d’attente vers la liste principale grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/accept/@ via la méthode @HTTP POST@. h3. Exemple
POST /api/booking/4/accept/ { "err": 0, "booking_id": 4, "overbooked_places": 0 }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }h4. Erreur : la réservation n’est pas en liste d’attente
{ "err": 3, "err_class": "booking is not in waiting list" }h2. Suspendre une réservation Inversement, il est possible de déplacer une réservation de la liste principale vers la liste d’attente grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/suspend/@ via la méthode @HTTP POST@. h3. Exemple
POST /api/booking/4/accept/ { "err": 0, "booking_id": 4, }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }h4. Erreur : la réservation est déjà en liste d’attente
{ "err": 3, "err_class": "booking is already in waiting list" }h2. Redimensionner une réservation Il est possible de modifier le nombre de places prises par une réservation grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/resize/@ via la méthode @HTTP POST@. h3. Paramètres JSON, corps de la requête | Nom | Description | Exemple | | @count@ | Nombre de places. | 2 | h3. Exemple
POST /api/booking/4/resize/ { "err": 0, "booking_id": 4, }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }h4. Erreur : évènement plein
{ "err": 3, "err_class": "sold out" }h2. Anonymiser une réservation Il est possible d’anonymiser une réservation grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/anonymize/@ via la méthode @HTTP POST@. h3. Exemple
POST /api/booking/4/anonymize/ { "err": 0, "booking_id": 4, }h2. Supprimer une réservation Il est possible de supprimer une réservation grâce à un appel à l’adresse @/api/booking/ID-DE-LA-RESERVATION/@ via la méthode @HTTP DELETE@. h3. Exemple
DELETE /api/booking/4/ { "err": 0, "booking_id": 4, }h4. Erreur : réservation annulée
{ "err": 1, "err_class": "booking is cancelled" }