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