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",
"shared_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/",
"shared_resources_url": "http://chrono.dev.publik.love/api/agenda/un-autre-agenda/shared-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,
}
