I. Introduction▲
Le catalogue des API d'Orange s'est fortement enrichi avec plus de 20 interfaces publiques ou accessibles dans le cadre d'un contrat de partenariat, organisées en trois groupes :
- des API liées aux principaux actifs d'opérateur autour de l'identité, du paiement, des communications et du cloud ;
- des API complémentaires autour de l'IoT (Internet des objets) et de la proximité ;
- des API dédiées au développement de services pour l'Afrique et le Moyen-Orient.
Cet article propose un tour d'horizon rapide de quelques-unes des API d'Orange, avec des exemples de mise en œuvre et des pistes pour aller plus loin si vous le souhaitez.
Les API d'Orange sont simples, sécurisées, clairement documentées au format Swagger et accompagnées de tutoriels (getting started), d'exemples de codes et de SDK disponibles librement, à partir du site : https://developer.orange.com.
II. Pour utiliser les API d'Orange, il suffit de…▲
La première étape consiste à vous enregistrer gratuitement sur le site https://developer.orange.com. Vous pourrez y déclarer vos services ou applications et associer des API d'Orange pertinentes pour vos projets. Dans la plupart des cas, vous obtiendrez immédiatement vos credentials (identifiant et clé) qui vous serviront pour chaque appel. Seules quelques API nécessitent une validation et cela reste rapide.
Les API étant conformes au style REST, vous pouvez paramétrer facilement toutes vos requêtes autour du même host : https://api.orange.com en vous appuyant sur des verbes, codes, statuts, et formats JSON standards.
Exemple avec l'API Search TopTrends
Cette API permet de connaître les mots clés les plus recherchés par les internautes, sur le moteur de recherche Le Moteur, qui équipe les sites du Groupe Orange et ceux de partenaires de médias francophones.
Après obtention d'un access_token, il suffit d'envoyer la requête GET suivante pour obtenir les informations au format JSON :
curl -X GET -H "Authorization: Bearer {access_token}"
\
https://api.orange.com/search/v2/toptrends
III. Exemples d'API▲
III-A. Collecte de données IoT▲
L'API Live Objects permet de stocker et de restituer en toute sécurité tous types de données venant d'objets connectés, comme un capteur intelligent, un processeur embarqué ou bien un smartphone, par exemple.
Live Objects s'inscrit dans un vaste programme de co-innovation : Datavenue, qui rassemble les expertises d'Orange autour de solutions de connectivité (2G, 3G, 4G, LoRa, etc.), du Cloud et de la Data (agrégation, anonymisation, traitement, visualisation, sécurisation, etc.).
Prenons l'exemple d'un Raspberry Pi devant transmettre chaque seconde la valeur d'un capteur de luminosité. Il suffit de déclarer, sur le portail, un service ou une application afin d'obtenir les clés X-ISS-KEY et X-OPAI-KEY qui permettront d'envoyer les requêtes en toute sécurité.
Ici le modèle de données est très simple : un datasource correspondant à l'ensemble des données que pourra envoyer le Raspberry Pi, dont un datastream correspondant à la luminosité mesurée.
...
XISSKey =
'{X-ISS-KEY}'
XOAPIKey =
'{X-OPAI-KEY}'
DatasourceID =
'{datasourceId}'
StreamID =
'{streamId}'
...
host =
'https://api.orange.com'
headers =
{
'User-Agent'
: 'python'
,
'Content-Type'
: 'application/json'
,
'X-ISS-Key'
: XISSKey,
'X-OAPI-Key'
: XOAPIKey
}
def
POSTdatavenue
(
value):
host =
'https://api.orange.com'
url =
'/datavenue/v1/datasources/'
+
DatasourceID +
'/streams/'
+
StreamID +
'/values'
body =
[{ 'value'
: value }]
endpoint =
host +
url
logging.debug
(
"Making request to Enpoint:
%s
"
, endpoint)
logging.debug
(
"Body:
%s
"
, body)
try
:
response =
requests.post
(
endpoint, headers=
headers, data=
json.dumps
(
body))
if
response.status_code !=
201
:
logging.error
(
"Response status:
%s
"
, response.status_code)
except
:
logging.error
(
"Post request has failed."
)
logging.error
(
"Endpoint:
%s
"
, endpoint)
logging.error
(
"Body:
%s
"
, body)
return
while
True
:
try
:
# Read RC timing using pin #18
lum =
(
50000
/
RCtime
(
18
)) *
4
POSTdatavenue
(
lum)
time.sleep
(
1
)
except
:
logging.error
(
"Error in the loop"
)
continue
Cette collecte s'effectue simplement sous forme clé/valeur, avec horodatage. Le portail dédié simplifie la déclaration des modèles de données et permet une lecture directe et sécurisée des données collectées.
III-B. Accès au Cloud personnel des clients Orange▲
L'API du Cloud d'Orange permet à l'application d'un développeur d'accéder au Cloud personnel d'un client Orange après son authentification et la vérification de son consentement par Orange, et ce, de manière standard et sécurisée, via OpenID Connect. Par défaut, les lectures/écritures sont limitées à un répertoire spécialement créé pour l'application du développeur.
Toutes les offres mobiles, ADSL et fibre Orange, incluent un service de Cloud personnel. Cela représente des millions d'utilisateurs actifs.
Authentification et recueil du consentement de l'utilisateur
Prenons l'exemple fictif d'une application ou service web hébergé sur www.myorangecloudapp.com. Le mécanisme OpenID Connect permettra d'authentifier l'utilisateur final et recueillir son consentement, via tout navigateur, à partir de l'URL suivante :
https://api.orange.com/oauth/v2/authorize?
scope=openid%20cloud
&response_type=code
&client_id={identifiant}
&state=state
&redirect_uri=http%3A%2F%2Fwww.myorangecloudapp.com
La dernière ligne reprend, de manière encodée, l'URL de redirection déclarée pour cette application, et qui sera appelée par le service Orange si les vérifications sont positives, avec un code d'autorisation, comme ceci :
http://www.myorangecloudapp.com/?code=OFR-251f7...716a727f&state=state
Il faut à présent obtenir un access_token à partir de ce code et d'un header créé à partir des credentials obtenus sur le portail développeur (client_id, client_secret).
curl -X POST \
-H "Authorization: Basic NktSSHl...UdnlrT2lOaA=="
\
-d "grant_type=authorization_code \ &code=OFR-251f7...716a727f \
&redirect_uri=http://www.myorangecloudapp.com"
\
https://api.orange.com/oauth/v2/token
La réponse en JSON contient l'access_token qui servira pour les prochaines requêtes.
Gestion des fichiers dans le Cloud
On peut commencer par lister les fichiers du répertoire dédié à l'application :
curl -X GET \ -H \
-H "Authorization: Bearer {access_token}"
\
https://api.orange.com/cloud/v1/folders/restrictedmode
La réponse permet de gérer chaque fichier ou sous-répertoire avec leurs ID, par exemple :
{
"id"
:
"VhlwZSAob3IgcGFzdGUpIGhlcmUuLi4="
,
"parentId"
:
"Lw=="
,
"name"
:
"MyBeautifulApp"
,
"files"
:
[{
"id"
:
"dmlkZW9EZWZhdWx0Lm1wNA=="
,
"name"
:
"videoDefault.mp4"
,
"type"
:
"VIDEO"
},
{
"id"
:
"cGRmRGVmYXV0LnBkZg=="
,
"name"
:
"pdfDefaut.pdf"
,
"type"
:
"FILE"
},
{
"id"
:
"aW1hZ2VEZWZhdXQyLmpwZw=="
,
"name"
:
"imageDefaut2.jpg"
,
"type"
:
"PICTURE"
}],
"subfolders"
:
[{
"id"
:
"X191cGxvYWQv"
,
"name"
:
"__upload"
}]
}
On peut ainsi récursivement scruter les sous-répertoires, ou bien décider de lister à plat tous les fichiers, en introduisant par exemple des filtres sur les types de médias (audio, image, vidéo).
curl -X GET \ -H \
-H "Authorization: Bearer {access_token}"
\
"https://api.orange.com/cloud/v1/folders?filter=image&flat=true"
Pour faire un upload de fichier, il suffit d'une requête POST comme celle-ci, avec l'exemple de l'image test.jpeg :
curl -X POST
-H "Content-Type: image/jpeg"
-H "Authorization: Bearer {access_token}"
--data-binary "@test.jpeg"
-L "https://cloudapi.orange.com/cloud/v1/files/content?name=test.jpeg&folder=Lw"
Pour aller plus loin
La documentation en ligne https://developer.orange.com/apis/cloud-france/getting-started détaille l'usage des nombreuses autres fonctions qui permettent de connaître l'espace de stockage restant, télécharger, déplacer, renommer ou supprimer des fichiers, ne télécharger que des vignettes (thumbnails) d'images, créer ou supprimer des sous-répertoires, etc.
IV. Liens utiles▲
Description |
Lien |
---|---|
Le programme Orange Developer |
|
L'ensemble des API disponibles |
|
Les outils (kits, SDK, etc.) |
|
Le support des API |
Opportunités▲
Au-delà des services rendus par les API elles-mêmes, Orange propose de nombreuses possibilités de partenariats comme l'accélération de start-ups, les tests d'applications, la mise en visibilité marketing, etc. Plus de 100 partenaires en ont déjà bénéficié et peuvent en témoigner.
Par exemple, dans le cas du Cloud d'Orange cité plus haut, des développeurs utilisent l'espace personnel des clients Orange pour :
- stocker des photos et vidéos numérisées à partir de vieux supports ;
- créer des animations à partir de bibliothèques de photos ;
- partager des mémos, photos et vidéos au sein d'une même famille ;
- rassembler des documents administratifs ;
- crypter un répertoire important ;
- etc.
Tout est résumé sur le site d'Orange Partner :https://partner.orange.com/.