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.
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
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_hotspotGET/liste_hotspot
Liste l’ensemble des hotspots et leurs configurations suivant le contexte.
Example URI
- contexte
String
(required) Example: hotspotLe contexte peut-être : hotspot/manager/groupe.
- hotspot
String
(required) Example: XXX00-000hotspot parent dans le contexte groupe.
required
uniquement dans le contexte groupe
200
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_groupeGET/liste_groupe
Liste l’ensemble des groupes territoriaux du compte utilisé dans la requête.
Example URI
200
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_apGET/liste_ap
Liste l’ensemble des points d’accès d’un hotspot
Example URI
- hotspot
String
(required) Example: XXX00-000hotspot dont les données seront extraites, implicite lors de la connexion avec un compte hotspot.
200
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_onlineGET/liste_users_online
Liste l’ensemble des utilisateurs en ligne suivant le contexte.
Example URI
- contexte
String
(required) Example: hotspotLe contexte peut-être : hotspot/manager/groupe.
- hotspot
String
(required) Example: XXX00-000hotspot dont les données seront extraites, hotspot Parent dans le contexte groupe, ignoré dans le contexte manager .
200
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",
"nom": "",
"prenom": "",
"annee": "",
"sexe": "",
"telephone": ""
"email": "",
"code_postal": "",
"pays": ""
}
}]
}
liste_logs ¶
liste_logsGET/liste_logs
Liste et détaille l’ensemble des connexions réalisées sur le hotspot
Example URI
- date_start
date
(required) Example: d/m/YDate de début de la période d’export.
- date_end
date
(required) Example: d/m/YDate de fin de la période d’export.
- periode
String
(required) Example: 3h|24h|48hPeriode annulant les dates précédentes : 3h, 24h, 48h
- contexte
String
(required) Example: hotspotLe contexte peut-être : hotspot/manager/groupe.
- hotspot
String
(required) Example: XXX00-000hotspot dont les données seront extraites, hotspot Parent dans le contexte groupe, ignoré dans le contexte manager .
200
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",
"nom": "",
"prenom": "",
"annee": "",
"sexe": "",
"telephone": ""
"email": "",
"code_postal": "",
"pays": ""
}
}]
}
deconnecter_utilisateur ¶
deconnecter_utilisateurGET/deconnecter_utilisateur
Déconnecter un utilisateur via son adresse MAC
Example URI
- mac
String
(required) Example: 7c:5c:f8:30:78:75Adresse MAC de l’utilisateur à déconnecter.
200
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é",
}