Pagination
Les points de terminaison de liste renvoient jusqu’à 25 éléments par page, du plus récent au plus ancien. Passezlimit pour demander de 1 à 100 éléments.
status, starts_after, starts_before et contact_id sur GET /appointments, se combinent entre eux et avec la pagination. Pour obtenir la page suivante, envoyez la même requête, filtres compris, avec cursor égal à next_cursor. Sur la dernière page, next_cursor vaut null et has_more vaut false. Traitez le curseur comme une chaîne opaque, car son format peut changer.
GET /services, GET /staff, GET /availability et GET /webhooks renvoient tous les éléments sur une seule page.
Filtrer les listes
Certains points de terminaison de liste acceptent des filtres en paramètres de requête. Les filtres se combinent entre eux et aveccursor.
Pour lister les appels d’hier d’une entreprise située à Toronto :
+ d’un décalage comme +01:00 sous la forme %2B01:00 dans l’URL.
Relancer sans risque avec Idempotency-Key
Une erreur réseau peut vous laisser dans le doute : la requête a-t-elle fonctionné? Envoyez un en-têteIdempotency-Key sur les requêtes qui créent des éléments, et relancez avec la même clé :
POST /contactsPOST /appointmentsPOST /knowledgePOST /webhooks
book_appointment, create_contact et add_knowledge comptent comme POST /appointments, POST /contacts et POST /knowledge.
- Une nouvelle tentative avec le même corps reçoit de nouveau la première réponse, avec l’en-tête
Idempotent-Replayed: true. L’API ne crée pas de deuxième rendez-vous. LobbyStack compare les valeurs JSON, donc l’ordre des clés et les espaces n’ont pas d’importance. - La même clé avec un corps différent renvoie
422avec le codeidempotency_key_reused. - Une nouvelle tentative qui arrive pendant que la première requête est encore en cours attend sa fin, puis reçoit sa réponse.
- LobbyStack enregistre la clé et le changement ensemble. Si la première requête a échoué avec une erreur, rien n’a été enregistré, donc votre nouvelle tentative s’exécute de nouveau.
Erreurs
Les erreurs ont toutes la même forme :details n’apparaît que sur les erreurs de validation. Basez-vous sur code, car la formulation de message peut changer.
Réserver par l’API
L’API suit les mêmes règles que la réceptionniste IA :POST /appointmentsetPOST /appointments/{appointment_id}/reschedulefonctionnent seulement quand lebooking_modede l’entreprise vautinstant. Lisez-le avecGET /business.- L’heure demandée doit être dans les heures d’ouverture, éviter les fermetures et les autres rendez-vous, et être libre dans un Google Calendar connecté. Quand LobbyStack ne peut pas confirmer que le calendrier est à jour, il considère ce créneau comme occupé.
- Les nouvelles réservations se synchronisent avec le calendrier connecté et mettent en file d’attente les textos habituels de confirmation et de rappel. LobbyStack ne les envoie qu’aux contacts qui ont accepté de recevoir des textos. Passez
"sms_consent": truequand le client a donné son accord pendant la réservation. - Pour réserver avec une personne précise, passez
staff_id. Sans ce champ, LobbyStack choisit un membre du personnel libre qui offre le service. - L’annulation fonctionne dans tous les modes de réservation. Annuler un rendez-vous déjà annulé le renvoie sans changement.
Personnel
GET /staff liste toutes les personnes qui prennent des rendez-vous, avec active et les service_ids pour lesquels chaque personne peut être réservée. Un service sans personnel assigné dans le tableau de bord est ouvert à tous les membres actifs du personnel.
Une entreprise qui n’a jamais configuré de personnel a quand même un membre actif, qui porte le nom de l’entreprise. Les réservations vont à cette personne. GET /staff la renvoie donc comme n’importe quel autre membre du personnel, et vous pouvez passer son id comme staff_id.
Passez staff_id à :
GET /availability, pour lister seulement les heures où cette personne est libre.POST /appointments, pour réserver avec cette personne.POST /appointments/{appointment_id}/reschedule, pour transférer le rendez-vous à cette personne. Sans ce champ, le rendez-vous garde son membre du personnel.
staff_id qui ne correspond pas à un membre actif du personnel de l’entreprise, ou à une personne qui n’offre pas le service, renvoie 400 avec le code invalid_request. Transférer un rendez-vous à un autre membre du personnel renvoie 409 conflict quand l’une des deux personnes a son propre calendrier connecté. Dans ce cas, annulez-le et réservez-en un nouveau.