Projet

Général

Profil

Informations sur les 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)

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

Formats disponibles : PDF HTML TXT