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"
}