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@|@date:"Y-m-d"}}@ retournera les événements disponibles à partir d’aujourd’hui. | | date_end | Filtrer les évènements selon leur date de fin. | Date au format YYYY-MM-DD. | @{{today@|@add_days:16@|@date:"Y-m-d"}}@ retournera les événements disponibles avant J+15 (la borne supérieure étant exclue). | | user_external_id | Inclure des informations supplémentaires en fonction de l’utilisateur spécifié. | Identifiant unique d’un utilisateur. | Chaque créneau contiendra une nouvelle clé @booked_for_external_user@ qui indiquera si l’utilisateur a déjà une réservation. | | exclude_user_external_id | Désactiver les créneaux pour lesquels l’utilisateur spécifié a déjà une réservation. | Identifiant unique d’un utilisateur. | Les créneaux déjà réservés apparaîtront désactivés, de manière analogue à s’ils étaient complets. | | hide_disabled | Exclure les créneaux désactivés. | @true@ ou @false@ | | | bypass_delays | Ne pas prendre en compte les délais de réservation. | @true@ ou @false@ (valeur par défaut) | Usuellement pour permettre à un agent de passer outre ceux-ci; le paramètre doit alors également être mentionné au moment de la réservation (l’appel à l’API « fillslot »). | h2. Agenda évènement : obtenir l’ensemble des évènements La liste des évènements d’un agenda est accessible à l’adresse @/api/agenda/SLUG-DE-LAGENDA/datetimes/@ via la méthode @HTTP GET@. h3. Paramètres | Nom | Description | Valeurs permises | Notes | | min_places | Filtrer les évènements selon leur nombre de places libres minimum. | Entier supérieur à 1. | Si un utilisateur souhaite réserver 2 places, il est utile de ne présenter que les évènements où au moins deux places sont vacantes. | | events | Inclure les évènements futurs (par défaut) ou passés. | @all@, @future@ ou @past@. | | h3. Exemple
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
	}
    ]
}