API d'export de données CRM
La récupération de données pour la CRM se fait en 2 temps :
- Authentification
- Récupération de données
1a. Requête à l'API d'authentification
Pour utiliser le service de récupération de données, vous devez tout d'abord vous authentifier en utilisant notre service d'authentification OAuth2 en mode client_credentials
.
La requête à l'API d'authentification doit suivre les règles suivantes :
Méthode | POST |
---|---|
Endpoint | https://auth.msem.tech/api/oauth/token |
Header Content-Type | application/x-www-form-urlencoded |
Le body de la requête doit contenir les paramètres suivants encodés au format urlencoded, comme dans une query string :
Paramètres | Valeur | Obligatoire |
---|---|---|
scope | all | Oui |
client_id | le client_id qui vous a été délivré | Oui |
client_secret | le client_secret qui vous a été délivré | Oui |
Exemple d'appel avec la commande curl
curl --request POST 'https://auth.msem.tech/api/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-raw 'grant_type=client_credentials&scope=all&client_id=ID&client_secret=SECRET'
Note : Pensez à remplacer "
ID
" et "SECRET
" par les valeurs qui vous ont été délivrées.
1b. Réponse de l'API d'authentification
Si les paramètres d'authentification sont invalides, le service répondra avec une erreur 400 Bad request
Si les paramètres sont valides, le service d'authentification vous répondra avec un message au format JSON contenant une propriété access_token
.
Cet access_token
vous servira par la suite lors de la récupération de données.
Note : Ce token n'est valide que pour une durée d'une heure, vous devrez donc le demander à nouveau si nécessaire.
Exemple de réponse
{
"access_token": "7cf1dedb7d804c37b816bf8990f691773acbb0ef",
"token_type": "Bearer",
"expires_in": 3599,
"scope": "all"
}
2a. Requête à l'API de récupération de données
Une fois l'access_token
obtenu, vous pourrez l'utiliser dans vos requêtes d'extraction de données.
Les ventes seront remontées avec des contraintes que vous pourrez exprimer dans la requête :
- Séjours compris entre une date de début et une date de fin
- Séjours ayant lieu dans une station donnée
- Restriction sur le type de produit
Les paramètres de l'API de récupération de données sont :
Méthode | GET |
---|---|
Endpoint | https://services.msem.tech/api/crm/export |
Header Authorization | Bearer XYZ |
Note : pensez à remplacer "
XYZ
" par l'access_token obtenu précédemment.
L'ensemble des paramètres de la requête sont ensuite passés dans la query string :
Paramètres | Valeur | Obligatoire | Défaut |
---|---|---|---|
from | Date de début (YYYY-MM-DD) | Oui | |
to | Date de fin (YYYY-MM-DD) | Non | from |
resort | Restriction sur la station | Non | |
filter | Restriction sur le type de produit | Non | |
page | Page à extraire | Non | 1 |
Pour filter : Les valeurs admises sont :
- ESF : Les cours de ski esf
- LIFT : Les remontées mécaniques
- ASSU : L'assurance annulation
- HOT : Les hébergements
- SKI_RENTAL : La location de matériel
- TRANSFER : Les transferts
Pour resort : Les valeurs admises sont les codes resort MseM accessibles en ligne à l'URL suivante : https://services.msem.tech/api/public/resorts
Exemple d'appel avec la commande curl
curl --request GET 'https://services.msem.tech/api/crm/export?from=2021-12-26&to=2022-01-02' \
--header 'Authorization: Bearer 7cf1dedb7d804c37b816bf8990f691773acbb0ef'
2b. Réponse de l'API de récupération de données
Si l'access_token
a expiré ou est invalide, le service vous renverra une erreur 403 Forbidden
.
Si l'access_token
est valide alors le service vous renverra les ventes au format JSON.
Afin d'éviter les volumétries trop importantes, ces ventes vous sont remontées par paquets de 50.
L'objet réponse vous remonte l'ensemble des informations vous permettant de récupérer ces données en plusieurs fois si nécessaire :
Paramètres | Valeur |
---|---|
page | La page courante |
nbPage | Le nombre total de pages |
nbPerPage | Le nombre de ventes par page (50) |
total | Le nombre total de ventes |
items | Tableau des ventes pour cette page |
Exemple de réponse
{
"items": [],
"nbPage": 1,
"nbPerPage": 50,
"page": 1,
"total": 0
}