vaccin.click
vaccin.click copied to clipboard
Utiliser l'API interne de Doctolib
Pour améliorer la stabilité de l'extension, il est proposé d'utiliser l'API interne de Doctolib.
Voici une documentation rapide du truc :
{urlCompleteDuCentre}.json
Permet d'obtenir des métadonnées qui peuvent être utilises mais pas essentielles
Exemple : https://www.doctolib.fr/pharmacie/paris/pharmacie-faidherbe.json
Exemple de réponse :
{
"data": {
"profile": {
"is_directory": false,
"organization": true,
"subtitle": "Pharmacie",
"id": 237135,
"name": "Pharmacie Faidherbe ",
"name_with_title": "Pharmacie Faidherbe",
"name_with_title_and_determiner": "Pharmacie Faidherbe",
"bio": "Votre pharmacie vous propose des TESTS antigéniques pour le Covid19 sur RDV\n\nLes tests antigéniques peuvent réalisés sur toutes les personnes asymptomatiques, \nsi personnes asymptomatiques de moins de 4 jours et ayant entre 18 et 65 ans",
"website_url": "",
"country": "fr",
"covid_profile_message": null,
"freemium": false,
"pictures": [{
"public_id": "mlrbb0iffkl24xsgttip"
}, {
"public_id": "vihwppoa1dowxloacfxv"
}, {
"public_id": "pwlol0e5a2ebmbhgmfp5"
}],
"cover_picture": {
"public_id": "vihwppoa1dowxloacfxv"
},
"avatar_picture": {
"public_id": "mlrbb0iffkl24xsgttip"
},
"agendas_with_covid_vaccination_for_general_practitioners": [],
"vaccination_or_gp_speciality": false,
"all_organizations_without_vaccination_feature": true,
"vaccination_center_with_pfizer_moderna": false
},
"details": [{
"insurance_card": null,
"practice_id": 159640,
"regulation_sector": null,
"third_party_payer": null,
"display_payment_means": false,
"payment_means": {
"cash": false,
"check": false,
"credit_card": false
}
}],
"practitioners": [],
"fees": [],
"places": [{
"id": "practice-159640",
"address": "43 Rue Faidherbe",
"zipcode": "75011",
"city": "Paris",
"floor": null,
"latitude": 48.8537132,
"longitude": 2.3821604,
"elevator": false,
"handicap": false,
"formal_name": "Pharmacie Faidherbe",
"reception_info": null,
"full_address": "43 Rue Faidherbe, 75011 Paris",
"opening_hours": [{
"day": 1,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 2,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 3,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 4,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 5,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 6,
"ranges": [["09:30", "19:30"]],
"enabled": true
}],
"practice_ids": [159640],
"is_aphp": false,
"aphp_url": "http://www.aphp.fr/contenu/combien-ca-coute",
"name": "Pharmacie Faidherbe",
"short_name": null,
"parking": {
"name": "Ledru Rollin Parking SA",
"full_address": "121 Avenue Ledru-Rollin, Paris"
},
"emergency_number_details": {
"number": "15",
"type": "Samu",
"display_title": false
},
"stations": [{
"transport_type": "metro",
"lines": ["9"],
"name": "Charonne"
}, {
"transport_type": "rer",
"lines": ["A", "D"],
"name": "Paris - Gare De Lyon"
}, {
"transport_type": "rer",
"lines": ["A"],
"name": "Nation"
}]
}]
},
"jsonld": {
"profile": {
"@context": "http://schema.org/",
"@type": "Hospital",
"name": "Pharmacie Faidherbe ",
"description": "Votre pharmacie vous propose des TESTS antigéniques pour le Covid19 sur RDV\n\nLes tests antigéniques peuvent réalisés sur toutes les personnes asymptomatiques, \nsi personnes asymptomatiques de moins de 4 jours et ayant entre 18 et 65 ans",
"medicalSpecialty": "Pharmacie",
"legalName": null,
"url": "/pharmacie/paris/pharmacie-faidherbe",
"image": "//res.cloudinary.com/doctolib/image/upload/q_auto:eco,f_auto/mlrbb0iffkl24xsgttip.jpg",
"address": {
"@type": "PostalAddress",
"name": "Pharmacie Faidherbe",
"streetAddress": "43 Rue Faidherbe",
"postalCode": "75011",
"addressLocality": "Paris"
},
"paymentAccepted": "",
"availableService": [],
"telephone": null,
"openingHours": ["Mo 09:00-20:00", "Tu 09:00-20:00", "We 09:00-20:00", "Th 09:00-20:00", "Fr 09:00-20:00", "Sa 09:30-19:30"]
},
"breadcrumbs": {
"@context": "http://schema.org/",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Thing",
"name": "Doctolib",
"id": "Doctolib",
"url": null
}
}, {
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Thing",
"name": "Pharmacie",
"id": "Pharmacie",
"url": "/pharmacie"
}
}, {
"@type": "ListItem",
"position": 3,
"item": {
"@type": "Thing",
"name": "Paris",
"id": "Paris",
"url": "/pharmacie/ile-de-france-departement-de-paris-paris"
}
}]
}
},
"meta": {
"title": "Pharmacie Faidherbe, Pharmacie à Paris : Prenez rendez-vous en ligne",
"description": "Prenez RDV en ligne avec Pharmacie Faidherbe: Pharmacie. Adresse : 43 Rue Faidherbe, 75011 Paris.\n",
"page_type": "establishmentsProfiles"
},
"seo": {
"about_doctolib": {
"title": "À propos de Doctolib",
"links": [{
"name": "Vaccination COVID-19",
"url": "/vaccination-covid-19",
"encoded": false,
"target": "_blank",
"hidden": false,
"key": "vaccination_covid"
}, {
"name": "Test COVID - Depistage",
"url": "/centre-depistage-covid",
"encoded": false,
"target": "_blank",
"hidden": false,
"key": "test_covid"
}, {
"name": "Test PCR",
"url": "/depistage-covid-19-pcr-prelevement-naso-pharynge",
"encoded": false,
"target": "_blank",
"hidden": false,
"key": "test_pcr"
}, {
"name": "Consultation vidéo - Téléconsultation",
"url": "/video_consultation",
"encoded": false,
"target": "_blank",
"key": "video_consultation"
}, {
"name": "À propos de nous",
"url": "https://about.doctolib.fr",
"target": "_self",
"encoded": true,
"key": "about_us"
}, {
"name": "Carrières",
"url": "https://careers.doctolib.fr?origin=footer",
"target": "_blank",
"encoded": true,
"key": "jobs"
}, {
"name": "Presse",
"url": "https://about.doctolib.fr/presse",
"target": "_self",
"encoded": true,
"key": "press"
}, {
"name": "Besoin d'aide ?",
"url": "/help?origin=help-desktop",
"target": "_self",
"encoded": true,
"key": "help"
}, {
"name": "Notifications frauduleuses (tentatives de phishing)",
"url": "/help?origin=help-desktop#section=6\u0026article=4",
"target": "_self",
"encoded": false,
"key": "phishing"
}, {
"name": "Doctolib Deutschland",
"url": "https://www.doctolib.de",
"target": "_self",
"encoded": true,
"key": "doctolib_de"
}]
},
"about_doctolib_pro": {
"title": "Pour les professionnels de santé",
"links": [{
"name": "Logiciel de gestion Doctolib Pro",
"url": "https://info.doctolib.fr?origin=home-footer\u0026utm_button=footer\u0026utm_content-group=other\u0026utm_page-url=https%3A%2F%2Fwww.doctolib.fr%2Fpharmacie%2Fparis%2Fpharmacie-faidherbe.json\u0026utm_website=doctolib_patients",
"target": "_blank",
"encoded": true,
"key": "bms"
}, {
"name": "Doctolib Community",
"url": "https://community.doctolib.com/",
"target": "_blank",
"encoded": true,
"key": "community"
}]
},
"popular_links": {
"title": "Recherches fréquentes",
"links": [{
"name": "Cabinet médical Paris",
"url": "/cabinet-medical/paris"
}, {
"name": "Cabinet dentaire Paris",
"url": "/cabinet-dentaire/paris"
}, {
"name": "Centre de santé Paris",
"url": "/centre-de-sante/paris"
}, {
"name": "Clinique privée Paris",
"url": "/clinique-privee/paris"
}, {
"name": "Hôpital public Paris",
"url": "/hopital-public/paris"
}, {
"name": "Établissement de Santé Privé d'Intérêt Collectif (ESPIC) Paris",
"url": "/espic-etablissement-de-sante-prive-d-interet-collectif/paris"
}, {
"name": "Centre médical et dentaire Paris",
"url": "/centre-medical-et-dentaire/paris"
}, {
"name": "Maison de santé Paris",
"url": "/maison-de-sante/paris"
}, {
"name": "Cabinet paramédical Paris",
"url": "/cabinet-paramedical/paris"
}, {
"name": "Centre laser et esthétique Paris",
"url": "/centre-laser-et-esthetique/paris"
}]
},
"similar_links": {
"title": "Recherches associées",
"links": [{
"name": "Pharmacie Saint-Mandé",
"url": "/pharmacie/saint-mande"
}, {
"name": "Pharmacie Le Kremlin-Bicêtre",
"url": "/pharmacie/le-kremlin-bicetre"
}, {
"name": "Pharmacie Bagnolet",
"url": "/pharmacie/bagnolet"
}, {
"name": "Pharmacie Ivry-sur-Seine",
"url": "/pharmacie/ivry-sur-seine"
}, {
"name": "Pharmacie Levallois-Perret",
"url": "/pharmacie/levallois-perret"
}, {
"name": "Pharmacie Vincennes",
"url": "/pharmacie/vincennes"
}, {
"name": "Pharmacie Aubervilliers",
"url": "/pharmacie/aubervilliers"
}, {
"name": "Pharmacie Issy-les-Moulineaux",
"url": "/pharmacie/issy-les-moulineaux"
}, {
"name": "Pharmacie Montreuil",
"url": "/pharmacie/montreuil"
}, {
"name": "Pharmacie Paris",
"url": "/pharmacie/paris"
}]
}
}
}
/booking/{urlUnique}.json
ou /booking/{id}.json
Permet d'obtenir les spécifications d'un centre
-
{urlUnique}
est la fin de l'url complète. Exemple : https://www.doctolib.fr/booking/pharmacie-faidherbe.json -
{id}
est l'id dispo sousdata.profile.id
dans le{urlCompleteDuCentre}.json
. Exemple : https://www.doctolib.fr/booking/237135.json
Exemple de réponse :
{
"data": {
"profile": {
"id": 237135,
"name_with_title_and_determiner": "Pharmacie Faidherbe",
"name_with_title": "Pharmacie Faidherbe",
"speciality": null,
"organization": true,
"redirect_url": null,
"language_list": "Français"
},
"specialities": [{
"id": 3097,
"name": "Pharmacien",
"kind": "medical"
}],
"visit_motive_categories": [],
"visit_motives": [{
"id": 2607211,
"name": "Dépistage COVID-19 test antigénique (prélèvement naso-pharyngé)",
"visit_motive_category_id": null,
"organization_id": 128541,
"speciality_id": 3097,
"ref_visit_motive_id": 6236,
"position": 2,
"telehealth": false,
"vaccination_days_range": 0,
"vaccination_motive": false,
"covid_vaccination_set_appointment_organization": false,
"first_shot_motive": false,
"allow_new_patients": true,
"allow_new_patients_on_insurance_sector": null,
"configurations": null
}, {
"id": 2764585,
"name": "1ère injection vaccin COVID-19 (AstraZeneca)",
"visit_motive_category_id": null,
"organization_id": 128541,
"speciality_id": 3097,
"ref_visit_motive_id": 7107,
"position": 3,
"telehealth": false,
"vaccination_days_range": 80,
"vaccination_motive": true,
"covid_vaccination_set_appointment_organization": false,
"first_shot_motive": false,
"allow_new_patients": true,
"allow_new_patients_on_insurance_sector": null,
"configurations": null
}, {
"id": 2848143,
"name": "2de injection vaccin COVID-19 (AstraZeneca)",
"visit_motive_category_id": null,
"organization_id": 128541,
"speciality_id": 3097,
"ref_visit_motive_id": 7108,
"position": 4,
"telehealth": false,
"vaccination_days_range": 0,
"vaccination_motive": true,
"covid_vaccination_set_appointment_organization": false,
"first_shot_motive": false,
"allow_new_patients": true,
"allow_new_patients_on_insurance_sector": null,
"configurations": null
}, {
"id": 2848144,
"name": "Injection unique vaccin COVID-19 (Janssen)",
"visit_motive_category_id": null,
"organization_id": 128541,
"speciality_id": 3097,
"ref_visit_motive_id": 7945,
"position": 5,
"telehealth": false,
"vaccination_days_range": 0,
"vaccination_motive": true,
"covid_vaccination_set_appointment_organization": false,
"first_shot_motive": false,
"allow_new_patients": true,
"allow_new_patients_on_insurance_sector": null,
"configurations": null
}],
"agendas": [{
"id": 400342,
"booking_disabled": false,
"booking_temporary_disabled": false,
"landline_number": "01 43 71 41 40",
"anonymous": true,
"organization_id": 128541,
"visit_motive_ids_by_practice_id": {
"159640": [2607211, 2764585, 2848143, 2848144]
},
"visit_motive_ids": [2607211, 2764585, 2848143, 2848144],
"visit_motive_ids_only_for_doctors": null,
"practice_id": 159640,
"speciality_id": 3097,
"practitioner_id": null,
"insurance_sector_enabled": false,
"equipment_agendas_required": false
}],
"places": [{
"id": "practice-159640",
"address": "43 Rue Faidherbe",
"zipcode": "75011",
"city": "Paris",
"floor": null,
"latitude": 48.8537132,
"longitude": 2.3821604,
"elevator": false,
"handicap": false,
"formal_name": "Pharmacie Faidherbe",
"reception_info": null,
"full_address": "43 Rue Faidherbe, 75011 Paris",
"opening_hours": [{
"day": 1,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 2,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 3,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 4,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 5,
"ranges": [["09:00", "20:00"]],
"enabled": true
}, {
"day": 6,
"ranges": [["09:30", "19:30"]],
"enabled": true
}, {
"day": 0,
"ranges": [["09:00", "13:00"]],
"enabled": false
}],
"name": "Pharmacie Faidherbe",
"practice_ids": [159640],
"is_aphp": false,
"aphp_url": "http://www.aphp.fr/contenu/combien-ca-coute",
"payment_means": null,
"regulation_sector": null,
"insurance_card": null
}],
"practitioners": [],
"availabilities_preview_compatible": false,
"vaccination_center": false,
"number_future_vaccinations": 0,
"has_new_patient_rule": false
}
}
availabilities.json?start_date={date}&visit_motive_ids={visit_motive_ids}&agenda_ids={agenda_ids}&practice_ids={practice_ids}
Permet d'obtenir les prochains créneaux disponibles.
-
{date}
est la date du jour au format2021-05-20
. -
{visit_motive_ids}
est la liste desvisit_motive_id
. Attention, il faut sélectionner les visit_motive pour les première injection uniquement. Perso je cherche"1ère injection vaccin COVID-19" || "1re injection vaccin COVID-19"
dans le champdata.visit_motives.name
du endpoint/booking
. -
{agenda_ids}
est la liste de tout les agendas au format{idA}-{id2}-{id3}
(parfois il n'y a qu'un agenda mais aprfois plusieurs, dans le doute, je les mets tous). -
{practice_ids}
(je sais plus trop ce que c'est mais en gros je mets la valeur dedata.places[0].practice_ids[0]
dedans).
Exemple : https://pro.doctolib.fr/availabilities.json?start_date=2021-05-20&visit_motive_ids=2764585&agenda_ids=400342&practice_ids=159640
Exemple de réponse :
{
"availabilities": [{
"date": "2021-05-20",
"slots": [],
"substitution": null
}, {
"date": "2021-05-21",
"slots": ["2021-05-21T10:35:00.000+02:00", "2021-05-21T12:20:00.000+02:00", "2021-05-21T12:35:00.000+02:00", "2021-05-21T12:50:00.000+02:00", "2021-05-21T13:35:00.000+02:00", "2021-05-21T14:35:00.000+02:00", "2021-05-21T14:50:00.000+02:00", "2021-05-21T15:20:00.000+02:00", "2021-05-21T15:35:00.000+02:00", "2021-05-21T15:50:00.000+02:00", "2021-05-21T16:20:00.000+02:00", "2021-05-21T16:50:00.000+02:00", "2021-05-21T17:05:00.000+02:00", "2021-05-21T17:20:00.000+02:00", "2021-05-21T17:35:00.000+02:00"],
"substitution": null
}],
"total": 15
}
Il y a d'autres trucs mais c'est déjà un bon début… :)
Pour le profile il y a aussi : https://www.doctolib.fr/profiles/{profileId}.json
si on connait l'id
.
Wow génial, effectivement il y a moyen d'améliorer pas mal les performances et la stabilité avec ça. Et sûrement de stresser moins les serveurs de Doctolib aussi.
Super si c'est utile. Pour info/pour avoir des exemples plus complet, vous pouvez regarder ce que j'ai fait ici :
- https://framagit.org/DavidLibeau/vaccin-covid19/-/blob/main/datagouv-importer/app.js
- https://framagit.org/DavidLibeau/notification-vaccin/-/blob/main/desktop/preload.js#L48
- https://framagit.org/DavidLibeau/notification-vaccin/-/blob/main/api.php (même faire des requêtes pour tester : https://dav.li/notification-vaccin/api.php?doctolib=pharmacie-faidherbe sachant que vous allez voir que l'endpoint
availabilities.json
a plus de protection Cloudflare que les autres et donc mon serveur est bloqué…).
Pour /avaiabilities.json
:
Le practice_ids
doit contenir la liste du/des praticien(s). Dans les centres médicaux plusieurs médecins y travaillent, ce champ permet de filtrer par praticien.
exemple ici : https://www.doctolib.fr/centre-de-sante/paris/sante-plus-centre-victor-masse.json
{
"data": {
"profile": {
"is_directory": false,
"organization": true,
"subtitle": "Centre de santé",
"id": 8929,
"name": "Santé PLUS - Centre Victor Massé",
"name_with_title": "Santé PLUS - Centre Victor Massé",
"name_with_title_and_determiner": "Santé PLUS - Centre Victor Massé",
"bio": "Le centre médical du spectacle vous accueille rue Victor Massé à Paris 9, du lundi au vendredi. \n\nCe centre existe depuis 1956 et accueille tous les patients pour tous types de soins médicaux (médecine générale, cardiologie, dermatologie, gynécologie, gastro-entérologie et psychiatrie). Nous proposons aussi une offre dentaire élargie comprenant des soins, des prothèses et une radio panoramique dentaire. Le centre est en pleine mutation, un changement de direction avec des rénovations est attendu dans les plus brefs délais.\nLes médecins généralistes vous accueillent également sans rendez-vous à tout moment du lundi au jeudi de 8h30 à 19h et le vendredi de 8h30 à 18h.",
"website_url": "https://www.sante-plus.com/",
"country": "fr",
"covid_profile_message": null,
"freemium": false,
"pictures": [
{
"public_id": "cjb7vbirdbgwdyp7m85m"
}
],
"cover_picture": {
"public_id": "gnrh5fkg2q06hjk1xkjs"
},
"avatar_picture": {
"public_id": "cjb7vbirdbgwdyp7m85m"
},
"agendas_with_covid_vaccination_for_general_practitioners": [],
"vaccination_or_gp_speciality": false,
"all_organizations_without_vaccination_feature": true,
"vaccination_center_with_pfizer_moderna": false
},
"details": [
{
"insurance_card": true,
"practice_id": 4920,
"regulation_sector": "Etablissement conventionné",
"third_party_payer": "national_and_additional",
"display_payment_means": true,
"temporary_message": "Retrouvez-vous sur notre site internet : https://www.sante-plus.com/.",
"payment_means": {
"cash": true,
"check": true,
"credit_card": true
}
}
],
"practitioners": [
{
"id": 22973831,
"profile_id": 200003,
"name_with_title": "Dr Driss ABOULKARAM",
"cloudinary_public_id": "mbkpkuupensbsquzor10",
"speciality": "Gynécologue médical et obstétrique",
"speciality_with_gender": "Gynécologue médical et obstétrique",
"link": "/gynecologue/paris/driss-aboulkaram"
},
{
"id": 19261651,
"profile_id": 167524,
"name_with_title": "Dr Mariam AHMEDOU",
"cloudinary_public_id": "yy4tyvlt4asro4ykcb3y",
"speciality": "Médecin généraliste",
"speciality_with_gender": "Médecin généraliste",
"link": "/medecin-generaliste/paris/mariam-ahmedou"
},
{
"id": 27226155,
"profile_id": 229950,
"name_with_title": "Dr Marie BARON",
"cloudinary_public_id": "qpwp60kd2j4qwjpckjre",
"speciality": "Chirurgien-dentiste",
"speciality_with_gender": "Chirurgien-dentiste",
"link": "/dentiste/paris/marie-baron"
}
],
"fees": [],
"places": [
{
"id": "establishment-5709",
"address": "21 bis rue Victor Massé",
"zipcode": "75009",
"city": "PARIS",
"floor": null,
"latitude": 48.8806829,
"longitude": 2.3382851,
"elevator": false,
"handicap": false,
"formal_name": "Centre Médical du Spectacle",
"landline_number": null,
"reception_info": null,
"full_address": "21 bis rue Victor Massé, 75009 PARIS",
"opening_hours": null,
"practice_ids": [
9549,
4920
],
"is_aphp": false,
"aphp_url": "http://www.aphp.fr/contenu/combien-ca-coute",
"name": "Centre Médical du Spectacle",
"short_name": null,
"parking": {
"name": "MILTON",
"full_address": "33 Rue Milton, 75009 Paris"
},
"stations": [
{
"transport_type": "metro",
"lines": [
"12",
"2"
],
"name": "Pigalle"
},
{
"transport_type": "metro",
"lines": [
"12"
],
"name": "Saint-Georges"
},
{
"transport_type": "rer",
"lines": [
"A"
],
"name": "Auber"
}
]
}
]
}
}
Pour visit_motive_ids
il faut passer les refVisitMotiveIds
ce sont les ids parents :
[
{
"id": 6970,
"name": "1re injection vaccin COVID-19 (Pfizer-BioNTech)"
},
{
"id": 7005,
"name": "1re injection vaccin COVID-19 (Moderna)"
},
{
"id": 7107,
"name": "1ère injection vaccin COVID-19 (AstraZeneca)"
},
{
"id": 7945,
"name": "Injection unique vaccin COVID-19 (Janssen)"
}
]
Et attention aux Slot
qui dans certains cas comme ci-dessus sont un array
de Date ISO 8601
, mais parfois des objects
plus complexes.
{
"availabilities": [
{
"date": "2021-05-21",
"slots": [
{
"agenda_id": 459768,
"practitioner_agenda_id": null,
"start_date": "2021-05-21T10:40:00.000+02:00",
"end_date": "2021-05-21T10:50:00.000+02:00",
"steps": [
{
"agenda_id": 459768,
"practitioner_agenda_id": null,
"start_date": "2021-05-21T10:40:00.000+02:00",
"end_date": "2021-05-21T10:50:00.000+02:00",
"visit_motive_id": 2782508
},
{
"agenda_id": 459768,
"practitioner_agenda_id": null,
"start_date": "2021-08-09T10:10:00.000+02:00",
"end_date": "2021-08-09T10:20:00.000+02:00",
"visit_motive_id": 2782509
}
]
}
],
"substitution": null
}
],
"total": 144
}
VS
{
"availabilities": [
{
"date": "2021-05-21",
"slots": [
"2021-05-21T10:35:00.000+02:00",
"2021-05-21T12:20:00.000+02:00",
"2021-05-21T12:35:00.000+02:00",
"2021-05-21T12:50:00.000+02:00",
"2021-05-21T13:35:00.000+02:00",
"2021-05-21T14:35:00.000+02:00",
"2021-05-21T14:50:00.000+02:00"
],
"substitution": null
}
],
"total": 15
}
Hello , Savez vous si il existe une API pour trouver tous les spécialistes dans une ville précise ?