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 :

  1. La clé publique
  2. Le Timestamp UNIX
  3. 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 :

  1. La recherche (en) plein texte (?q=...)
  2. 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 concerné par la thèse ou le PhD.
"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;

			        	
En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de cookies susceptibles de réaliser des statistiques de visites ou de permettre d’améliorer la fonctionnalité du site et optimiser votre visite.