Gestion des évènements¶
Obtenir des informations sur un évènement¶
Les informations sur un évènement sont accessibles à l’adresse /api/agenda/SLUG-DE-LAGENDA/status/SLUG-DE-LEVENEMENT/ via la méthode HTTP GET.
Exemple¶
GET /api/agenda/foo-bar/status/event-slug/
{
"err": 0,
"id": "event-slug",
"slug": "event-slug",
"text": "Event",
"label": "Event",
"date": "2020-06-11",
"datetime": "2020-06-11 10:00:00",
"description": null,
"pricing": null,
"url": null,
"disabled": true,
"checked": false,
"api": {
"bookings_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/bookings/event-slug/",
"fillslot_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/fillslot/event-slug/",
"status_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/status/event-slug/",
"check_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/check/event-slug/",
},
"places": {
"available": 0,
"full": true,
"has_waiting_list": false,
"reserved": 3,
"total": 3
}
}
Quand une liste d'attente existe, le dictionnaire places est complété ainsi :
...
"places": {
"available": 0,
"full": true,
"reserved": 5,
"total": 30,
"has_waiting_list": true,
"waiting_list_total": 10,
"waiting_list_reserved": 2,
"waiting_list_available": 8,
"waiting_list_activated": true
}
Le booléen waiting_list_activated signifie que la prochaine réservation sera envoyée en liste d'attente.
Obtenir la liste des réservations d’un évènement¶
La liste des réservations d’un utilisateur pour un évènement donné est accessible à l’adresse /api/agenda/SLUG-DE-LAGENDA/bookings/SLUG-DE-LEVENEMENT/ via la méthode HTTP GET. Le paramètre user_external_id est obligatoire pour désigner l’utilisateur.
Exemple¶
GET /api/agenda/foo-bar/bookings/event-slug/?user_external_id=xxx
{
"err": 0,
"data": [
{"id": 1, "in_waiting_list": true},
{"id": 2, "in_waiting_list": false}
]
}
Agenda évènement : Marquer un évènement comme pointé¶
Un évènement peut être marqué comme pointé via un appel à l’adresse /api/agenda/SLUG-DE-LAGENDA/check/SLUG-DE-LEVENEMENT/ via la méthode HTTP GET.
GET /api/agenda/foo-bar/check/event-slug/
{
"err": 0,
}
Ajouter un évènement¶
L’ajout d’un évènement s’effectue par un appel à l’adresse /api/agenda/SLUG-DE-LAGENDA/event/ via la méthode HTTP POST.
Paramètres JSON, corps de la requête¶
Deux paramètres doivent obligatoirement être présents.
| Nom | Description | Exemple |
| start_datetime | Date et heure | "2021-10-22 09:45", sous forme de gabarit {{today|date:"Y-m-d"}} {{today|time:"H:i"}} |
| places | Nombre de places | 10 |
Paramètres optionnels.
| Nom | Description | Exemple |
| label | Libellé optionnel pour identifier la date | "..." |
| duration | Durée (en minutes) | 90 |
| publication_datetime | Date·heure de publication | "2021-10-07 10:00", sous forme de gabarit, par exemple {{today|date:"Y-m-d 10:00"}} |
| waiting_list_places | Places dans la liste d’attente | 3 |
| description | Description | "..." |
| pricing | Tarif (text) | "2€", "gratuit", ... |
| url | URL vers un site tiers | "https://doc-publik.entrouvert.com" |
Des paramètres supplémentaires permettent de définir un événement
récurrent :
| Nom | Description | Exemple |
| recurrence_days | Jours de la récurrence | "0,1,6" pour lundi, mardi et dimanche |
| recurrence_week_interval | Répéter toutes X semaines | 1 (défaut), 2 ou 3 |
| recurrence_end_date | Date de fin de la récurrence | "2021-10-20" |
Les jours de la récurrence et la date de fin de récurrence doivent
être fournis pour créer un événement récurrent.
Exemple¶
POST /api/agenda/SLUG-DE-LAGENDA/event/
{
"data" : {
"date" : "2021-11-22",
"datetime" : "2021-11-22 09:45:00",
"description" : "Une description associée",
"duration" : 90,
"id" : "mon-evenement",
"label" : "Mon événement",
"pricing" : "2€",
"recurrence_days" : [
0,
1,
6
],
"recurrence_end_date" : "2021-10-20",
"recurrence_week_interval" : 2,
"slug" : "mon-evenement",
"text" : "Mon événement",
"url" : "https://doc-publik.entrouvert.com"
},
"err" : 0
}
Mettre à jour un événement¶
Les événements sont modifiables à l’adresse /api/agenda/SLUG-DE-LAGENDA/event/SLUG-DE-LEVENEMENT/ via la méthode HTTP PATCH.
Paramètres JSON, corps de la requête¶
Les paramètres utilisables sont les mêmes que ceux de la requête d’ajout.
Il n'y a pas besoin de passer l'ensemble des paramètres, seul les paramètres fournis seront mis à jour.
Exemple¶
PATCH /api/agenda/foo-bar/event/mon-evenement/ (même retour que pour la méthode POST)
Il y a cependant certaines restrictions :
Restrictions sur les événements récurrents¶
On ne peut pas modifier les paramètres start_datetime, recurrence_days et recurrence_week_interval
{
"err": 1,
"err_class": "start_datetime cannot be modified because some recurrences have bookings attached to them."
}
On ne peut pas réduire la date de fin de récurrence
(recurrence_end_date) avant un la date de la dernière réservation faite sur l’événement.
{
"err": 1,
"err_class": "recurrence_end_date cannot be modified because bookings exist after this date."
}
Restrictions sur les occurrences des événements récurrents¶
Les champs publication_datetime et ceux définissant la
récurrence (recurrence_days, recurrence_week_interval etrecurrence_end_date) ne sont pas modifiables sur les récurrences
d’événements récurrents.
{
"err": 1,
"err_class": "publication_datetime cannot be modified on an event recurrence"
}
