h1. Informations sur les agendas h2. Lister les agendas La liste des agendas est accessible à l’adresse @/api/agenda/@ via la méthode @HTTP GET@. h3. Paramètres | Nom | Description | Exemple | | q | Filtrer les agendas selon leur slug. | @q=piscine@ retournera les agendas dont les slugs sont « piscine_1 » et « first_piscine » mais pas « salle_des_fetes ». | | category | Filtrer les agendas selon leur catégorie. | | | with_open_events | Exclure les agendas qui n’ont pas d’évènements ouverts. | @with_open_events=true@ ne retournera que les agendas ayant des évènements ouverts. | h3. Exemple
GET /api/agenda/

{
  "data": [
      {
	  "text": "Un agenda",
	  "id": "un-agenda",
	  "slug": "un-agenda",
	  "kind": "events",
	  "minimal_booking_delay": 1,
	  "minimal_booking_delay_in_working_days": False,
	  "maximal_booking_delay": 56,
	  "edit_role" : "Agent",
	  "view_role" : "Agent",
	  "category" : "une-categorie",
	  "absence_reasons": [
	      {"id": "reason-1", "slug": "reason-1", "text": "Reason 1", "label": "Reason 1"},
	      {"id": "reason-2", "slug": "reason-2", "text": "Reason 2", "label": "Reason 2"},
	  ],
	  "api": {
	      "datetimes_url": "http://chrono.dev.publik.love/api/agenda/un-agenda/datetimes/",
	      "fillslots_url": "http://chrono.dev.publik.love/api/agenda/un-agenda/fillslots/",
	  },
      },
      {
	  "text": "Un autre agenda",
	  "id": "un-autre-agenda",
	  "slug": "un-autre-agenda",
	  "kind": "meetings",
	  "minimal_booking_delay": 1,
	  "maximal_booking_delay": 56,
	  "edit_role" : "Agent",
	  "view_role" : "Agent",
	  "category" : "une-categorie",
	  "resources": [
	      {"id": "resource-1", "text": "Resource 1", "description": "Foo bar Resource 1"},
	      {"id": "resource-2", "text": "Resource 2", "description": "Foo bar Resource 2"},
	  ],
	  "api": {
	      "meetings_url": "http://chrono.dev.publik.love/api/agenda/un-autre-agenda/meetings/",
	      "desks_url": "http://chrono.dev.publik.love/api/agenda/un-autre-agenda/desks/",
	      "resources_url": "http://chrono.dev.publik.love/api/agenda/un-autre-agenda/resources/",
	      "fillslots_url": "http://chrono.dev.publik.love/api/agenda/un-autre-agenda/fillslots/",
	  },
      },
}
h2. Ajouter un agenda L’ajout d’un agenda s’effectue par un appel à l’adresse @/api/agenda/@ via la méthode @HTTP POST@. Cette procédure est commune aux agendas de type rendez-vous et évènement. h3. Paramètres JSON, corps de la requête Deux paramètres doivent obligatoirement être présents. | Nom | Description | Exemple | | slug | Identifiant pour adresse URL | "mon-agenda" | | label | Libellé | "Mon Agenda" | La plupart des paramètres optionnels sont communs aux deux types d’agenda. | Nom | Description | Exemple | | kind | Type de l’agenda | "events" (défaut), "meetings" ou "virtual" | | minimal_booking_delay | Nombre de jours minimal (borne incluse) pour réserver | 1 | | maximal_booking_delay | Nombre de jours maximal (borne exclue) pour réserver | 56 | | anonymize_delay | Délai d’anonymisation (en jours) | 30 | | edit_role | Rôle d’édition | "Administateur fonctionnel" | | view_role | Rôle de visualisation | "Administateur fonctionnel" | | category | Slug de la catégorie de l'agenda | "une-category" | Les paramètres qui encadrent la période de réservation sont mieux décrits "ici":https://doc-publik.entrouvert.com/admin-fonctionnel/prises-de-rendez-vous/#delais-denregistrement Un paramètre supplémentaire peut être inclut sur les agendas évènements : | Nom | Description | Exemple | | minimal_booking_delay_in_working_days | Délai de réservation minimal en jours ouvrés (booléen) | false (défaut), true | h3. Exemple
POST /api/agenda/

{
   "data" : [
      {
         "api" : {
            "datetimes_url" : "https://chrono.dev.publik.love/api/agenda/mon-agenda/datetimes/",
            "fillslots_url" : "https://chrono.dev.publik.love/api/agenda/mon-agenda/fillslots/"
         },
         "category" : "une-categorie",
         "edit_role" : "Administrateur fonctionnel",
         "id" : "mon-agenda",
         "kind" : "events",
         "maximal_booking_delay" : 56,
         "minimal_booking_delay" : 1,
         "minimal_booking_delay_in_working_days" : true,
         "slug" : "mon-agenda",
         "text" : "Mon Agenda",
         "view_role" : "Administrateur fonctionnel"
      }
   ],
   "err" : 0
}
h2. Mettre à jour un agenda Les agendas sont modifiables à l’adresse @/api/agenda/SLUG-DE-LAGENDA/@ via la méthode @HTTP PATCH@. h3. Paramètres JSON, corps de la requête Les paramètres utilisables sont les mêmes que ceux de la requête d’ajout, à l'exception du paramètre @kind@, car le type d'un agenda existant ne peut pas être modifié. Il n'y a pas besoin de passer l'ensemble des paramètres, seul les paramètres fournis seront mis à jour. h3. Exemple
PATCH /api/agenda/agenda-evenement/

(même retour que pour la méthode POST)
h2. Obtenir des informations sur un agenda Les informations de paramétrage d’un agenda sont accessibles à l’adresse @/api/agenda/SLUG-DE-LAGENDA/@ via la méthode @HTTP GET@. h3. Exemple
GET /api/agenda/agenda-evenement/

{
    "data": {
        "api": {
            "datetimes_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/datetimes/",
            "fillslots_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/fillslots/"
        },
        "id": "agenda-evenement",
        "kind": "events",
        "maximal_booking_delay": 56,
        "minimal_booking_delay": 1,
        "minimal_booking_delay_in_working_days": True,
        "slug": "agenda-evenement",
        "text": "Agenda Evenement",
        "edit_role" : "Agent",
        "view_role" : "Agent",
        "category" : "une-categorie",
    }
}
h2. Supprimer un agenda La suppression d'un agenda s'effectue via un appel à l’adresse @/api/agenda/SLUG-DE-LAGENDA/@ via la méthode @HTTP DELETE@. L'appel échouera si l'agenda contient des réservation actives. h3. Exemple
DELETE /api/agenda/agenda-evenement/

{
    "err": 0,
}