Back to top

Clic & Surf V1 API - Documentation

Présentation

L’API Clic & Surf V1 permet de mettre à disposition des partenaires certaines données d’usage provenant des offres Wifi contenues dans Clic & Surf selon des droits et autorisations définis par les administrateurs. Cette mise à disposition s’effectue aux formats JSON. L’API offre un système complet, flexible et simple d’utilisation pour la récupération des données de votre offre WiFi.

Activation de l’API

Votre API doit être activée dans votre manager https://hotspot.2isr.fr/v4/ > Statistiques & Données > Gestion de l’API

Sécurité de l’API

Votre adresse IP doit être enregistrée dans votre manager https://hotspot.2isr.fr/v4/ > Statistiques & Données > Gestion de l’API

Format des requêtes

Toutes les données sont transmises en UTF8

Composition des requêtes

Les paramètres suivants sont nécessaires dans l’ensemble des requêtes :

Les paramètres compte_hotspot et compte_manager sont indépendants. Seul l’un d’eux est obligatoire. Si les deux paramètres sont renseignés le paramètre compte_manager est prioritaire.

Nom Valeur Type Description
cle 379j4ya8gdepj8xntgsgesxnf POST/GET Valeur de votre clé API disponible sur hotspot.2isr.fr
compte_hotspot XXX00-000 POST/GET Identifiant du compte hotspot de la clé
compte_manager FLOTT-000 POST/GET Identifiant du compte manager de la clé
résultat count POST/GET Vide par défaut, si envoyé sur “count” le résultat ne renvoi que le count sans tableau de résultat

Exemple d’une requête GET pour un compte API hotspot : https://api-hotspot.2isr.fr/v1/<fonction>/?cle=valeur_cle&compte_hotspot=XXX00-000

Exemple d’une requête GET pour un compte API manager : https://api-hotspot.2isr.fr/v1/<fonction>/?cle=valeur_cle&compte_manager=FLOTT-000

Les paramètres peuvent également tous être utilisés avec la méthode POST

Contextes des données

Il est utilisé la notion de contexte des données. Chaque donnée peut-être exportée suivant les contextes suivants :

hotspot : les données sont extraites d’un hotspot. manager : les données sont extraites de tous les hotspots du compte manager. groupe : les données sont extraites de tous les hotspots du groupe territorial dont le hotspot est le parent.

Champs libres du visiteur

L’objet infos_complementaires porte les champs libres saisis par le visiteur sur le portail Wi-Fi.

Depuis le 09/2026, cet objet expose quatre champs de profil supplémentaires (centres_interet, type_residant, situation_familiale, tranche_age) ainsi que chambre, jusque-là omis de cette documentation. Les champs de profil sont renvoyés en libellés lisibles et non plus sous leur forme technique. Aucune clé de infos_complementaires n’est retirée ni renommée ; en revanche la propriété champ_libre de la ligne, qui portait la fiche brute non masquée en doublon, n’est plus renvoyée.

Les données personnelles de cet objet sont par ailleurs masquées selon les règles RGPD du compte, comme elles le sont déjà dans l’export CSV. La forme du JSON ne change pas : toutes les clés restent présentes, seules les valeurs de prenom, nom, telephone et email peuvent désormais être masquées.

Les données personnelles sont masquées. prenom, nom, telephone et email suivent exactement les mêmes règles de masquage RGPD que les champs de premier niveau de la ligne, et que l’export CSV : le masquage ne s’applique pas si le visiteur a accepté l’optin, si la connexion est antérieure au 25/05/2018, ou si la protection est désactivée dans la configuration RGPD du compte. Si vous alimentez un CRM à partir de cette méthode et que vous avez besoin de l’identité en clair, c’est la configuration RGPD du compte qui le détermine.

L’API renvoie l’ensemble des champs libres, y compris ceux que le hotspot ne collecte pas sur son portail : le profil du visiteur est mutualisé entre hotspots par son adresse e-mail, une valeur saisie sur un autre hotspot est donc rattachée à la connexion. Les interfaces de la console, elles, ne restituent que les champs configurés sur le hotspot.

Nom Type Description
id String Identifiant technique de la fiche de champs libres
last_update String Date de dernière mise à jour de la fiche
prenom, nom String Masqués en {{ PROTECTED RGDP}} le cas échéant
annee, sexe String Année de naissance, sexe
telephone String Masqué en 06XXXXXXXX le cas échéant
email String Masqué en abcxxxxxxx@domaine.fr le cas échéant
code_postal, pays, chambre String Code postal, pays, numéro de chambre
centres_interet String Centres d’intérêt, en libellés séparés par des virgules
type_residant String Type de résident, en libellé
situation_familiale String Situation familiale, en libellé
tranche_age String Tranche d’âge, en libellé (ex. 25-34 ans, 65 ans et plus)

Réponses HTTP

requête correctement exécutée

Code Response Description
200 OK La requête à correctement été exécutée.
201 OK La requête à correctement été exécutée et la modification prise en compte.
204 OK La requête à correctement été exécutée mais ne retourne aucune donnée.

requête en erreur

Code Response Description
400 Bad request La requête n’est pas correctement formée.
401 Unauthorized La requête n’est pas autorisée, votre clé n’est pas valide.
403 Forbidden L’accès à l’API n’est pas autorisé avec votre adresse IP.
404 Not found La méthode n’est pas disponible.
405 Method not allowed La méthode n’est pas autorisée.
406 Forbidden L’accès à l’API n’est pas autorisé du fait que les dernières conditions d’utilisation n’ont pas été acceptées.

Erreurs de l’application

Code Response Description
500 Internal server error Erreur interne, la requête est valide, mais l’API n’est pas en mesure de la traiter.
503 Service unavailable Le service API est temporairement indisponible.

Modifications récentes

  • 07/2016 : Création de l’API

  • 09/2016 : Ajout des méthodes Clic & Surf :

    • liste_users_online
    • liste_hotspot
    • liste_ap
    • liste_logs
  • 12/2017 : Ajout de la méthode :

    • liste_groupe
  • 03/2018 : Modification de la méthode :

    • liste_logs : ajout valeur “optin” portail RGDP
  • 09/2026 : Modification des méthodes :

    • liste_users_online et liste_logs : infos_complementaires expose 4 nouveaux champs de profil (“centres_interet”, “type_residant”, “situation_familiale”, “tranche_age”) ainsi que le champ “chambre”, jusque-là omis de la documentation.
    • liste_users_online et liste_logs : infos_complementaires applique désormais le masquage RGPD du compte sur “prenom”, “nom”, “telephone” et “email”, selon les mêmes règles que l’export CSV (voir « Champs libres du visiteur »). Les champs de profil sont par ailleurs renvoyés en libellés lisibles et non plus sous leur forme technique. L’ensemble des champs continue d’être renvoyé.
    • liste_logs : la propriété champ_libre n’est plus renvoyée. Elle portait la fiche brute de champs libres, sans masquage RGPD, en doublon de infos_complementaires. Changement non rétrocompatible si votre intégration la lisait : basculez sur infos_complementaires.

Groupe Méthodes Clic & Surf

Utiliser ces méthodes pour extraire les informations souhaitées de votre hotspot Clic & Surf :

Resource Group

liste_hotspot

liste_hotspot
GET/liste_hotspot/

Liste l’ensemble des hotspots et leurs configurations suivant le contexte.

Example URI

GET https://api-hotspot.2isr.fr/v1/liste_hotspot/
URI Parameters
HideShow
contexte
String (required) Example: hotspot

Le contexte peut-être : hotspot/manager/groupe.

hotspot
String (required) Example: XXX00-000

hotspot parent dans le contexte groupe. required uniquement dans le contexte groupe

Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc914
X-Response-Time: 2ms
Body
{
        "code": 200,
        "message": "",
        "header": {
            "date_export": "2016-09-21 17:11:49",
            "fournisseur": "2ISR",
            "API": "1",
            "remote_addr": "",
            "type_donnees": "liste_hotspot",
            "contexte": "hotspot",
            "nb_donnees": "1",
            "time": "2"
        },
        "rows": [{
            "id": "18"
            "hotspot": "SJL64-005"
            "hotspot_actif": "1"
            "type_auth": "cgu"
            "cgu_email": "1"
            "redirection": "www.xxxxxxx.com"
            "network": "10.x.x.x"
            "masque": "26"
            "ip_wan_operateur": "92.103.92.172"
            "ssid": "SSID"
            "description": "XXXXXXXXXXXXXX"
            "street_name": "xx bd de la mer"
            "postal_code": "49300"
            "city": "CHOLET"
            "province": "49"
            "latitude": "41.384507"
            "longitude": "-0.660716"
        }]
    }

liste_groupe

liste_groupe
GET/liste_groupe/

Liste l’ensemble des groupes territoriaux du compte utilisé dans la requête.

Example URI

GET https://api-hotspot.2isr.fr/v1/liste_groupe/
Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc914
X-Response-Time: 2ms
Body
{
  "code": 200,
  "message": "",
  "header": {
    "date_export": "2017-12-19 17:51:34",
    "fournisseur": "2ISR",
    "API": "1",
    "remote_addr": "::1",
    "type_donnees": "liste_groupe",
    "contexte": "manager",
    "nb_donnees": 1,
    "time": 19
  },
  "rows": [
    {
      "id": "1702",
      "hotspot_parent": "XXX00-000",
      "description_groupe": "Mon groupe territorial"
    }
  ]
}

liste_ap

liste_ap
GET/liste_ap/

Liste l’ensemble des points d’accès d’un hotspot

Example URI

GET https://api-hotspot.2isr.fr/v1/liste_ap/
URI Parameters
HideShow
hotspot
String (required) Example: XXX00-000

hotspot dont les données seront extraites, implicite lors de la connexion avec un compte hotspot.

Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc914
X-Response-Time: 2ms
Body
{
  "code": 200,
  "message": "",
  "header": {
    "date_export": "2016-09-21 17:11:49",
    "fournisseur": "2ISR",
    "API": "1",
    "remote_addr": "",
    "type_donnees": "liste_ap",
    "contexte": "hotspot",
    "nb_donnees": "1",
    "time": "2"
  },
  "rows": [
    {
      "id": "3968",
      "sn": "XXXXXXXXXXXX",
      "mac": "XX:XX:XX:XX:XX:XX",
      "host": "XXX00-001-1",
      "nom_objet": "PARUCKUSRXXX",
      "ip": "XX.XX.XX.XX",
      "latitude": "0.000000",
      "longitude": "0.000000"
    }
  ]
}

liste_users_online

liste_users_online
GET/liste_users_online/

Liste l’ensemble des utilisateurs en ligne suivant le contexte.

Example URI

GET https://api-hotspot.2isr.fr/v1/liste_users_online/
URI Parameters
HideShow
contexte
String (required) Example: hotspot

Le contexte peut-être : hotspot/manager/groupe.

hotspot
String (required) Example: XXX00-000

hotspot dont les données seront extraites, hotspot Parent dans le contexte groupe, ignoré dans le contexte manager .

Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc614
X-Response-Time: 120ms
Body
{
  "code": 200,
  "message": "",
  "header": {
    "date_export": "2016-09-21 17:11:49",
    "fournisseur": "2ISR",
    "API": "1",
    "remote_addr": "",
    "type_donnees": "liste_users_online",
    "contexte": "hotspot",
    "nb_donnees": "1",
    "time": "120"
  },
  "rows": [
    {
      "token_id": "d4d968efef2e5fc67fc2a44e4a0f39e7",
      "timestamp_in": "2016-05-21 23:52:58.052457",
      "timestamp_out": "2016-05-22 01:56:01.962058",
      "user_login": "XXXXXXXXXXXXX",
      "email": "xxxx@xxxx.xx",
      "user_ip": "XX.XX.XX.XX",
      "user_mac": "XX:XX:XX:XX:XX:XX",
      "user_agent": "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9192 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36",
      "incoming": 85694239,
      "outgoing": 10977787,
      "email_verifier": 1,
      "hotspot": "XXX00-000",
      "duree": "1542",
      "fastpass": null,
      "info_client": null,
      "autoconnect": "oui",
      "logout_reason": "4",
      "lang_sys": "fr-FR",
      "lang_portail": "fr",
      "type_auth": "ConnectorFB",
      "ap_mac": "XX:XX:XX:XX:XX:XX",
      "optin": "oui",
      "platform": "Defaut",
      "browser": "Defaut",
      "ismobiledevice": "Non",
      "verifie_txt": "Oui",
      "ConnectorFB": {
        "FB_ID": "XXXXXXXXXXXXXX",
        "FB_Email": "xxxx@xxxx.xx",
        "FB_LastName": "XXXX",
        "FB_FirstName": "XXXXXXX",
        "FB_Birthday": "",
        "FB_Link": "https://www.facebook.com/app_scoped_user_id/XXXXXXXXXXXXXX/",
        "FB_Sexe": "female",
        "FB_Locale": "fr_FR",
        "FB_City": "",
        "verif": 1
      },
      "ConnectorTwitter": {
        "Twitter_ID": "XXXXXXXXXXXXXX",
        "Twitter_Name": "XXXX",
        "Twitter_ScreenName": "XXXX",
        "Twitter_Location": "XXXX",
        "Twitter_Url": "",
        "Twitter_Followers_Count": "643",
        "Twitter_Listed_Count": "3",
        "Twitter_Favourites_Count": "985",
        "Twitter_Time_Zone": "Paris",
        "Twitter_Lang": "en",
        "Twitter_Profil_Image": "http://pbs.twimg.com/profile_images/XXXXXXXXXXXXXX/XXXXXXXXXXXXXX.jpg",
        "Twitter_Email": "xxxxxxx@xxx.xx"
      },
      "ConnectorGoogle": {
        "Google_ID": "XXXXXXXXXXXXXX",
        "Google_Email": "xxxxxx@xxxx.xx",
        "Google_Verified_Email": "1",
        "Google_Name": "xxxxxxxxx",
        "Google_Given_Name": "xxxxxxxx",
        "Google_Family_Name": "xxxxxxxxx",
        "Google_Link": "https://plus.google.com/xxxxxxxxxxxxxxxxx",
        "Google_Picture": "https://lh3.googleusercontent.com/xxxxxxxxxxxxxxxxx/photo.jpg",
        "Google_Gender": "female",
        "Google_Locale": "fr"
      },
      "ConnectorLinkedin": {
        "Linkedin_id": "XXXXXXXXX",
        "Linkedin_email_address": "xxxxxx@xxxx.xx",
        "Linkedin_first_name": "xxxxxxxxx",
        "Linkedin_last_name": "xxxxxxxx",
        "Linkedin_location_country": "fr_FR",
        "Linkedin_pictureurl": "https://media.licdn.com/dms/xxxxxxxxxxxxxxxxx"
      },
      "infos_complementaires": {
        "id": "8389",
        "last_update": "2017-05-04 16:14:55",
        "prenom": "",
        "nom": "",
        "annee": "",
        "sexe": "",
        "telephone": "",
        "email": "",
        "code_postal": "",
        "pays": "",
        "chambre": "",
        "centres_interet": "",
        "type_residant": "",
        "situation_familiale": "",
        "tranche_age": ""
      }
    }
  ]
}

liste_logs

liste_logs
GET/liste_logs/

Liste et détaille l’ensemble des connexions réalisées sur le hotspot

Example URI

GET https://api-hotspot.2isr.fr/v1/liste_logs/
URI Parameters
HideShow
date_start
date (required) Example: d/m/Y

Date de début de la période d’export.

date_end
date (required) Example: d/m/Y

Date de fin de la période d’export.

periode
String (required) Example: 3h|24h|48h

Periode annulant les dates précédentes : 3h, 24h, 48h

contexte
String (required) Example: hotspot

Le contexte peut-être : hotspot/manager/groupe.

hotspot
String (required) Example: XXX00-000

hotspot dont les données seront extraites, hotspot Parent dans le contexte groupe, ignoré dans le contexte manager .

Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc614
X-Response-Time: 120ms
Body
{
  "code": 200,
  "message": "",
  "header": {
    "date_export": "2016-09-21 17:11:49",
    "fournisseur": "2ISR",
    "API": "1",
    "remote_addr": "",
    "type_donnees": "liste_logs",
    "contexte": "hotspot",
    "nb_donnees": "1",
    "time": "120"
  },
  "rows": [
    {
      "token_id": "d4d968efef2e5fc67fc2a44e4a0f39e7",
      "timestamp_in": "2016-05-21 23:52:58.052457",
      "timestamp_out": "2016-05-22 01:56:01.962058",
      "user_login": "XXXXXXXXXXXXX",
      "email": "xxxx@xxxx.xx",
      "user_ip": "XX.XX.XX.XX",
      "user_mac": "XX:XX:XX:XX:XX:XX",
      "user_agent": "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9192 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36",
      "incoming": 85694239,
      "outgoing": 10977787,
      "email_verifier": 1,
      "hotspot": "XXX00-000",
      "duree": "1542",
      "fastpass": null,
      "info_client": null,
      "autoconnect": "oui",
      "logout_reason": "4",
      "lang_sys": "fr-FR",
      "lang_portail": "fr",
      "type_auth": "ConnectorFB",
      "ap_mac": "XX:XX:XX:XX:XX:XX",
      "optin": "oui",
      "platform": "Defaut",
      "browser": "Defaut",
      "ismobiledevice": "Non",
      "verifie_txt": "Oui",
      "ConnectorFB": {
        "FB_ID": "XXXXXXXXXXXXXX",
        "FB_Email": "xxxx@xxxx.xx",
        "FB_LastName": "XXXX",
        "FB_FirstName": "XXXXXXX",
        "FB_Birthday": "",
        "FB_Link": "https://www.facebook.com/app_scoped_user_id/XXXXXXXXXXXXXX/",
        "FB_Sexe": "female",
        "FB_Locale": "fr_FR",
        "FB_City": "",
        "verif": 1
      },
      "ConnectorTwitter": {
        "Twitter_ID": "XXXXXXXXXXXXXX",
        "Twitter_Name": "XXXX",
        "Twitter_ScreenName": "XXXX",
        "Twitter_Location": "XXXX",
        "Twitter_Url": "",
        "Twitter_Followers_Count": "643",
        "Twitter_Listed_Count": "3",
        "Twitter_Favourites_Count": "985",
        "Twitter_Time_Zone": "Paris",
        "Twitter_Lang": "en",
        "Twitter_Profil_Image": "http://pbs.twimg.com/profile_images/XXXXXXXXXXXXXX/XXXXXXXXXXXXXX.jpg",
        "Twitter_Email": "xxxxxxx@xxx.xx"
      },
      "ConnectorGoogle": {
        "Google_ID": "XXXXXXXXXXXXXX",
        "Google_Email": "xxxxxxxx@xxxxx.x",
        "Google_Verified_Email": "1",
        "Google_Name": "xxxxxxxxx",
        "Google_Given_Name": "xxxxxxxx",
        "Google_Family_Name": "xxxxxxxxx",
        "Google_Link": "https://plus.google.com/xxxxxxxxxxxxxxxxx",
        "Google_Picture": "https://lh3.googleusercontent.com/xxxxxxxxxxxxxxxxx/photo.jpg",
        "Google_Gender": "female",
        "Google_Locale": "fr"
      },
      "ConnectorLinkedin": {
        "Linkedin_id": "XXXXXXXXX",
        "Linkedin_email_address": "xxxxxx@xxxx.xx",
        "Linkedin_first_name": "xxxxxxxxx",
        "Linkedin_last_name": "xxxxxxxx",
        "Linkedin_location_country": "fr_FR",
        "Linkedin_pictureurl": "https://media.licdn.com/dms/xxxxxxxxxxxxxxxxx"
      },
      "infos_complementaires": {
        "id": "8389",
        "last_update": "2017-05-04 16:14:55",
        "prenom": "",
        "nom": "",
        "annee": "",
        "sexe": "",
        "telephone": "",
        "email": "",
        "code_postal": "",
        "pays": "",
        "chambre": "",
        "centres_interet": "",
        "type_residant": "",
        "situation_familiale": "",
        "tranche_age": ""
      }
    }
  ]
}

deconnecter_utilisateur

deconnecter_utilisateur
GET/deconnecter_utilisateur/

Déconnecter un utilisateur via son adresse MAC

Example URI

GET https://api-hotspot.2isr.fr/v1/deconnecter_utilisateur/
URI Parameters
HideShow
mac
String (required) Example: 7c:5c:f8:30:78:75

Adresse MAC de l’utilisateur à déconnecter.

Response  200
HideShow
Headers
Content-Type: application/json
X-Request-ID: f72fc914
X-Response-Time: 2ms
Body
{
        "code": 200,
        "message": "L'utilisateur '7c:5c:f8:30:78:75' a été déconnecté",
    }

Generated by aglio on 03 Sep 2026