Documentation API 1.0
Introduction
L'accès à l'API est illimité pour les applications qui possèdent une paire de clés publique et privée
Requêtes
Vous pouvez utiliser des requêtes HTTP GET ordinaires.
La base de l'URL de l'API suit la structure suivante :
https://api-apprendre.auf.org/api/version/service/?parameters
Format des réponses
Les formats possibles des réponses de l'API sont :
GET /api/1.0/theses/_search/?parameters
Description | Header | Extension |
---|---|---|
Json | application/json | .json |
Jsonp | application/json | .json |
Encodage
Toutes les requêtes et réponses sont en UTF-8.Plus d'informations https://tools.ietf.org/html/rfc2279
Erreurs API
L'API renvoie des codes d'erreur si votre demande échoue.
Voici la liste de tous les codes que vous pouvez rencontrer et leur description.
Constant | Type | Code |
---|---|---|
Parameter_missing | MissingParameterException | 400 |
Pemission | SignatureException | 401 |
Permission | PublickeyException | 403 |
Service_notfound | NotFound | 404 |
Request_expired | RequestExpired | 408 |
Service_unavailable | ServiceUnavailable | 503 |
Authentification
Pour accéder à l'API, vous devez utiliser une paire de clés publique/privée fournie par l'AUF.
L'ensemble des requêtes doivent contenir 3 paramètres :
- La clé publique
- Le Timestamp UNIX
- La signature issue du cryptage HMAC SHA256 de la concaténation du timestamp et de la clé publique.
Exemple de cryptage en PHP :
php
$signature = hash_hmac('sha256', time().$public_key, $private_key);
Paramètres d'authentification
Nom | Description |
---|---|
_pk | Clé publique |
_ts | UNIX Timestamp |
_sig | Signature |
Intégrez ces 3 paramètres à toutes les requêtes API comme suit:
GET /api/1.0/theses/_search/?_pk=fb1634f026d53d21403c51e01224a4e6eaf3868f&_tstamp=1549891002&_sig=5667676ssds4f026d53d21403qsdq77878&q=...
Objets API
L'objet Search
Deux méthodes de recherche sont disponibles :
- La recherche (en) plein texte (?q=...)
- La recherche filtrée (?qf=...)
La recherche plein texte
Pour une recherche plein texte sur l'ensemble des propriétés, utilisez le paramètre q
GET /api/1.0/theses/_search/?q=un+mot+clé&_pk=fb1634f026d53d21403c51e01224a4e6eaf3868f&_tstamp=1549891002&_sig=5667676ssds4f026d53d21403qsdq77878
Voici un exemple de réponse :
json
{
"version": "1.0",
"searchtype": "fulltext",
"q": "un mot clé",
"results": {
"total": 1,
"from": 0,
"size": 10,
"max_score": 0.2876821,
"hits": [
{
score: 0.2876821,
id: 2,
nomdocteur: "Bruno L.",
nommarital: "Lagrange",
prenoms: "Bruno",
titre: "La justice américaine",
soustitre: null,
...
}
...
]
}
}
Syntaxe de la requête
Vous pouvez utiliser certains "flags" pour cibler au mieux les résultats.
Flag | Description |
---|---|
|AND| | Pour additionner les termes de recherche Ex. ?q=mot1|AND|mot2 |
|OR| Valeur par défaut |
Pour rechercher au moins un terme. Ex. ?q=mot1|OR|mot2 |
|NOT| | Pour exclure des termes Ex. ?q=mot1|AND(|NOT|mot2) |
" | Pour rechercher une phrase Ex. ?q="une phrase" |
() | Pour regrouper des conditions de recherche Ex. ?q=mot1|AND(mot2|OR|mot3) |
La recherche filtrée
Pour une recherche filtrée, utilisez le paramètre ?qf=
Vous pouvez rechercher dans les proprietés de l'objet thèse en passant dans la requête (qf) le nom de la proprieté et la valeur recherchés separés par :
Vous pouvez cumuler plusieurs propriétés separées par |
L'opérateur utilisé par défaut est AND.
Vous pouvez changer l'opérateur avec le paramètre operator=OR
GET /api/1.0/theses/_search/?qf=nomdocteur:bruno|titre:mot%20clé&operator=OR&_pk=...
Thèse
Pour récupérer l'objet thèse :GET /api/1.0/theses/{id}/_pk=...&_tstamp=...&_sig=...
Réponse :
json
{
id: 9,
nomdocteur: "M. MARTIN",
nommarital: "",
prenoms: "",
titre: "Impact du développement urbain sur les villes traditionnelles ...",
...
}
Propriétés de l'objet thèse
Nom | Description | Type |
---|---|---|
id | Identifiant | int |
nomdocteur | Nom du docteur | String |
nommarital | Nom marital | String |
prenoms | Prénom(s) figurant sur la thèse | String |
titre | Titre de la thèse | String |
soustitre | Sous titre | String |
anneesoutenance | Année de soutenance | Int |
disciplinaire | Champ disciplinaire | Int |
zonegeographique | Zone géographique concernée par la thèse ou le PhD | Int |
pays | Pays concernés par la thèse ou le PhD | ISO ALPHA-2 |
niveauobjet | Niveau objet de la thèse ou du PhD | Int |
payssoutenance_id | Pays de soutenance | ISO ALPHA-2 |
universite | Université | String |
ville | Ville | String |
labofaculte | Laboratoire ou faculté | String |
nomdirecteur | Nom du Directeur de thèse | String |
codirecteur | Co-directeur de thèse | String |
unicotutelle | Université de co-tutelle | String |
resume | Résumé | String |
distinction | Distinction | String |
Niveaux
Pour récupérer la liste des niveaux :
GET /api/1.0/niveau/_pk=...&_tstamp=...&_sig=...
Réponse :
json
[
{
id: 3,
titre: "Collège"
},
{
id: 2,
titre: "Élémentaire"
},
...
]
Champs disciplinaires
Pour récupérer la liste des champs disciplinaires :
GET /api/1.0/champ-disciplinaire/_pk=...&_tstamp=...&_sig=...
Réponse :
json
[
{
id: 1,
titre: "Pilotage du système éducatif, études de projets liés au secteur éducatif (droit, économie, gestion…)"
},
{
id: 2,
titre: "Philosophie de l’éducation, histoire des idées pédagogiques, histoire de l’éducation"
},
...
]
Zones géographiques
Pour récupérer la liste des zones géographiques :
GET /api/1.0/zone-geographique/_pk=...&_tstamp=...&_sig=...
Réponse :
json
[
{
id: 1,
titre: "Afrique centrale""
},
{
id: 2,
titre: "Afrique de l’ouest""
},
...
]
Pays
Pour récupérer la liste des pays :
GET /api/1.0/pays/_pk=...&_tstamp=...&_sig=...
Réponse :
json
[
{
id: 1,
title: "Algérie",
iso : "DZ",
pays_these : 1,
pays_soutenance : 0
},
...
]
"pays_these" (1|0) definit le pays de soutenance.
Exemples
Recherche plein texte
php
<?php
$tsamp = time(); //timestamp
$public = 'XXX'; //à remplacer avec votre clé publique
$secret = 'XXX'; //à remplacer avec votre clé privée
//paramètres
$params = array();
$params['_ts'] = $tsamp;
$params['_pk'] = $public;
$params['_sig'] = hash_hmac('sha256', $tsamp . $public , $secret);
$params['_page'] = 1;
$params['_nbparpage'] = 10;
//$params['cb'] = 'cbresults'; //callback - JSONP
$params['q'] = 'un mot clé'; //recherche fulltext
$query = http_build_query($params);
$ch = curl_init();
$url = "https://api-apprendre.auf.org/api/1.0/theses/_search?".$query;
curl_setopt($ch, CURLOPT_URL, $url);
$headers = array('Accept: application/json', 'Content-Type: application/json');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
echo $response;