Gestion des agendas¶
Lister les agendas¶
La liste des agendas est accessible à l’adresse /api/agenda/
via la méthode HTTP GET
.
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. |
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/", }, }, }
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.
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
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 |
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 }
Mettre à jour un agenda¶
Les agendas sont modifiables à l’adresse /api/agenda/SLUG-DE-LAGENDA/
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, à 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.
Exemple¶
PATCH /api/agenda/agenda-evenement/ (même retour que pour la méthode POST)
Dupliquer un agenda¶
Un agenda peut être dupliqué via l’adresse /api/agenda/SLUG-DE-LAGENDA/duplicate/
via la méthode HTTP
POST
.
Paramètres JSON, corps de la requête¶
Nom | Description | Remarque |
label | Libellé pour l’agenda dupliqué | |
slug | Slug pour l’agenda dupliqué | Si le slug n’est pas mentionné il sera créé automatiquement sur base du libellé |
Exemple¶
POST /api/agenda/agenda-evenement/duplicate/ { "label": "Nouveau libellé", "slug": "identifiant-personnalise" } → { "data": { "id": "identifiant-personnalise", "slug": "identifiant-personnalise", "text": "Nouveau libellé", "kind": "events", "minimal_booking_delay": 1, … (autres attributs de paramétrage) … "api": { "datetimes_url": "https://…/api/agenda/identifiant-personnalise/datetimes/", "backoffice_url": "https://…/manage/agendas/NUM/" }, } }
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
.
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", } }
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.
Exemple¶
DELETE /api/agenda/agenda-evenement/ { "err": 0, }