h1. Obtenir les créneaux d’un agenda
Deux API existent pour récupérer les créneaux réservables d’un agenda, selon s’il est de type rendez-vous ou évènements. Certains paramètres sont communs :
| Nom | Description | Valeurs permises | Notes |
| date_start | Filtrer les évènements selon leur date de début. | Date au format YYYY-MM-DD. | @{{today@
GET /api/agenda/foo-bar/datetimes/ { "err": 0, "data": [ { "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, "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 } }, { "id": "event2-slug", "slug": "event2-slug", "text": "Event 2", "label": "Event 2", "date": "2020-06-12", "datetime": "2020-06-12 10:00:00", "description": null, "pricing": null, "url": null, "disabled": false, "api": { "bookings_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/bookings/event2-slug/", "fillslot_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/fillslot/event2-slug/", "status_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/status/event2-slug/", "check_url": "http://chrono.dev.publik.love/api/agenda/foo-bar/check/event2-slug/", }, "places": { "available": 3, "full": false, "has_waiting_list": false, "reserved": 0, "total": 3 } } ], "meta": { "no_bookable_datetimes": false, "bookable_datetimes_number_total": 2, "bookable_datetimes_number_available": 1, "first_bookable_slot": { "id": "event2-slug", "slug": "event2-slug", ... } } }h2. Agenda rendez-vous : obtenir les créneaux disponibles La liste des évènements d’un agenda est accessible à l’adresse @/api/agenda/SLUG-DE-LAGENDA/meetings/SLUG-DU-TYPE-DE-RDV/datetimes/@ via la méthode @HTTP GET@. h3. Paramètres | Nom | Description | Valeurs permises | Notes | | resources | Filtrer les créneaux où certaines resources sont disponibles. | Liste de slugs séparés par des virgules. | | | events | Inclure les évènements futurs (par défaut) ou passés. | @all@, @future@ ou @past@. | | | minutes | Filtrer les créneaux sur l'horaire de début du créneau | Des nombres entiers de 0 à 59, séparés par des virgules| 0,30 retournera les créneaux qui commencent au heures piles et au demi-heures. | h3. Exemple
GET /api/agenda/rdvs-autre/meetings/base/datetimes/ { "data": [ { "api": { "fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1500/" }, "date": "2020-08-05", "datetime": "2020-08-05 15:00:00", "disabled": true, "id": "19:2020-08-05-1500", "text": "5 août 2020 15:00" }, { "api": { "fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1515/" }, "date": "2020-08-05", "datetime": "2020-08-05 15:15:00", "disabled": false, "id": "19:2020-08-05-1515", "text": "5 août 2020 15:15" }, { "api": { "fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1530/" }, "date": "2020-08-05", "datetime": "2020-08-05 15:30:00", "disabled": false, "id": "19:2020-08-05-1530", "text": "5 août 2020 15:30" } ], "meta": { "no_bookable_datetimes": false, "bookable_datetimes_number_total": 3, "bookable_datetimes_number_available": 2, "first_bookable_slot": { "api": { "fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1515/" }, "date": "2020-08-05", "datetime": "2020-08-05 15:15:00", "disabled": false, "id": "19:2020-08-05-1515", "text": "5 août 2020 15:15" } } }h2. Agenda évènement : obtenir l’ensemble des évènements de plusieurs agendas Il est possible d’obtenir une liste d’évènements aggrégés depuis plusieurs agendas via un appel @HTTP GET@ à l’adresse @/api/agendas/datetimes/@ (noter les pluriels). h3. Paramètres | Nom | Description | Exemple | | agendas | Identifiants des agendas. | agenda-slug,agenda2-slug | Ce paramètre est obligatoire et vient s’ajouter à la liste des paramètres acceptés par l’API de récupération des évènements classique. h3. Réponse La réponse est la même que celle de l’API de récupération des évènements classique. La seule différence est que les identifiants des évènements (clé "id") sont constitués de la concaténation entre le slug de l’agenda et le slug de l’évènement. Cela permet leur réutilisation dans l’API de [[Réservation_d'un_créneau#Agenda-évènement-poser-plusieurs-réservations-sur-plusieurs-agendas|réservation multiple]]. h2. Agenda évènement : obtenir les évènements récurrents La liste des évènements récurrents définis sur un agenda est accessible à l’adresse @/api/agendas/recurring-events/?agendas=SLUG-DE-LAGENDA@ via la méthode @HTTP GET@. Attention, les occurrences d’un évènement récurrents sont bien retournées par l’API @/datetimes/@ décrite plus haut. Cette API n’est utile que dans des cas très spécifiques, où l’on voudrait récupérer l’évènement récurrent source plutôt que les évènements directement réservables qui en découlent. Les évènements retournés sont réservables grâce à l’API de [[Réservation_d'un_créneau#Agenda-évènement-réserver-toutes-les-occurrences-dévènements-récurrents|réservation multiple des évènements récurrents]]. h3. Paramètres | Nom | Description | Exemple | | agendas | Identifiants des agendas. | agenda-slug,agenda2-slug | Ce paramètre est obligatoire. h3. Exemple
GET /api/agendas/recurring-events/?agenda=SLUG-DE-LAGENDA { "data": [ { "date": "2021-09-06", "datetime": "2021-09-06 14:00:00", "description": null, "id": "xxx@event-slug:0", "pricing": null, "text": "Lundi: Évènement", "url": null }, { "date": "2021-09-21", "datetime": "2021-09-21 14:00:00", "description": null, "id": "xxx@other-event-slug:1", "pricing": null, "text": "Mardi: Autre Évènement", "url": null } ] }