Demandes de devis
L’API de demandes de devis se sépare en différents endpoints selon le type de demande, chaque type définissant différents champs.
Ménage https://www.aladom.fr/restapi/quotation/quote-request/cleaning/
Aménagement du domicile https://www.aladom.fr/restapi/quotation/quote-request/home-furnishings/
Bricolage/Jardinage https://www.aladom.fr/restapi/quotation/quote-request/crafts/
Aide aux publics fragiles https://www.aladom.fr/restapi/quotation/quote-request/help/
Garde d’enfants https://www.aladom.fr/restapi/quotation/quote-request/childcare/
Cours de musique https://www.aladom.fr/restapi/quotation/quote-request/music/
Soutien scolaire https://www.aladom.fr/restapi/quotation/quote-request/tutoring/
Il existe cependant un tronc commun définit par la clé quote_request qui
est un objet imbriqué.
Note
Les endpoints listés ci-dessus ne concernent que l’envoie de leads vers notre base de données. Si vous souhaitez obtenir la liste des leads que vous avez reçu, il faut utiliser l’API Livraison de leads. Vous pouvez également mettre en place un webhook (Cf Webhook) pour recevoir les leads dès qu’ils vous sont envoyés.
Pour obtenir la liste des champs d’un endpoint, envoyez une requête OPTIONS
sur ce endpoint.
$ curl -XOPTIONS https://www.aladom.fr/restapi/quotation/quote-request/cleaning/
{
"name": "Cleaning Quote Request List",
"description": "",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
],
"actions": {
"POST": {
"subcategory": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Sous-cat\u00e9gorie",
"choices": [
{
"value": "menage",
"display_name": "menage"
},
{
"value": "repassage",
"display_name": "repassage"
}
]
},
"quote_request": {
"type": "nested object",
"required": true,
"read_only": false,
"label": "Quote request",
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "Id"
},
"city": {
"type": "field",
"required": true,
"read_only": false,
"label": "Ville",
"help_text": "Vous pouvez entrer l'ID de la ville sous forme d'entier, le code INSEE sous forme textuelle, ou bien l'alias (slug) sous forme textuelle."
},
"civility": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Civilit\u00e9",
"choices": [
{
"value": 2,
"display_name": "Monsieur"
},
{
"value": 1,
"display_name": "Madame"
}
]
},
"first_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Pr\u00e9nom",
"max_length": 255
},
"last_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Nom",
"max_length": 255
},
"email": {
"type": "email",
"required": true,
"read_only": false,
"label": "E-mail",
"max_length": 255
},
"address": {
"type": "string",
"required": false,
"read_only": false,
"label": "Adresse",
"max_length": 255
},
"phone": {
"type": "string",
"required": false,
"read_only": false,
"label": "T\u00e9l\u00e9phone",
"max_length": 20
},
"phone_alt": {
"type": "string",
"required": false,
"read_only": false,
"label": "T\u00e9l\u00e9phone alternatif",
"max_length": 20
},
"weekly_nb_hours": {
"type": "integer",
"required": false,
"read_only": false,
"label": "Nombre d'heures",
"min_value": 0,
"max_value": 65535
},
"frequency": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Fr\u00e9quence d'intervention",
"choices": [
{
"value": 1,
"display_name": "Intervention ponctuelle"
},
{
"value": 2,
"display_name": "Toutes les semaines"
},
{
"value": 3,
"display_name": "Tous les 15 jours"
},
{
"value": 4,
"display_name": "Tous les mois"
},
{
"value": 5,
"display_name": "\u00c0 d\u00e9terminer"
}
]
},
"start_date": {
"type": "string",
"required": false,
"read_only": false,
"label": "D\u00e9but de la prestation",
"max_length": 255
}
}
},
"intervention_type": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Type d'intervention",
"choices": [
{
"value": 1,
"display_name": "M\u00e9nage chez un particulier"
},
{
"value": 2,
"display_name": "Repassage chez un particulier"
},
{
"value": 3,
"display_name": "M\u00e9nage et repassage chez un particulier"
},
{
"value": 4,
"display_name": "M\u00e9nage/repassage et lavage de vitres chez un particulier"
},
{
"value": 5,
"display_name": "Lavage de vitres chez un particulier"
},
{
"value": 6,
"display_name": "M\u00e9nage de bureaux"
},
{
"value": 7,
"display_name": "M\u00e9nage d'une copropri\u00e9t\u00e9/syndic"
},
{
"value": 8,
"display_name": "M\u00e9nage d'un local commercial ou profession lib\u00e9rale"
},
{
"value": 9,
"display_name": "Nettoyage de vitres de bureaux"
}
]
},
"lodgment": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Type de logement",
"choices": [
{
"value": 1,
"display_name": "Appartement"
},
{
"value": 2,
"display_name": "Maison"
}
]
},
"surface": {
"type": "integer",
"required": false,
"read_only": false,
"label": "Superficie",
"help_text": "en m\u00b2",
"min_value": 0,
"max_value": 65535
},
"nb_staff": {
"type": "integer",
"required": false,
"read_only": false,
"label": "Nombre d'employ\u00e9s",
"min_value": 0,
"max_value": 65535
},
"has_contract": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Contrat en cours avec une autre soci\u00e9t\u00e9"
},
"operator_comment": {
"type": "string",
"required": false,
"read_only": false,
"label": "Commentaire opérateur",
}
}
}
}
Warning
La suite de ce document reprend les informations données par la
méthode OPTIONS de manière plus lisible. Cependant, il est
préférable de vous fier aux informations données par la méthode
OPTIONS, le délai de mise à jour de cette documentation
pouvant varier.
Vérification de l’acceptabilité d’un lead
Il est possible de vérifier si un lead est acceptable en envoyant en POST une requête JSON au endpoint suivant: https://www.aladom.fr/restapi/quotation/quote-request/is_acceptable/
Le corps de la requête est composé de la sous-catégorie et de l’email du lead à vérifier.
{
"subcategory": "menage",
"email": "jean.dupont@example.com"
}
Si le lead est acceptable le service renvoie la réponse JSON suivante:
{
"success": true
}
Sinon:
{
"success": false,
"error": "Nous avons déja reçu une demande de ce prospect dans les 30 derniers jours"
}
Tronc commun
Cette section décrit les champs présents dans l’objet imbriqué
quote_request présent dans chaque endpoint:
id
Type : integer
Lecture seule
Nom : Id
Ce champ n’est pas à renseigner lors de la création d’un lead. Vous pouvez le stocker dans votre SI de manière à pouvoir nous le communiquer en cas problème relatif à ce lead.
city
Type : string
Obligatoire
Nom : Ville
Ce champ est destiné à recevoir le code INSEE de la ville de la demande.
civility
Type : choice
Facultatif
Nom : Civilité
- Choix :
1Madame2Monsieur
Civilité de la personne à l’origine de la demande.
first_name
Type : string
Facultatif
Nom : Prénom
Taille max : 255
Prénom de la personne à l’origine de la demande.
last_name
Type : string
Facultatif
Nom : Nom
Taille max : 255
Nom de la personne à l’origine de la demande.
email
Type : string
Obligatoire
Nom : E-mail
Taille max : 255
E-mail de la personne à l’origine de la demande.
address
Type : string
Facultatif
Nom : Adresse
Taille max : 255
Rue de la personne à l’origine de la demande.
phone
Type : string
Obligatoire
Nom : Téléphone
Taille max : 20
Numéro de téléphone de la personne à l’origine de la demande.
phone_alt
Type : string
Facultatif
Nom : Téléphone alternatif
Taille max : 20
Autre numéro de téléphone de la personne à l’origine de la demande.
weekly_nb_hours
Type : integer
Facultatif
Nom : Nombre d’heures
Valeur min : 0
Valeur max : 65535
Nombre d’heures souhaité par semaine
frequency
Type : choice
Facultatif
Nom : Fréquence d’intervention
- Choix :
1Intervention ponctuelle2Toutes les semaines3Tous les 15 jours4Tous les mois5À déterminer
start_date
Type : string
Facultatif
Nom : Début de la prestation
Taille max : 255
Début de la prestation souhaité sous forme de texte libre.
Ménage
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"menage"Ménage"repassage"Repassage
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
intervention_type
Type : choice
Facultatif
Nom : Type d’intervention
- Choix :
1Ménage chez un particulier2Repassage chez un particulier3Ménage et repassage chez un particulier4Ménage/repassage et lavage de vitres chez un particulier5Lavage de vitres chez un particulier6Ménage de bureaux7Ménage d’une copropriété/syndic8Ménage d’un local commercial ou profession libérale9Nettoyage de vitres de bureaux
lodgement
Type : choice
Facultatif
Nom : Type de logement
- Choix :
1Appartement2Maison
surface
Type : integer
Facultatif
Nom : Superficie
Valeur min : 0
Valeur max : 65535
Superficie du logement en m².
nb_staff
Type : integer
Facultatif
Nom : Nombre d’employés
Valeur min : 0
Valeur max : 65535
Nombre d’employés dans l’entreprise le cas échéant.
has_contract
Type : boolean
Facultatif
Nom : Contrat en cours avec une autre société
Le demandeur a t’il actuellement un contrat avec une autre société de ménage ?
Aménagement du domicile
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"amenagement-domicile"Aménagement du domicile
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
first_name
Type : string
Facultatif
Nom : Prénom de la personne à aider
Taille max : 255
last_name
Type : string
Facultatif
Nom : Nom de la personne à aider
Taille max : 255
is_in_relationship
Type : boolean
Facultatif
Nom : Personne en couple
age
Type : string
Facultatif
Nom : Âge des personnes à aider
Taille max : 45
intervention_types
Type : multiple choice
Facultatif
Nom : Type d’intervention
- Choix :
1Installation d’ascenseurs2Mise à hauteur du mobilier existant3Elargissement de portes, pose de portes coulissantes4Installation de douches extra-plates5Installation d’une baignoire à porte6Pose de W.C surélevés7Installation de monte escalier
pathology
Type : string
Facultatif
Nom : Pathologies spécifiques
Bricolage/Jardinage
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"bricolage"Bricolage"jardinage"Jardinage
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
has_equipement
Type : boolean
Facultatif
Nom : Possède le matériel
Aide aux publics fragiles
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"aide-personnes handicapees"Aide aux personnes handicapées"langue-des-signes"Langue des signes"transport-handicape"Transport handicapé"aide-aux-personnes-agees"Aide aux personnes âgées"cuisine-pour-personnes-agees"Cuisine pour personnes âgées"livraison-des-courses"Livraison des courses"transport-personnes-agees"Transport personnes âgées"famille-accueil"Famille d’accueil"livraison-de-repas"Livraison de repas"auxiliaire-de-vie"Auxiliaire de vie"maison-retraite"Maison de retraite"residence-services-seniors"Résidence services seniors"usld"USLD"teleassistance"Téléassistance
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
first_name
Type : string
Facultatif
Nom : Prénom de la personne à aider
Taille max : 255
last_name
Type : string
Facultatif
Nom : Nom de la personne à aider
Taille max : 255
intervention_types
Type : multiple choice
Facultatif
Nom : Type d’intervention
- Choix :
1Garde à domicile2Livraison de courses3Livraison / Portage de repas4Préparation des repas5Aide à la mobilité (courses, médecin, …)6Aide à la toilette7Aide pour le ménage / repassage8Aide au lever / coucher9Aide à la prise de médicaments
care_time
Type : choice
Facultatif
Nom : Type de garde
- Choix :
1Journée2Nuit3Journée et nuit
weekdays
Type : multiple choice
Facultatif
Nom : Jours de garde
- Choix :
1Lundi2Mardi3Mercredi4Jeudi5Vendredi6Samedi7Dimanche
age
Type : string
Facultatif
Nom : Âge des personnes à aider
Taille max : 45
is_in_relationship
Type : boolean
Facultatif
Nom : Personne en couple
need_care
Type : boolean
Facultatif
Nom : Besoin de soins
pathology
Type : string
Facultatif
Nom : Pathologies spécifiques
help_plan
Type : string
Facultatif
Nom : Plan d’aide
other_services
Type : string
Facultatif
Nom : Autres intervenants
Autres intervenants au domicile de la personne.
Garde d’enfants
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"baby-sitting"Baby-sitting"garde-enfants"Garde d’enfants
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
nb_children
Type : integer
Facultatif
Nom : Nombre d’enfants
Valeur min : 0
Valeur max : 65535
ages
Type : multiple choice
Facultatif
Nom : Âge des enfants
- Choix :
00 ans11 an22 ans33 ans44 ans55 ans66 ans77 ans88 ans99 ans1010 ans1111 ans1212 ans1313 ans1414 ans1515 ans1616 ans1717 ans1818 ans
weekdays
Type : multiple choice
Facultatif
Nom : Jours de garde
- Choix :
1Lundi2Mardi3Mercredi4Jeudi5Vendredi6Samedi7Dimanche
holidays_included
Type : boolean
Facultatif
Nom : Besoin pendant les vacances scolaires
intervention_type
Type : choice
Facultatif
Nom : Type d’intervention
- Choix :
1Journée2Nuit3Journée et nuit
vehicle_required
Type : boolean
Facultatif
Nom : Véhicule obligatoire
duration
Type : choice
Facultatif
Nom : Durée du besoin
- Choix :
0À déterminer1Moins d’un mois2Plus d’un mois3Toute l’année scolaire
Cours de musique
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"cours-batterie"Cours de batterie"cours-chant"Cours de chant"cours-guitare"Cours de guitare"cours-piano"Cours de piano"cours-solfege"Cours de solfège"cours-violon"Cours de violon"autres-cours-musique"Autres cours de musique"cours-flute"Cours de flûte
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
delivery_types
Type : multiple choice
Facultatif
Nom : Type de prestation
- Choix :
1À domicile2Par skype3Par vidéo en accès libre
intervention_type
Type : choice
Obligatoire
Nom : Type d’intervention
- Choix :
0Préparation intensive1Suivi régulier pendant plusieurs mois
nb_students
Type : integer
Facultatif
Nom : Nombre de personnes concernées
Valeur min : 0
Valeur max : 65535
students_level
Type : choice
Facultatif
Nom : Niveau des élèves
- Choix :
1Débutant2Intermédiare3Confirmé
Soutien scolaire
subcategory
Type : choice
Obligatoire
Nom : Sous-catégorie
- Choix :
"cours-allemand"Cours d’allemand"cours-anglais"Cours d’anglais"cours-arabe"Cours d’arabe"cours-chinois"Cours de chinois"cours-espagnol"Cours d’espagnol"cours-français"Cours de français"cours-italien"Cours d’italien"cours-japonais"Cours de japonais"cours-portugais"Cours de portugais"cours-russe"Cours de russe"autres-cours-langue"Autres cours de langue"aide-aux-devoirs"Aide aux devoirs"cours-biologie"Cours de biologie"cours-dessin"Cours de dessin"cours-economie"Cours d’économie"cours-maths"Cours de maths"cours-physique-chimie"Cours de physique chimie"autres-cours-particuliers"Autres cours particuliers"cours-francais-littérature"Cours de français et de littérature
quote_request
Type : nested object
Obligatoire
Nom : Quote request
Cf. Tronc commun
intervention_type
Type : choice
Obligatoire
Nom : Type d’intervention
- Choix :
0Préparation intensive1Suivi régulier pendant plusieurs mois
nb_students
Type : integer
Facultatif
Nom : Nombre de personnes concernées
Valeur min : 0
Valeur max : 65535
student_names
Type : string
Facultatif
Nom : Nom des élèves
Taille max : 50
students_type
Type : choice
Obligatoire
Nom : Type d’élèves
- Choix :
1Primaire2Collège3Lycée4Étudiant5Adulte
students_class
Type : string
Facultatif
Nom : Classe des élèves
Taille max : 100
students_level
Type : choice
Obligatoire
Nom : Niveau des élèves
- Choix :
1Débutant2Intermédiare3Confirmé
Webhook
Si vous avez mis en place un webhook (Cf. Webhooks) vous recevrez les
nouveaux leads directement sur votre webhook sous le nom d’événement :
new_lead.
Le champ type précisera le type de demande de devis. En découleront les
champs précisés dans le champ object. Liste des types possibles :
quotation.CleaningQuoteRequest: Ménagequotation.HomeFurnishingsQuoteRequest: Aménagement du domicilequotation.CraftsQuoteRequest: Bricolage/Jardinagequotation.HelpQuoteRequest: Aide aux publics fragilesquotation.ChildcareQuoteRequestGarde d’enfantsquotation.MusicQuoteRequestCours de musiquequotation.TutoringQuoteRequestSoutien scolaire
Exemple de données reçues
{
"event": "new_lead",
"type": "quotation.CleaningQuoteRequest",
"object": {
"has_contract": null,
"intervention_type": 3,
"lodgment": 1,
"nb_staff": null,
"quote_request": {
"address": null,
"city": "51454",
"civility": 2,
"email": "jean.dupont@exemple.fr",
"first_name": "Jean",
"frequency": 3,
"id": 123456,
"last_name": "Dupont",
"phone": "0123456789",
"phone_alt": "",
"start_date": "Dans moins d'un mois",
"weekly_nb_hours": 2
},
"subcategory": "menage",
"surface": 70
}
}
Warning
Si une erreur survient lors de l’envoie du lead (si votre serveur est indisponible par exemple), 4 nouvelles tentatives seront effectuées avant d’abandonner complètement. Afin de ne pas rater de leads, vous pouvez mettre en place une tâche cron chargée de récupérer les derniers leads reçus et vérifier qu’ils sont bien enregistrés dans votre base de données une fois par heure par exemple. Cf Livraison de leads