{"components":{"responses":{"BadRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Requête invalide"}},"schemas":{"BookingDiscoveryOffer":{"properties":{"currency":{"type":"string"},"currencyMinorUnit":{"type":"integer"},"distanceKm":{"description":"Distance à vol d’oiseau entre ce cabinet et le centre demandé. Présente uniquement pour une recherche géographique.","format":"double","minimum":0,"type":"number"},"duration":{"type":"integer"},"isMonSoutienPsy":{"description":"Motif déclaré Mon soutien psy par le praticien. Ne constitue ni une vérification officielle du conventionnement ni une garantie de remboursement.","type":"boolean"},"latitude":{"description":"Latitude WGS84 du lieu de consultation de cette offre. Absente en visio ou si les coordonnées sont inconnues.","format":"double","maximum":90,"minimum":-90,"type":"number"},"locationKey":{"type":"string"},"locationLabel":{"type":"string"},"longitude":{"description":"Longitude WGS84 du lieu de consultation de cette offre. Absente en visio ou si les coordonnées sont inconnues.","format":"double","maximum":180,"minimum":-180,"type":"number"},"modality":{"enum":["in_person","teleconsultation"],"type":"string"},"practitionerId":{"format":"uuid","type":"string"},"practitionerName":{"type":"string"},"price":{"description":"Montant dans l’unité mineure de la devise. Absent si non renseigné.","type":"integer"},"profession":{"type":"string"},"profileUrl":{"format":"uri","type":"string"},"serviceId":{"format":"uuid","type":"string"},"serviceName":{"type":"string"},"slots":{"items":{"$ref":"#/components/schemas/BookingDiscoverySlot"},"type":"array"},"timezone":{"type":"string"}},"required":["practitionerId","practitionerName","profession","profileUrl","serviceId","serviceName","duration","modality","locationKey","locationLabel","timezone","currency","currencyMinorUnit","isMonSoutienPsy","slots"],"type":"object"},"BookingDiscoveryResponse":{"properties":{"computedAt":{"format":"date-time","type":"string"},"nextAfter":{"format":"uuid","type":"string"},"offers":{"items":{"$ref":"#/components/schemas/BookingDiscoveryOffer"},"type":"array"}},"required":["computedAt","offers"],"type":"object"},"BookingDiscoverySlot":{"properties":{"bookingUrl":{"description":"Lien Deiz prérempli. Son ouverture ne réserve rien.","format":"uri","type":"string"},"end":{"format":"date-time","type":"string"},"start":{"format":"date-time","type":"string"}},"required":["start","end","bookingUrl"],"type":"object"},"Error":{"properties":{"code":{"description":"Code d'erreur HTTP","type":"integer"},"details":{"additionalProperties":{"type":"string"},"description":"Messages d'erreur localisés par locale (clé = locale, valeur = message).\nLa locale \"fr\" est toujours présente.\nExemple: { \"fr\": \"Ce créneau n'est plus disponible\" }\n","example":{"fr":"Ce créneau n'est plus disponible"},"type":"object"},"fieldErrors":{"description":"Erreurs de validation par champ","items":{"properties":{"field":{"description":"Nom du champ en erreur","type":"string"},"reason":{"description":"Message d'erreur pour ce champ (en français)","type":"string"}},"required":["field","reason"],"type":"object"},"type":"array"},"message":{"description":"Message d'erreur court, précis et actionnable en français.\nExemple: \"Email déjà utilisé\", \"Créneau indisponible\", \"Client introuvable\"\n","type":"string"}},"required":["code","message"],"type":"object"}}},"info":{"description":"Recherche publique en lecture seule. Les liens fournis préremplissent la réservation, sans retenir le créneau.","title":"Deiz — recherche de rendez-vous","version":"1.0.0"},"openapi":"3.0.1","paths":{"/booking/discovery":{"get":{"description":"Recherche en lecture seule, sans compte. Précisez une discipline, une ville ou des coordonnées avec un rayon pour le cabinet,\net une période de 31 jours maximum. Les dates sont interprétées dans le fuseau de chaque praticien.\nLes créneaux sont calculés à la demande et ne sont pas retenus. Utilisez bookingUrl tel quel.\nLa pagination parcourt les praticiens : une page vide peut comporter nextAfter.\n","operationId":"searchBookingDiscovery","parameters":[{"description":"Profession recherchée en texte libre, sans distinction de casse ou d’accents. Toutes les professions référencées sont éligibles, par exemple psychologue, kinésiologue ou orthophoniste.","in":"query","name":"profession","required":true,"schema":{"maxLength":100,"minLength":1,"type":"string"}},{"in":"query","name":"modality","required":true,"schema":{"enum":["in_person","teleconsultation"],"type":"string"}},{"description":"Si true, uniquement les motifs publics déclarés Mon soutien psy par le praticien. Utiliser profession=psychologue pour chercher des psychologues. Ce marquage ne constitue pas une vérification officielle du conventionnement et ne garantit pas le remboursement. Absent ou false : aucun filtre sur ce dispositif.","in":"query","name":"monSoutienPsy","schema":{"default":false,"type":"boolean"}},{"description":"Ville exacte pour le cabinet si latitude/longitude/radiusKm ne sont pas fournis. Ne pas combiner ville et recherche géographique.","in":"query","name":"city","schema":{"maxLength":100,"type":"string"}},{"description":"Latitude WGS84 du centre de recherche. Fournir aussi longitude et radiusKm. Cabinet uniquement.","in":"query","name":"latitude","schema":{"format":"double","maximum":90,"minimum":-90,"type":"number"}},{"description":"Longitude WGS84 du centre de recherche. Fournir aussi latitude et radiusKm. Cabinet uniquement.","in":"query","name":"longitude","schema":{"format":"double","maximum":180,"minimum":-180,"type":"number"}},{"bornes incluses. Les cabinets sans coordonnées connues sont exclus. Fournir latitude et longitude":null,"description":"Rayon en kilomètres à vol d’oiseau autour du point fourni","in":"query","name":"radiusKm","sans city.":null,"schema":{"format":"double","maximum":500,"minimum":0.1,"type":"number"}},{"in":"query","name":"from","required":true,"schema":{"format":"date","type":"string"}},{"in":"query","name":"to","required":true,"schema":{"format":"date","type":"string"}},{"description":"Valeur nextAfter reçue avec les mêmes critères.","in":"query","name":"after","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"limit","schema":{"default":6,"maximum":10,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingDiscoveryResponse"}}},"description":"Offres et créneaux publics, sans donnée patient"},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La recherche n’a pas pu aboutir."}},"security":[],"summary":"Rechercher des créneaux publics et leurs liens de réservation","tags":["booking"]}}},"servers":[{"url":"https://rdv.deiz.fr/api"}]}
