Introduction à l’API agendas (chrono) chrono
Lister les agendas
La liste des agendas est accessible à l’adresse /api/agenda/ via la méthode HTTP GET.
Exemple
GET /api/agenda/ {
"data": [
{
"minimal_booking_delay": 1,
"kind": "events",
"text": "Un agenda",
"slug": "un-agenda",
"api": {
"datetimes_url": "https://agendas.demarches.publik.love/api/agenda/un-agenda/datetimes/",
"fillslots_url": "https://agendas.demarches.publik.love/api/agenda/un-agenda/fillslots/"
},
"id": "un-agenda",
"maximal_booking_delay": 360
},
{
"minimal_booking_delay": 1,
"kind": "events",
"text": "Un autre agenda",
"slug": "un-autre-agenda",
"api": {
"datetimes_url": "https://agendas.demarches.publik.love/api/agenda/un-autre-agenda/datetimes/"
"fillslots_url": "https://agendas.demarches.publik.love/api/agenda/un-autre-agenda/fillslots/"
},
"id": "un-autre-agenda",
"maximal_booking_delay": 45
}
]
}
Obtenir des informations sur un agenda
Les informations de paramétrage d’un agenda sont accessibles à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/ via la méthode 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,
"slug": "agenda-evenement",
"text": "Agenda Evenement"
}
}
Agenda évènement : obtenir l’ensemble des évènements
La liste des évènements d’un agenda est accessible à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/datetimes/ via la méthode GET.
Exemple
GET /api/agenda/agenda-evenement/datetimes/ {
"data": [
{
"api": {
"fillslot_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/fillslot/44/",
"status_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/status/44/"
},
"datetime": "2020-06-11 10:00:00",
"description": "",
"disabled": true,
"id": 44,
"pricing": null,
"slug": "even1",
"text": "even 1",
"url": null
},
{
"api": {
"fillslot_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/fillslot/45/",
"status_url": "https://chrono.dev.publik.love/api/agenda/agenda-evenement/status/45/"
},
"datetime": "2020-06-18 00:00:00",
"description": "",
"disabled": false,
"id": 45,
"pricing": null,
"slug": "even2",
"text": "even2",
"url": null
}
]
}
Agenda évènement : obtenir des informations sur un évènement
Les informations sur un évènement sont accessibles à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/status/IDENTIFIANT-DE-LEVENEMENT/ via la méthode GET.
Exemple
GET /api/agenda/agenda-evenement/status/even1/ {
"err": 0,
"places": {
"available": 3,
"full": false,
"has_waiting_list": false,
"reserved": 0,
"total": 3
}
}
Agenda rendez-vous : obtenir les types de rendez-vous
Les types de rendez-vous d'un agenda sont accessibles à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/meetings/ via la méthode GET.
Exemple
GET /api/agenda/rdvs-autre/meetings/ {
"data": [
{
"api": {
"datetimes_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/meetings/base/datetimes/"
},
"duration": 30,
"id": "base",
"text": "base"
},
{
"api": {
"datetimes_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/meetings/court/datetimes/"
},
"duration": 15,
"id": "court",
"text": "court"
}
]
}
Agenda rendez-vous : obtenir les guichets
Les guichets d'un agenda sont accessibles à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/desks/ via la méthode GET.
Exemple
GET /api/agenda/rdvs-autre/desks/ {
"data": [
{
"id": "aa",
"text": "aa"
},
{
"id": "bb",
"text": "bb"
},
{
"id": "guichet-1",
"text": "Guichet 1"
}
]
}
Agenda rendez-vous : obtenir les créneaux disponibles
La liste des évènements d'un agenda est accessible à l’adresse /api/agenda/IDENTIFIANT-DE-LAGENDA/meetings/IDENTIFIANT-DU-TYPE-DE-RDV/datetimes/ via la méthode GET.
Exemple
GET /api/agenda/rdvs-autre/meetings/base/datetimes/ {
"data": [
{
"api": {
"fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1500/"
},
"datetime": "2020-08-05 15:00:00",
"disabled": false,
"id": "19:2020-08-05-1500",
"text": "5 août 2020 15:00"
},
{
"api": {
"fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1515/"
},
"datetime": "2020-08-05 15:15:00",
"disabled": false,
"id": "19:2020-08-05-1515",
"text": "5 août 2020 15:15"
},
{
"api": {
"fillslot_url": "https://chrono.dev.publik.love/api/agenda/rdvs-autre/fillslot/19:2020-08-05-1530/"
},
"datetime": "2020-08-05 15:30:00",
"disabled": false,
"id": "19:2020-08-05-1530",
"text": "5 août 2020 15:30"
}
]
}
Poser une réservation
Via la méthode POST, sur l’adresse mentionnée dans le champ fillslot_url obtenu en demandant la liste des évèments pour agenda de type évènement ou la liste des crénaux disponibles pour un agenda de type rendez-vous.
Paramètres JSON, corps de la requête
| Nom | Description | Exemple |
|---|---|---|
| backoffice_url | URL de la démarche effectuant la réservation | {{form_url_backoffice|safe}} |
| form_url | URL de la demande | {{form_url}} |
| cancel_callback_url | URL à appeler lors d’une annulation | |
| cancel_booking_id | Identifiant de réservation à annuler | 45 |
| count | Nombre de places à réserver | 2 |
| force_waiting_list | Forcer le passage en liste d'attente | true |
| label | Texte arbitraire pour l'affichage en backoffice | {{form_name|safe}} |
| user_display_label | Texte pour affichage dans export ics | {{form_name|safe}} |
| user_external_id | Identifiant de l’utilisateur | {{form_user_nameid}} |
| user_first_name | Prénom de l'utilisateur | |
| user_last_name | Nom de l’utilisateur | {{form_user_display_name}} |
| user_email | Adresse de courriel de l'utilisateur | {{form_user_email}} |
| user_phone_number | Numéro de téléphone de l'utilisateur | {{form_user_var_phone}} |
| user_external_id | Identifiant unique de l'utilisateur | {{form_user_nameid}} |
| exclude_user | Interdire à l'utilisateur d'avoir plusieurs réservations du même créneau (False par défaut) | true |
| events | Restreindre la réservation aux évènements passés ou futur ("future" par défaut) | "future", "past", "all" |
| use_color_for | Libellé auquel associer la couleur d'un rendez-vous |
Exemple
POST /api/agenda/rdv-pref/fillslot/18:2020-06-16-1000/ {
"agenda": {
"label": "rdv pref",
"slug": "rdv-pref"
},
"api": {
"cancel_url": "https://chrono.dev.publik.love/api/booking/50/cancel/",
"ics_url": "https://chrono.dev.publik.love/api/booking/50/ics/",
"suspend_url": "https://chrono.dev.publik.love/api/booking/50/suspend/"
},
"booking_id": 50,
"datetime": "2020-06-16 10:00:00",
"desk": {
"label": "ds",
"slug": "ds"
},
"duration": 30,
"end_datetime": "2020-06-16 10:30:00",
"err": 0,
"in_waiting_list": false,
"resources": []
}