Mon séjour en Montagne

Documentation des widgets et API

La plateforme distribuée Mon séjour en Montagne met à votre disposition des Widgets et des API.
Pour tirer parti de ces outils, nous vous conseillons de vous référer à la documentation pour réaliser la meilleure intégration possible !

API d'export de données CRM

La récupération de données pour la CRM se fait en 2 temps :

  1. Authentification
  2. 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://api.msem.tech/api/location/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
}