API Front-Office
Activer l'API PFO
L'API Publique Front-office, ou API PFO, permet aux développeurs front-end de créer de nouvelles interactions avec leur site par l’utilisation d’une API sous forme de Web service. Le but est d’ouvrir un accès dédié et structuré entre un client web (navigateur) et Kiubi.
Chaque site dispose de son point d’accès permettant aux internautes d’accéder aux données du site stockées sur Kiubi. Ces points d’accès sont publics dans le sens où il n’y a pas de restrictions d’accès si l’API est activée sur le site.
Une fois l’API activée, cliquez sur le lien "Accéder à l'API Sandbox".
Le Sandbox
Le Sandbox est une vue fonctionnelle et documentée de toutes les fonctions disponibles via l’API PFO du site. Chaque site dispose de son propre Sandbox.Toutes les fonctions sont regroupées thématiquement (blog, cms, catalogue, panier, ...). Chaque fonction est ensuite détaillée : description, URL, arguments attendus, contenu attendu de la réponse, codes erreurs possibles. Un bouton "Tester" permet de créer une requête vers l’API du site et de récupérer toute les données de la réponse.
Le Sandbox est à la fois la documentation de l’API et aussi un outil de prototypage pour vos développements.
Pour un premier test, récupérons la liste des billets du blog. Pour cela, cliquer sur le lien "/blog" qui contient tous les points d’entrée relatifs au blog. Cliquer sur "GET /blog/posts.json" pour utiliser ce point d’entrée.
Cliquez sur le bouton "Tester". Le sandbox va alors exécuter une requête à l’API du site et afficher le retour au format JSON dans le champ texte Response Body. Toutes les informations propres à la réponse comme les entêtes HTTP et le code HTTP sont également affichées. Le champ Request URL indique l’adresse de la requête qui a été utilisée. Les billets du blogs sont listés dans le nœud data de la réponse.
Une réponse contient toujours les nœuds suivants :
meta
: informations sur la réponse elle mêmeerror
: erreurs éventuellesdata
: données de la réponse
Débuter
Intéragir avec sa session
L'API partage la même session que le visiteur du site. Il en découle que l'API permet par exemple d'authentifier directement un internaute ou de modifier son panier. Prenons justement le cas de l'ajout d'un produit à votre panier. Pour cela, assurez vous d'utiliser l'API d'un site e-commerce et d'avoir au moins un produit en stock dans votre catalogue. Utilisons l'API pour trouver l'identifiant de la variante de produit qu'on va ajouter au panier.
Pour cela, dépliez le point d'entrée GET /catalog/product.json
. Ce point d'entrée permet de lister les produits du
catalogue. Afin de rajouter les informations concernant les variantes de ces produits, il faut utiliser le paramètre
extra_fields
. Cherchez le champ extra_fields dans les paramètres du point d'entrée et cliquez sur le lien variants.
Le champ texte se remplit avec la chaine variants.
Cliquez sur "Tester" pour lancer la requête. La liste des produits va s'afficher dans le champ Response Body. Explorer la liste jusqu'à trouver le tableau des variantes d'un produit (attribut variants) et noter la valeur du champ id.
Ouvrez le point d'entrée PUT /cart/items/{variant_id}.json
, saisissez l'identifiant de la variante dans le champ
variant_id
puis cliquez sur "Tester".
La réponse à cette requête contient dans le noeud data.summary
un résumé de ce qui s'est passé (ici l'ajout avec succès
de la variante au panier). Le noeud data.cart
contient toutes les informations du panier (liste des produits, adresse et
frais de livraison,...).
Rendez-vous maintenant sur le site et vérifiez que votre panier contient bien ce produit !
Intégration de l'API au site
Nous fournissons un client JavaScript, utilisant le framework jQuery, pour vous connecter à l'API PFO. Les sources et la documentation du client sont disponibles sur GitHub à l'adresse suivante : https://github.com/Kiubi/api-pfo-JS.
Pour les intégrateurs, nous fournissons également une version minifiée et numérotée, directement utilisable, à l'adresse suivante :
https://cdn.kiubi-web.com/js/kiubi.api.pfo.jquery-1.2.min.js
Le plugin requiert à minima la version 1.8.2 de jQuery. Pour intégrer le client à votre site, ajoutez les balises suivantes à vos pages :
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="{cdn}/js/kiubi.api.pfo.jquery-1.2.min.js"></script>
Exemple d'intégration sur "Bootstrap"
Nous allons maintenant modifier un site en partant du thème graphique "Bootstrap", disponible par défaut sur Kiubi. Ce thème intègre déjà jQuery et le client API javascript de Kiubi. Nous allons ajouter un formulaire d'identification qui utilise l'API et récupérer quelques informations sur le visiteur connecté.
Les fichiers javascripts sont inclus dans la balise <head>
de tous les templates à l'aide du fichier :
fr/includes/js-head.html
On y retrouve les balises <script>
:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
...
<script type="text/javascript" src="{cdn}/js/kiubi.api.pfo.jquery-1.2.min.js"></script>
Le formulaire d'identification sera placé dans le widget panier, situé dans l'entête de toutes les pages. On va y ajouter des champs login et mot de passe pour permettre à l'utilisateur de s'identifier sur le site tout en restant sur la même page.
Pour cela, éditez le template du widget panier theme/fr/widgets/commandes/panier/index.html
.
<!--
Template du Widget "Panier"
-->
<!-- BEGIN:main -->
<div class="panier">
<!-- BEGIN:nonidentifie -->
<p class="login"><a id="api-link-login" href="/compte/">Se connecter</a>
<span style="display:none;"> :
<label for="api-login">Identifiant : </label>
<input type="text" class="field" id="api-login" size="10"/>
<label for="api-pwd">Mot de passe : </label>
<input type="password" class="field" id="api-pwd" size="10"/>
<input id="api-submit" type="button" class="submit" style="padding:3px;" value="Ok" />
</span>
</p>
<script type="text/javascript">
$(function(){
// Interception du clic sur le lien "Se connecter"
// et affichage du mini formulaire de connexion
$(document).on('click', '#api-link-login', function(){
$('p.login > span').toggle();
return false;
});
// Login sur le click du bouton du mini formulaire
$(document).on('click', "#api-submit", function(){
var login = $("#api-login").val();
var pwd = $("#api-pwd").val();
// Pas de requête si aucun login ou aucun mot de passe
if(login == '' || pwd == '') {
$("p.login input.field").css('border', '2px solid red');
return;
}
// Connexion à kiubi
var query = kiubi.login(login, pwd);
// En cas de connexion réussie
query.done(function(meta, data){
$(".login").hide().after('<p class="compte"><a href="/compte/">'+data.firstname+' '+data.lastname+'</a> - <a id="api-link-logout" href="/compte/logout.html">Déconnexion</a></p>');
// Récupération des commandes de l'utilisateur
kiubi.users.getOrders(data.user_id).done(function(meta, data){
if(data.length) {
$('p.compte > a:first').before('Etat de votre dernière commande : '+data[0].status+' - ');
}
});
});
// En cas de connexion échouée
query.fail(function(meta, error, data){
$("p.login input.field").css('border', '2px solid red');
});
});
// interception du clic sur le lien "Déconnexion"
$(document).on('click', '#api-link-logout', function(){
// Déconnexion de l'utilisateur courant
kiubi.logout().done(function(meta, data){
$("p.compte").hide();
$("p.login").show();
$("p.login span").hide();
$("p.login input.field").removeAttr('style');
$("#api-pwd").val('');
});
return false;
});
});
</script>
<!-- END:nonidentifie -->
<!-- BEGIN:identifie -->
<p class="compte"><a href="/compte/">{prenom} {nom}</a> - <a href="/compte/logout.html">Déconnexion</a></p>
<!-- END:identifie -->
<p class="panier_link"><a href="/ecommerce/panier.html" title="Détail du panier">{nb_produits} article{pluriel_produits} - {total}</a></p>
</div>
<!-- END:main -->
Seuls les internautes non identifiés sur le site voient un lien "Se connecter" dans l'entête car ce lien se trouve dans
se trouve dans le bloc nonidentifie
. S'ils cliquent dessus, les champs identifiant et mot de passe apparaissent.
Le clic sur le bouton "Ok" va appeler la méthode login
du plugin qui va utiliser l'API pour vérifier le couple
identifiant et mot de passe et connecter l'internaute. Si l'identification échoue, les champs identifiant et mot de
passe sont entourés de rouge.
Si elle réussit, une deuxième requête vers l'API est lancée via la méthode users.getOrders
du plugin pour récupérer la
liste des dernières commandes de l'internaute. Si l'internaute a au moins une commande, on affiche son état dans l'entête.
Généralités
Tous les accès se font grâce à HTTP, via le nom de domaine principal du site (ex : https://monsite.kiubi-web.com/api/v1/).
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/posts.json
HTTP/1.1 200 OK
Date: Tue, 30 Jul 2013 08:25:32 GMT
Server: Apache
Content-Type: application/json
Connection: keep-alive
Status: 200 OK
Content-Length: 5
Cache-Control: max-age=0, private, must-revalidate
[]
Encodage de caractères
Le charset supporté par les requêtes est l'UTF-8.
Paramètres
Les méthodes de l'Api supportent pour la plupart des paramètres optionnels. Pour les requêtes GET, ces paramètres sont à reporter dans l'url. Par exemple :
$ curl -i "http://monsite.kiubi-web.com/api/v1/blog/posts.json?sort=comments_count"
Pour les requêtes POST, les paramètres non inclus dans l'URL peuvent être passés dans le corps de la requête. Ils devront être encodés selon la RFC 1738 et l'entête de la requête devra contenir un Content-Type à application/x-www-form-urlencoded. Par exemple :
$ curl -i -d "email=test%40example.org" "http://monsite.kiubi-web.com/api/v1/newsletter.json"
Paramètres courants
Les paramètres suivants sont utilisés très largement dans l'API et ont un fonctionnement homogène.
Paramètre | Description | Valeurs |
---|---|---|
extra_fields | Ce paramètre permet d'augmenter le périmètre d'une réponse en ajoutant des informations complémentaires. | Liste d'options séparées par des virgules |
sort | Ordre de tri des résultats de la réponse. Critère de tri. | Pour utiliser le même critère mais décroissant, préfixer avec le caractère "-" |
limit, page | Paramètres de contrôle de la pagination des réponses | Cf section Pagination |
Paramètres optionnels de compatibilité
Les paramètres suivants sont communs à toutes les méthodes de l'API. Ils permettent d'adapter le fonctionnement de l'API à des clients n'implémentant pas tout le protocole HTTP ou avec des contraintes trop importantes pour le développeur.
Paramètre | Description | Valeurs |
---|---|---|
method | Pour les clients ne supportant pas toutes les méthodes HTTP, il est possible d'utiliser le paramètre method pour simuler l'utilisation d'une méthode. | |
Une requête GET avec un paramètre method=PUT sera donc considérée par l'API comme une requête PUT. | GET, POST, PUT ou DELETE | |
callback | Nom du callback pour obtenir une réponse au format json-p. | Chaine de caractères |
suppress_response_code | Si ce paramètre est à true, l'API désactive l'utilisation sémantique des codes HTTP. Toutes les requêtes renverront en entête un code HTTP 200 OK. Le code HTTP initialement prévu reste néanmoins lisible dans le corps de la réponse. Le bon ou mauvais déroulement d'une requête devra donc être manuellement vérifié dans les messages contenus dans le corps de la requête. Seule une indisponibilité technique de l'API peut tout de même retourner une erreur de type 500. "true" ou "false". | Par défaut à "false" |
force_response_mime | Si ce paramètre est renseigné, le mime/type par défaut application/json du format de sortie sera substitué par cette valeur. | "text/plain" ou "text/html" |
Réponses
Le corps des réponses respecte une structure commune. Une réponse simple peut être la suivante :
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/categories.json
HTTP/1.1 200 OK
Server: Apache
Date: Tue, 30 Jul 2013 08:25:32 GMT
Content-Type: application/json
Connection: keep-alive
Status: 200 OK
Content-Length: 172
Cache-Control: max-age=0, private, must-revalidate
{
meta: {
success: true,
status_code: 200,
link: [],
rate_limit: 1000,
rate_remaining: 1000
},
error: [],
data: [
{
"id": 1,
"title": "Générale",
"posts_count": 1,
"slug": "Generale",
"url": "/blog/Generale/"
}
]
}
Le corps de la réponse est constitué d'un objet meta
qui contient des informations relatives à la requête ainsi qu'un
objet data
qui contient les données qu'on souhaite récupérer. Son contenu est propre à chaque méthode de l'API.
Description du noeud META
Paramètre | Description | Toujours présent | Valeur |
---|---|---|---|
meta.succes | Renseigne sur le succès ou l'échec de l'appel. A la moindre erreur, le paramètre est à "false". | Oui | "true" ou "false" |
meta.status_code | Code HTTP de la réponse. Si le paramètre suppress_response_code a été utilisé dans la requête, le développeur trouvera ici le code HTTP initial de la réponse. | Oui | Code HTTP sur 3 chiffres. |
meta.link | Groupe de lien hypermédia. Explicite les interactions possibles avec la réponse. L'utilisation la plus courante est la pagination des résultats. | Oui (peut être vide) | Liste d'URL |
meta.rate_limit | Quota maximum de requêtes | Oui | Entier |
meta.rate_remaining | Nombre de requêtes restantes | Oui | Entier |
En cas d'erreur la propriété meta.succes
est à false
. La réponse contient alors des paramètres supplémentaires. Un
exemple de réponse avec erreur est :
$ $ curl -i http://monsite.kiubi-web.com /api/v1/blog/posts/9999.json
HTTP/1.1 200 OK
Server: Apache
Date: Tue, 30 Jul 2013 08:25:32 GMT
Content-Type: application/json; charset=iso-8859-1
Connection: keep-alive
Status: 200 OK
Content-Length: 5
Cache-Control: max-age=0, private, must-revalidate
{
meta: {
success: false,
status_code: 404,
link: [],
rate_limit: 120,
rate_remaining: 120
},
error: {
code: 4401,
message: "Le billet n'existe pas",
help: ,
fields: []
},
data: null
}
Une réponse d'erreur contient des paramètres d'erreur supplémentaires.
Description du noeud ERROR
Paramètre | Description | Toujours présent EN CAS d'ERREUR | Valeur |
---|---|---|---|
Error.code | Numéro de l'erreur rencontrée | Oui | Entier |
Error.message | Message d'erreur global. Typiquement une phrase. | Oui | Chaine de caractères |
Error.help | Lien vers une page de l'aide permettant de résoudre l'erreur | Oui | URL |
Error.fields | Liste détaillée des erreurs. | Oui | Tableau |
Error.fields.[n].message | Message d'erreur | Oui | Chaine de caractères |
Error.fields.[n].field | Paramètre de la requête à l'origine de l'erreur | Oui | Chaine de caractères |
Error.fields.[n].extra | Eventuelles précisions sur l'erreur | Non | Variable |
Codes HTTP
Code HTTP | Signification |
---|---|
200 | La requête s'est bien déroulée |
301 | Redirection permanente |
302 | Redirection temporaire |
304 | Ressource non modifiée depuis la dernière requête |
400 | La syntaxe de la requête est erronée |
403 | Accès refusé |
404 | Ressource non trouvée |
405 | Méthode HTTP non autorisée |
413 | La requête est trop volumineuse |
500 | Erreur interne du serveur |
503 | Service temporairement indisponible ou en maintenance |
Encodage de caractères
Les caractères non ASCII sont transmis sous leur forme unicode (\uXXXX). Cet encodage est notamment compris nativement par javascript, quel que soit le charset de la page dans laquelle l'API est utilisée.
L'encodage à utiliser pour l'envoi de donnée vers l'API est l'UTF-8. En cas d'erreur d'encodage, l'API renvoie une erreur "Caractère non autorisé" et un code HTTP 400
Format des dates
Le fuseau horaire de l'API est "Europe/Paris". Toutes les dates et heures s'entendent dans ce fuseau aussi bien à la lecture qu'à l'écriture de données.
Toutes les dates sont retournées aux formats :
- date au format YYYY-MM-DD
Toutes les dates horodatées sont retournées aux formats :
- UNIX timestamp
- date au format YYYY-MM-DD HH:MM:SS
Format de retour
L'API supporte le format JSON. Le format de retour est précisé lors dans l'URL de la requête par l'extension indiquée (.json).
Sans extension, le format de la réponse est par défaut le JSON. Le format de réponse est également reprécisé dans
l'entête Content-Type
(application/json).
Pour des besoins de rétrocompatibilité, le Content-Type peut être forcé à text/plain ou text/html, à l'aide du paramètre
force_response_mime
.
Authentification
Les points d'entrée privés se basent sur une authentification par Cookie. L'API partage la même session que le visiteur du site. Il en découle que l'API permet d'authentifier directement un internaute, et qu'un internaute connecté au Front-office a accès directement à ses données via l'API :
$ curl -i http://monsite.kiubi-web.com/api/v1/session.json?login=u&password=pwd&method=put
HTTP/1.1 200 OK
Date: Tue, 30 Jul 2013 09:12:01 GMT
Server: Apache
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Last-Modified: Tue, 30 Jul 2013 09:12:01 GMT
Set-Cookie: PHPSESSID=63f95d9d1676bd9987df65a6ba862d13; path=/
Content-Length: 146
Content-Type: application/json
{
"meta": {
"success":true,
"status_code":200,
"link":[],
"rate_limit": 120,
"rate_remaining": 120
},
"error":[],
"data":{
"is_logged":true,
"user_id":1,
"firstname":"John",
"lastname":"Doe",
"gender":"H"
}
}
Dans un navigateur, le cookie de session est automatiquement envoyé à chaque requête et récupérer dans chaque réponse.
Sans navigateur, il est nécessaire de récupérer le contenu de l'entête Set-Cookie
des réponses de l'API pour le renvoyer
dans les prochaines requêtes.
Hypermédia
Les réponses contiennent un paramètre meta.link
qui peut contenir un ensemble de liens contextuels à la ressource. Ces
liens explicitent les URLs vers les ressources directement liés à la ressource courante.
Les développeurs sont vivement encouragés à suivre ces liens plutôt qu'à les reconstruire eux-mêmes. Cela facilite également la prise en compte d'évolutions futures de l'API.
Pagination
Les ressources retournant une liste d'éléments sont paginées. Par défaut, une page est composée de 20 éléments. Le
paramètre limit
des requêtes permet de diminuer cette valeur ou de l'augmenter (typiquement jusqu'à 40, mais
certaines requêtes supportent plus). Une valeur supérieure à la limite maximale sera refusée.
Le paramètre page
contrôle le numéro de page. Les pages sont numérotées à partir de 0 avec une valeur croissante. La
première page a le numéro 0, la deuxième le 1, etc.
Paramètre | Description | Valeur |
---|---|---|
limit | Nombre d'éléments par page | Entier de 1 à 40. 20 par défaut. |
page | Numéro de la page | Entier à partir de 0. 0 par défaut. |
Les ressources paginées contiennent des liens de pagination évitant au développeur d'avoir à les construire lui même. Ces liens reprennent tous les paramètres indiqués par la requête initiale :
Paramètre | Description | Valeur |
---|---|---|
meta.link.first_page | Lien vers la première page | URL |
meta.link.next_page | Lien vers la page suivante | Contient une URL sauf pour la dernière page ou le paramètre est à "false". |
meta.link.previous_page | Lien vers la page précédente | Contient une URL sauf pour la première page ou le paramètre est à "false" |
meta.link.last_page | Lien vers la dernière page | URL |
meta.items_count | Nombre d'éléments total | Entier |
meta.items_per_page | Nombre d'éléments par page | Entier |
meta.current_page | Page courante | Entier |
Cache
L'API supporte les mécanismes de cache HTTP. Les réponses sont accompagnées d'entêtes de cache que le développeur devrait
respecter. Les entêtes ETag
et Last-Modified
peuvent être utilisée indifféremment dans les réponses.
Si une de ces entêtes est présente et que la ressource n'a pas été modifiée depuis le dernier appel, une réponse "304 Not Modified" sera alors retournée en réponse. Les réponses 304 ne sont pas comptabilisées dans le quota d'utilisation de l'API, c'est un très bon moyen d'optimiser sa consommation.
Etag
Une réponse peut contenir une entête Etag
qui indique un numéro de série. Pour tout rappel ultérieur d'une même
ressource, il est fortement conseillé au développeur d'inclure dans sa requête une entête If-None-Match
contenant le
numéro de série de l'élément.
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/posts.json
HTTP/1.1 200 OK
Cache-Control: private, max-age=60
ETag: "644b5b0155e6404a9cc4bd9d8b1ae730"
Status: 200 OK
Vary: Accept, Authorization, Cookie
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/posts.json -H 'If-None-Match: "644b5b0155e6404a9cc4bd9d8b1ae730"'
HTTP/1.1 304 Not Modified
Cache-Control: private, max-age=60
ETag: "644b5b0155e6404a9cc4bd9d8b1ae730"
Last-Modified: Thu, 23 Jul 2013 11:25:05 GMT
Status: 304 Not Modified
Vary: Accept, Authorization, Cookie
Last-Modified
Une réponse peut contenir une entête Last-Modified
qui indique une date. Pour tout rappel ultérieur d'une même
ressource, il est fortement conseillé au développeur d'inclure dans sa requête une entête If-Modified-Since
contenant
cette date.
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/posts.json
HTTP/1.1 200 OK
Cache-Control: private, max-age=60
Last-Modified: Thu, 23 Jul 2013 11:25:05 GMT
Status: 200 OK
Vary: Accept, Authorization, Cookie
$ curl -i http://monsite.kiubi-web.com/api/v1/blog/posts.json -H "If-Modified-Since: Thu, 23 Jul 2013 11:25:05 GMT"
HTTP/1.1 304 Not Modified
Cache-Control: private, max-age=60
Last-Modified: Thu, 23 Jul 2013 11:25:05 GMT
Status: 304 Not Modified
Vary: Accept, Authorization, Cookie
Redirections
L'API peut utiliser les mécanismes de redirection HTTP (codes HTTP 301 et 302) lorsque cela est nécessaire. Le
développeur devra toujours prévoir l'éventualité de recevoir une redirection en réponse à une de ses requêtes. Dans ce
cas la réponse contient une entête Location
qui indique l'URL à laquelle le développeur est invité à renvoyer sa
requête. Un exemple de redirection :
HTTP/1.1 301 REDIRECT PERMANENT
Server: Apache
Date: Tue, 30 Jul 2013 08:25:32 GMT
Content-Type: application/json; charset=iso-8859-1
Connection: keep-alive
Status: 200 OK
ETag: "a00049ba79152d03380c34652f2cb612"
Location: "/api/v1/new/endpoint.json"
Content-Length: 5
Cache-Control: max-age=0, private, must-revalidate
{
meta : {
success : true,
status_code : 301,
link : { location : "/api/v1/new/endpoint.json" },
rate_limit: 120,
rate_remaining: 120
},
data : null
}
Le paramètre meta.link.location
reprend la valeur de l'entête Location
. Si le paramètre suppress_response_code
est à true dans la requête, le code HTTP est un code 200. Il revient au développeur de tester le statut présent dans
meta.link.status_code
et de refaire un appel à l'URL indiquée dans meta.link.location
.
Redirection 301 : c'est une redirection permanente. Toutes les requêtes vers la ressource désignée devront s'effectuer sur la nouvelle URL.
Redirection 302 : l'utilisation d'une nouvelle URL est temporairement nécessaire. L'URL d'origine est cependant toujours à utiliser pour adresse la ressource.
Les réponses 301 & 302 ne sont pas comptabilisées dans le quota d'utilisation de l'API.
Quota
Le quota d'utilisation de l'API PFO a été fixé pour en permettre une utilisation confortable. Chaque utilisateur a droit à 120 requêtes sur une durée de 2 minutes. A chaque requête, le nombre de requêtes restantes est décrémenté de 1. Au bout de 2 minutes, le quota est restauré à 120.
La quantité de requêtes restantes est indiquée dans chaque réponse dans le noeud meta.rate_remaining
. Le point d'entrée
/api/v1/rate
permet également de récupérer cette valeur sans consommer de quota.
$ curl -i http://monsite.kiubi-web.com/api/v1/rate.json
HTTP/1.1 200 OK
Date: Tue, 30 Jul 2013 09:12:01 GMT
Content-Length: 114
Content-Type: application/json
{
meta: {
success:true,
status_code:200,
link:[],
rate_limit: 1000,
rate_remaining: 1000
},
error:[],
data:null
}
En cas de dépassement de quota, l'API renverra une erreur 403 :
$ curl http://monsite.kiubi-web.com/api/v1/blog/posts.json
{
meta: {
success: false,
status_code: 403,
rate_limit: 1000,
rate_remaining: 0,
link: []
},
error: {
code: 4300,
message: "Vous avez épuisé votre quota de requête, attendez quelques minutes pour restaurer votre quota.",
help: ,
fields: []
},
data: null
}
Les requêtes qui ne consomment pas de quota sont celles vers le point d'entrée /api/v1/rate
ou celle générant une
réponse 301, 302 ou 304 (cf. : sections "Cache" et "Redirections"). L'utilisation du cache est le meilleur moyen de
limiter sa consommation.
Si ces quotas sont insuffisants pour votre site, n'hésitez pas à nous contacter !
Exemples et tutoriels
Vous trouverez sur GitHub les sources et la documentation de plusieurs exemples concrets d'utilisation de l'API de Kiubi.
Produits géolocalisés
Ce tutoriel explique comment utiliser l'API pour afficher une liste de produits sur une carte Google Maps avec la possibilité d'ajouter ces produits au panier directement à partir de la carte. Voir le tutoriel
Suggestion de produits
Ce tutoriel explique comment utiliser l'API pour suggerer des produits à un internaute à partir des produits associés et de ses dernières commandes. Voir le tutoriel
Bundles de produits
Ce tutoriel explique comment utiliser l'API pour créer des bundles de produits. Voir le tutoriel
Variantes multi-critères
Ce tutoriel qui explique comment utiliser l'API pour créer des variantes multi-critères de produit. Voir le tutoriel
Listing dynamique
Ce tutoriel explique comment utiliser l'API pour créer une navigation dynamique, en chargeant des éléments à la demande. Voir le tutoriel
Contrôle de la médiathèque
Ce tutoriel explique comment utiliser l'API pour créer des carrousels et des slideshow dynamiques. Voir le tutoriel
Shortcode
Ce tutoriel explique comment utiliser des shortcodes sur son site, afin d'afficher toutes sortes d'éléments ou widgets (formulaire dismoi, encart produit, ...). L'objectif étant de faciliter l'intégration d'éléments à l'aide de balises simple appelée "shortcode". Voir le tutoriel
Gestion de devis
Ce tutoriel explique comment utiliser l'API pour créer et remplir dynamiquement un formulaire dismoi. On pourra par exemple créer un formulaire de demande de devis alimenté par les produits du catalogue. Voir le tutoriel