Référence de l’API partenaires
Agenda
Lire et synchroniser l'agenda des sites ouverts à l'application, chercher des créneaux libres, prendre, déplacer, annuler un rendez-vous et pointer l'arrivée d'un animal. Lectures : droit agenda:read ; écritures : agenda:write. Toute prise ou tout déplacement de rendez-vous est jugé en politique stricte : la moindre contrainte non respectée (site fermé, vétérinaire hors planning ou absent, créneau pris, date passée…) refuse l'appel en 409 SLOT_CONFLICT, même si la clinique accepte ce cas en simple avertissement dans son propre agenda. Une clinique qui n'a renseigné ni les horaires de ses sites ni le planning de ses vétérinaires ne peut donc recevoir aucun rendez-vous par l'API. L'application agit sous un utilisateur d'intégration à son nom : il apparaît comme créateur du rendez-vous, auteur de sa note, de son annulation et de l'arrivée.
Lister les motifs de rendez-vous
GET/api/partner/v1/appointment-subtypes#
Rend les motifs actifs d'un site, dans l'ordre d'affichage choisi par la clinique, éventuellement limités à un type. Un motif précise un type et peut fixer sa propre durée, une salle par défaut et une espèce. Les motifs désactivés par la clinique ne sont pas rendus. Une seule page : nextCursor vaut toujours null.
Paramètres
| site_idrequête · uuid | Site lu. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| appointment_type_idrequête · uuid | Seulement les motifs de ce type, qui doit appartenir au site. |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Les motifs actifs du site.
Champs de la réponse (2)
| itemsAppointmentSubtype[] | |
| iduuid | Identifiant du motif, à passer en |
| appointmentTypeIduuid | Type auquel le motif appartient. |
| namestring | Nom du motif. |
| durationMinutesinteger | Durée du motif, en minutes. Une prestation rattachée au motif peut imposer une durée différente à la création du rendez-vous. |
| defaultRoomIduuid | Salle réservée par défaut pour ce motif quand la création ne précise pas de salle. Nulle sans salle par défaut. peut être null |
| speciesstring | Code de l'espèce à laquelle le motif est réservé (voir |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD |
|
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
| 404 APPOINTMENT_TYPE_NOT_FOUND |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lister les types de rendez-vous
GET/api/partner/v1/appointment-types#
Rend les types de rendez-vous d'un site (consultation, vaccination, chirurgie…), avec leur durée par défaut. Ce sont les valeurs acceptées en appointmentTypeId. Liste courte, sans ordre garanti, en une seule page : nextCursor vaut toujours null.
Paramètres
| site_idrequête · uuid | Site lu. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Les types de rendez-vous du site.
Champs de la réponse (2)
| itemsAppointmentType[] | |
| iduuid | Identifiant du type, à passer en |
| namestring | Nom du type, tel que la clinique l'affiche. |
| durationMinutesinteger | Durée par défaut d'un rendez-vous de ce type, en minutes. |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lister les rendez-vous
GET/api/partner/v1/appointments#
Rend les rendez-vous des sites ouverts à l'application, ou du seul site demandé, annulés compris, triés par date de modification (updatedAt) puis par identifiant. C'est la route de synchronisation de l'agenda : parcourez les pages avec cursor, puis repartez de updated_since égal au plus grand updatedAt vu, moins 5 minutes, et dédoublonnez par id. Une écriture n'apparaît dans cette liste qu'au bout de 60 secondes environ ; GET /appointments/{id} la rend tout de suite.
Les filtres se cumulent. from et to portent sur le début du rendez-vous (from inclus, to exclu). client_id rend aussi les rendez-vous sans client rattaché dont l'animal appartient à ce client. Un filtre sur un client, un animal ou un vétérinaire que l'application ne peut pas lire répond 404, jamais une liste vide.
Paramètres
| site_idrequête · uuid | Limite la lecture à ce site. Sans lui ni l'en-tête : tous les sites ouverts à l'application. Le paramètre l'emporte sur l'en-tête. |
| fromrequête · date-time | Rendez-vous qui commencent à partir de cet instant (inclus). Années 1900 à 9999. |
| torequête · date-time | Rendez-vous qui commencent avant cet instant (exclu). Postérieur à |
| vet_idrequête · uuid | Rendez-vous de ce vétérinaire. Il doit appartenir à l'organisation. |
| patient_idrequête · uuid | Rendez-vous de cet animal. |
| client_idrequête · uuid | Rendez-vous de ce client, ou de l'un de ses animaux quand le rendez-vous n'a pas de client rattaché. |
| updated_sincerequête · date-time | Rendez-vous modifiés à partir de cet instant (inclus). Années 1900 à 9999. |
| cursorrequête · string | Curseur opaque rendu par la page précédente ( |
| limitrequête · integer | Nombre de rendez-vous par page. Une valeur au-delà de 200 est ramenée à 200. Défaut :50 |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Une page de rendez-vous, par `updatedAt` puis `id` croissants.
Champs de la réponse (2)
| itemsAppointment[] | |
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD | Paramètre illisible (UUID, instant, |
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
| 404 CLIENT_NOT_FOUND |
|
| 404 PATIENT_NOT_FOUND |
|
| 404 VET_NOT_FOUND |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Prendre un rendez-vous
POST/api/partner/v1/appointments#
Crée un rendez-vous sur le site donné par site_id ou Treats-Site-Id (implicite si un seul site est ouvert). Le vétérinaire doit faire partie de l'équipe du site ; le type, le motif et la salle doivent appartenir au site ; l'animal doit appartenir au client et ne pas être décédé. La durée retenue est durationMinutes, sinon celle de la prestation rattachée au motif, sinon celle du motif, sinon celle du type ; la salle est roomId, sinon la salle par défaut du motif.
Avant d'écrire, le créneau est jugé en politique stricte : toute contrainte non respectée refuse l'appel en 409 SLOT_CONFLICT (voir POST /availability/evaluate pour le jugement sans écriture). Le rendez-vous est créé en workflow: PLANNED, au nom de l'utilisateur d'intégration de l'application. Le client n'est prévenu que sur demande (notifyClient: true) ; cela ne commande que le message de confirmation immédiat, les rappels programmés par la clinique suivent ses propres réglages. Le jugement du créneau et l'écriture ne sont pas atomiques : deux créations simultanées sur le même créneau peuvent être acceptées si la clinique tolère les chevauchements.
Paramètres
| site_idrequête · uuid | Site du rendez-vous. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| Treats-Site-Iden-tête · uuid | Équivalent de |
| Idempotency-Keyen-tête · stringrequis | Clé unique de l'envoi (un UUID). Le même envoi répété avec la même clé n'est appliqué qu'une fois pendant 24 h. |
Corps de la requête application/json
| clientIduuidrequis | Client (propriétaire). Il doit être lisible par l'application. |
| patientIduuidrequis | Animal. Il doit appartenir à |
| appointmentTypeIduuidrequis | Type de rendez-vous du site (voir |
| appointmentSubtypeIduuid | Motif, qui doit appartenir au type (voir |
| vetIduuidrequis | Vétérinaire, membre de l'équipe du site (voir |
| roomIduuid | Salle du site (voir |
| startAtdate-timerequis | Début du rendez-vous. Années 1900 à 9999 ; un instant passé est refusé ( |
| durationMinutesinteger | Durée en minutes. Absente : durée du motif ou du type. |
| notestring | Note du rendez-vous, visible de l'équipe. Une chaîne vide vaut absence de note. |
| notifyClientboolean |
|
Réponse
201Le rendez-vous créé.
Champs de la réponse (23)
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
Erreurs propres à cette opération
| 400 BODY_REQUIRED | Corps absent. |
| 400 INVALID_FIELD | Champ absent, illisible ou inconnu (un détail par champ) ; |
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
| 404 CLIENT_NOT_FOUND | Client inconnu, d'une autre organisation, ou que l'application ne peut pas lire. |
| 404 PATIENT_NOT_FOUND | Animal inconnu, d'une autre organisation, ou dont le client n'est pas lisible par l'application. |
| 404 VET_NOT_FOUND | Vétérinaire qui n'est pas dans l'équipe du site. |
| 404 APPOINTMENT_TYPE_NOT_FOUND | Type de rendez-vous inconnu ou d'un autre site. |
| 404 APPOINTMENT_SUBTYPE_NOT_FOUND | Motif inconnu ou d'un autre site. |
| 404 ROOM_NOT_FOUND | Salle inconnue ou d'un autre site. |
| 409 PATIENT_DECEASED_READONLY | L'animal est décédé : aucun rendez-vous ne peut être pris pour lui. |
| 409 SLOT_CONFLICT | Le créneau ne respecte pas toutes les contraintes. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Notifications envoyées :appointment.created
Lire un rendez-vous
GET/api/partner/v1/appointments/{id}#
Rend un rendez-vous d'un site ouvert à l'application, quel que soit son état (annulé, terminé…). La lecture est immédiate : un rendez-vous qui vient d'être écrit est rendu tout de suite, sans le délai des listes. C'est la lecture à faire à la réception d'une notification appointment.* ou patient.checked_in. Un rendez-vous d'un site non ouvert répond 404, comme un identifiant inconnu.
Paramètres
| idchemin · uuidrequis | Identifiant du rendez-vous. |
Réponse
200Le rendez-vous.
Champs de la réponse (23)
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
Erreurs propres à cette opération
| 404 APPOINTMENT_NOT_FOUND | Rendez-vous inconnu, d'une autre organisation, ou d'un site non ouvert à l'application. |
| 404 NOT_FOUND |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Modifier un rendez-vous
PATCH/api/partner/v1/appointments/{id}#
Déplace ou modifie un rendez-vous d'un site ouvert à l'application : champ absent = inchangé, champ à null = vidé (roomId, appointmentSubtypeId, note seulement). Le site, le client, l'animal, l'avancement (workflow) et la catégorie ne se modifient pas par cette route : les envoyer répond 400 INVALID_FIELD. Pour annuler, utilisez POST /appointments/{id}/cancel.
Si le début, la durée, le vétérinaire ou la salle changent, le nouveau créneau est jugé en politique stricte avant l'écriture (409 SLOT_CONFLICT), le rendez-vous lui-même étant ignoré dans le calcul des chevauchements. Changer de type ne change pas la durée. Un rendez-vous annulé, non honoré, terminé ou dont l'animal est décédé ne se modifie plus ; un rendez-vous à facturer (TO_BILL) ne se déplace plus. Le client n'est pas prévenu d'un déplacement par cette route. Un appel qui ne change rien rend le rendez-vous tel quel, sans notification.
Paramètres
| idchemin · uuidrequis | Identifiant du rendez-vous. |
Corps de la requête application/json
| startAtdate-time | Nouveau début. Ne peut pas être |
| durationMinutesinteger | Nouvelle durée en minutes. Ne peut pas être |
| vetIduuid | Nouveau vétérinaire, membre de l'équipe du site du rendez-vous. Ne peut pas être |
| roomIduuid | Nouvelle salle du site ; |
| appointmentTypeIduuid | Nouveau type, du site du rendez-vous. Ne peut pas être |
| appointmentSubtypeIduuid | Nouveau motif, qui doit appartenir au type (nouveau ou actuel) ; |
| notestring | Nouvelle note ; son auteur devient l'utilisateur d'intégration. |
Réponse
200Le rendez-vous après modification.
Champs de la réponse (23)
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
Erreurs propres à cette opération
| 400 BODY_REQUIRED | Corps absent. |
| 400 INVALID_FIELD | Champ illisible ou inconnu, ou non modifiable ( |
| 404 APPOINTMENT_NOT_FOUND | Rendez-vous inconnu, d'une autre organisation, ou d'un site non ouvert à l'application. |
| 404 NOT_FOUND |
|
| 404 VET_NOT_FOUND | Vétérinaire qui n'est pas dans l'équipe du site du rendez-vous. |
| 404 APPOINTMENT_TYPE_NOT_FOUND | Type de rendez-vous inconnu ou d'un autre site. |
| 404 APPOINTMENT_SUBTYPE_NOT_FOUND | Motif inconnu ou d'un autre site. |
| 404 ROOM_NOT_FOUND | Salle inconnue ou d'un autre site. |
| 409 SLOT_CONFLICT | Le nouveau créneau ne respecte pas toutes les contraintes. |
| 409 APPOINTMENT_NOT_MODIFIABLE | Rendez-vous annulé, non honoré, terminé ou d'un animal décédé ; ou rendez-vous à facturer ( |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Notifications envoyées :appointment.updated
Annuler un rendez-vous
POST/api/partner/v1/appointments/{id}/cancel#
Annule un rendez-vous d'un site ouvert à l'application : il passe en category: CANCELLED, libère son créneau et reste visible dans l'agenda et dans les listes, avec son annulation (cancellation). Le motif est obligatoire pour l'API, et OTHER exige une précision. Le client n'est prévenu que sur demande (notifyClient: true). L'annulation est idempotente : annuler un rendez-vous déjà annulé rend 200 et le rendez-vous tel quel, le premier motif est conservé et aucune notification n'est émise. Un rendez-vous ne se supprime jamais par l'API.
Paramètres
| idchemin · uuidrequis | Identifiant du rendez-vous. |
| Idempotency-Keyen-tête · stringrequis | Clé unique de l'envoi (un UUID). Le même envoi répété avec la même clé n'est appliqué qu'une fois pendant 24 h. |
Corps de la requête application/json
| reasonenumrequis | Motif d'annulation (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHER |
| notesstring | Précision libre. Obligatoire avec |
| notifyClientboolean |
|
Réponse
200Le rendez-vous annulé.
Champs de la réponse (23)
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
Erreurs propres à cette opération
| 400 BODY_REQUIRED | Corps absent : il porte au moins |
| 400 CANCELLATION_REASON_REQUIRED |
|
| 400 CANCELLATION_NOTES_REQUIRED |
|
| 400 INVALID_FIELD | Motif inconnu, |
| 404 APPOINTMENT_NOT_FOUND | Rendez-vous inconnu, d'une autre organisation, ou d'un site non ouvert à l'application. |
| 404 NOT_FOUND |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Notifications envoyées :appointment.cancelledappointment.updated
Pointer l'arrivée d'un animal
POST/api/partner/v1/appointments/{id}/check-in#
Déclare l'animal arrivé à la clinique : le rendez-vous passe en workflow: WAITING, arrivedAt prend l'heure de l'appel (ou garde une arrivée déjà enregistrée) et l'animal apparaît dans la salle d'attente du site. Idempotent : un animal déjà en attente n'est pas repointé, le rendez-vous est rendu tel quel, sans notification. Un rendez-vous déjà en consultation (IN_PROGRESS) repasse en attente, son heure d'appel effacée. Un rendez-vous annulé, non honoré, terminé, à facturer ou d'un animal décédé est refusé. Aucun corps n'est lu.
Paramètres
| idchemin · uuidrequis | Identifiant du rendez-vous. |
| Idempotency-Keyen-tête · stringrequis | Clé unique de l'envoi (un UUID). Le même envoi répété avec la même clé n'est appliqué qu'une fois pendant 24 h. |
Réponse
200Le rendez-vous, animal en attente.
Champs de la réponse (23)
| iduuid | Identifiant du rendez-vous. |
| publicIdstring | Identifiant public lisible ( |
| siteIduuid | Site du rendez-vous. |
| clientIduuid | Client (propriétaire). Nul pour un rendez-vous sans client rattaché. peut être null |
| patientIduuid | Animal. Nul pour un rendez-vous sans animal rattaché. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. Nul si aucun n'est désigné. peut être null |
| appointmentTypeIduuid | Type de rendez-vous (voir |
| appointmentSubtypeIduuid | Motif, précision du type (voir |
| roomIduuid | Salle réservée. Nulle sans salle. peut être null |
| startAtdate-time | Début du rendez-vous. |
| endAtdate-time | Fin du rendez-vous. Nulle sur certains rendez-vous anciens. peut être null |
| durationMinutesinteger | Durée en minutes : la durée enregistrée, sinon l'écart entre |
| workflowenum | Avancement de la visite. PLANNEDCONFIRMEDWAITINGIN_PROGRESSTO_BILLCOMPLETED |
| categoryenum | Nature particulière du rendez-vous, nulle pour un rendez-vous ordinaire. EMERGENCYWALK_INHOSPITALIZATIONCANCELLEDNO_SHOWDECEASEDpeut être null |
| urgentboolean |
|
| notestring | Note du rendez-vous (motif libre, précisions). Nulle sans note. peut être null |
| noteAuthorobject | Auteur de la dernière modification de la note. Nul sans note, ou si l'auteur n'est pas connu. C'est l'utilisateur d'intégration de l'application quand la note vient de l'API. peut être null |
| iduuid | Identifiant de la personne. |
| namestring | Prénom et nom. Nul si la personne n'est plus lisible. peut être null |
| noteUpdatedAtdate-time | Date de la dernière modification de la note. Nulle sans note. peut être null |
| arrivedAtdate-time | Arrivée de l'animal à la clinique. Nulle tant qu'il n'est pas arrivé. peut être null |
| calledAtdate-time | Appel de l'animal en consultation. Nul tant qu'il n'a pas été appelé. peut être null |
| cancellationAppointmentCancellation | Annulation. Renseignée seulement pour un rendez-vous annulé ( |
| reasonenum | Motif (voir CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHERpeut être null |
| notesstring | Précision libre. Nulle sans précision. peut être null |
| cancelledAtdate-time | Date de l'annulation. peut être null |
| clientNotifiedboolean |
|
| createdAtdate-time | Date de création. Nulle sur certains rendez-vous repris d'un autre logiciel. peut être null |
| updatedAtdate-time | Date de la dernière modification. C'est la clé de synchronisation des listes : mémorisez la plus grande valeur vue pour |
Erreurs propres à cette opération
| 404 APPOINTMENT_NOT_FOUND | Rendez-vous inconnu, d'une autre organisation, ou d'un site non ouvert à l'application. |
| 404 NOT_FOUND |
|
| 409 APPOINTMENT_NOT_MODIFIABLE | Rendez-vous annulé, non honoré, terminé, à facturer ( |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Notifications envoyées :patient.checked_in
Juger un créneau
POST/api/partner/v1/availability/evaluate#
Juge un créneau avec exactement les contraintes de la prise de rendez-vous par l'API, sans rien écrire : available: true si aucune n'est violée, sinon toutes les violations. La fin du créneau est endAt, sinon le début plus durationMinutes, sinon la durée que prendrait la création pour appointmentTypeId et appointmentSubtypeId (avec la salle par défaut du motif). Pour juger le déplacement d'un rendez-vous existant, passez-le en excludeAppointmentId : il n'entre pas en conflit avec lui-même. Route de lecture : droit agenda:read, pas d'en-tête Idempotency-Key.
Paramètres
| site_idrequête · uuid | Site du créneau. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Corps de la requête application/json
| startAtdate-timerequis | Début du créneau. |
| endAtdate-time | Fin du créneau, postérieure à |
| durationMinutesinteger | Durée en minutes, utilisée sans |
| appointmentTypeIduuid | Type de rendez-vous du site : sans |
| appointmentSubtypeIduuid | Motif du site, qui doit appartenir à |
| vetIduuidrequis | Vétérinaire, membre de l'équipe du site. |
| roomIduuid | Salle du site à vérifier. |
| excludeAppointmentIduuid | Rendez-vous à ignorer dans le calcul des chevauchements (celui qu'on veut déplacer). Il doit être d'un site ouvert à l'application. |
Réponse
200Le jugement du créneau.
Champs de la réponse (5)
| availableboolean |
|
| startAtdate-time | Début du créneau jugé. |
| endAtdate-time | Fin du créneau jugé, telle que retenue (donnée, calculée depuis la durée, ou depuis le type et le motif). |
| durationMinutesinteger | Durée du créneau jugé, en minutes. |
| violationsAvailabilityViolation[] | Toutes les contraintes non respectées. Vide si |
| reasonenum |
PAST_DATEHOLIDAYCLINIC_CLOSEDOUT_OF_BUSINESS_HOURSVET_OUT_OF_SHIFTVET_ABSENTVET_BUSYVET_EXTERNAL_BUSYROOM_BUSY |
| messagestring | Explication en français, affichable telle quelle. Ne nomme jamais un autre site de l'organisation. |
Erreurs propres à cette opération
| 400 BODY_REQUIRED | Corps absent. |
| 400 INVALID_FIELD |
|
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
| 404 VET_NOT_FOUND | Vétérinaire qui n'est pas dans l'équipe du site. |
| 404 APPOINTMENT_TYPE_NOT_FOUND | Type de rendez-vous inconnu ou d'un autre site. |
| 404 APPOINTMENT_SUBTYPE_NOT_FOUND | Motif inconnu ou d'un autre site. |
| 404 ROOM_NOT_FOUND | Salle inconnue ou d'un autre site. |
| 404 APPOINTMENT_NOT_FOUND |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Chercher des créneaux libres
GET/api/partner/v1/availability/slots#
Rend les créneaux libres d'un site pour un type ou un motif de rendez-vous : horaires du site, planning des vétérinaires, absences, jours fériés et rendez-vous déjà pris. Sans vet_id, tous les vétérinaires actifs de l'équipe du site sont parcourus. Un créneau déjà commencé n'est jamais rendu.
Avec from et to (31 jours au plus) : tous les créneaux de la fenêtre, triés par début puis par vétérinaire, d'une durée égale à duration_minutes, sinon à celle que prendrait la création (prestation du motif, motif, puis type). Sans to : le seul prochain créneau libre, tous vétérinaires confondus, cherché sur 30 jours à partir de from ou de maintenant ; sa durée est celle du motif, sinon du type, et duration_minutes n'est pas utilisé. Les créneaux de la fenêtre partent tous les quarts d'heure et se chevauchent : pour un même vétérinaire, réserver l'un en retire d'autres. La disponibilité des salles n'est pas vérifiée. Liste vide si rien n'est libre. Un créneau rendu n'est pas réservé : la création le rejuge.
Paramètres
| site_idrequête · uuid | Site cherché. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| type_idrequête · uuid | Type de rendez-vous. |
| subtype_idrequête · uuid | Motif ; son type est alors déduit. Avec |
| vet_idrequête · uuid | Limite la recherche à ce vétérinaire, membre de l'équipe du site. |
| fromrequête · date-time | Début de la fenêtre (inclus). Obligatoire avec |
| torequête · date-time | Fin de la fenêtre, postérieure à |
| duration_minutesrequête · integer | Durée des créneaux cherchés, en minutes. Utilisée seulement avec |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Les créneaux libres, en une seule page (`nextCursor` toujours `null`).
Champs de la réponse (2)
| itemsAvailabilitySlot[] | |
| vetIduuid | Vétérinaire libre sur ce créneau, à passer en |
| vetNamestring | Prénom et nom du vétérinaire. |
| startAtdate-time | Début du créneau. |
| endAtdate-time | Fin du créneau. |
| durationMinutesinteger | Durée du créneau, en minutes. |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD | Ni |
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
| 404 APPOINTMENT_TYPE_NOT_FOUND | Type de rendez-vous inconnu ou d'un autre site. |
| 404 APPOINTMENT_SUBTYPE_NOT_FOUND | Motif inconnu ou d'un autre site. |
| 404 VET_NOT_FOUND | Vétérinaire qui n'est pas dans l'équipe du site. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lister les motifs d'annulation
GET/api/partner/v1/cancellation-reasons#
Rend les sept motifs d'annulation acceptés par POST /appointments/{id}/cancel, avec leur libellé en français et l'obligation éventuelle d'une précision. La liste est la même pour toutes les organisations et ne dépend d'aucun site. Une seule page : nextCursor vaut toujours null.
Réponse
200Les motifs d'annulation.
Champs de la réponse (2)
| itemsCancellationReason[] | |
| codeenum | Code à passer en CLIENT_REQUESTVET_UNAVAILABLEPATIENT_RECOVEREDNO_SHOWEMERGENCYDUPLICATEOTHER |
| labelstring | Libellé en français (« Demande du client », « Vétérinaire indisponible », « Patient rétabli », « Client absent », « Urgence », « Doublon », « Autre »). |
| requiresNotesboolean |
|
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Lire la salle d'attente
GET/api/partner/v1/waiting-room#
Rend les animaux en salle d'attente d'un site : rendez-vous pointés arrivés (workflow: WAITING), ni annulés, ni non honorés, ni d'un animal décédé, arrivés depuis moins de 12 heures, du plus ancien arrivé au plus récent. Un animal appelé en consultation n'y figure plus. Instantané en une seule page : nextCursor vaut toujours null, et l'enveloppe porte en plus le site lu et le nombre d'animaux en attente.
Paramètres
| site_idrequête · uuid | Site lu. Obligatoire (ici ou dans l'en-tête) si l'organisation a ouvert plusieurs sites à l'application. |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Les animaux en attente, par heure d'arrivée croissante.
Champs de la réponse (4)
| itemsWaitingRoomEntry[] | |
| appointmentIduuid | Rendez-vous de la visite. |
| patientIduuid | Animal. peut être null |
| patientNamestring | Nom de l'animal. peut être null |
| clientIduuid | Client. peut être null |
| clientNamestring | Nom du client, tel que la clinique l'affiche. peut être null |
| vetIduuid | Vétérinaire du rendez-vous. peut être null |
| vetNamestring | Nom du vétérinaire. peut être null |
| appointmentTypeIduuid | Type de rendez-vous. peut être null |
| startAtdate-time | Heure prévue du rendez-vous. |
| arrivedAtdate-time | Heure d'arrivée de l'animal. |
| waitingMinutesinteger | Minutes écoulées depuis l'arrivée, au moment de l'appel. |
| urgentboolean |
|
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
| siteIduuid | Site lu. |
| totalWaitinginteger | Nombre d'animaux en attente (taille de |
Erreurs propres à cette opération
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé est inconnu, d'une autre organisation, ou non ouvert à l'application. |
Et les erreurs communes à toutes les opérations : erreurs et limites.