Documentation en ligne

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

Dernière mise à jour le 08/07/2024 15:20 — Éditer