L’API Web Services Prestashop
Prestashop expose une API REST qui permet de lire et écrire des données : produits, commandes, clients, stocks, catégories, etc. Cette API est essentielle pour connecter votre boutique à un ERP, un CRM ou tout système tiers.
Lueur Externe développe des intégrations sur mesure entre Prestashop et les systèmes d’information de ses clients.
Configuration
Activer l’API
Paramètres avancés > Webservice > Activer le webservice : Oui
Créer une clé API
Générez une clé avec les permissions minimales nécessaires :
| Ressource | GET | POST | PUT | DELETE |
|---|---|---|---|---|
| products | ✅ | ✅ | ✅ | ❌ |
| orders | ✅ | ❌ | ✅ | ❌ |
| customers | ✅ | ❌ | ❌ | ❌ |
| stock_availables | ✅ | ❌ | ✅ | ❌ |
Exemples d’utilisation
Lire les produits
# Récupérer la liste des produits
curl -s "https://shop.example.com/api/products?output_format=JSON" \
-u "API_KEY:" | jq '.products[].id'
# Récupérer un produit spécifique
curl -s "https://shop.example.com/api/products/42?output_format=JSON" \
-u "API_KEY:" | jq '.product'
Mettre à jour le stock
import requests
from xml.etree import ElementTree as ET
API_URL = "https://shop.example.com/api"
API_KEY = "votre_cle_api"
def update_stock(product_id: int, quantity: int):
# Récupérer le stock_available
r = requests.get(
f"{API_URL}/stock_availables",
params={"filter[id_product]": product_id, "output_format": "JSON"},
auth=(API_KEY, ""),
)
stock_id = r.json()["stock_availables"][0]["id"]
# Mettre à jour la quantité
xml = f"""<?xml version="1.0" encoding="UTF-8"?>
<prestashop>
<stock_available>
<id>{stock_id}</id>
<quantity>{quantity}</quantity>
</stock_available>
</prestashop>"""
requests.put(
f"{API_URL}/stock_availables/{stock_id}",
data=xml,
auth=(API_KEY, ""),
headers={"Content-Type": "application/xml"},
)
Récupérer les nouvelles commandes
// Synchronisation des commandes vers un ERP
async function syncOrders(since: string): Promise<void> {
const response = await fetch(
`${API_URL}/orders?output_format=JSON&filter[date_add]=[${since},]&sort=[date_add_DESC]`,
{ headers: { Authorization: `Basic ${btoa(API_KEY + ":")}` } }
);
const data = await response.json();
for (const order of data.orders) {
const detail = await fetch(
`${API_URL}/orders/${order.id}?output_format=JSON`,
{ headers: { Authorization: `Basic ${btoa(API_KEY + ":")}` } }
);
const orderData = await detail.json();
await sendToErp(orderData.order);
}
}
Bonnes pratiques
- Limiter les permissions au strict nécessaire
- Utiliser HTTPS obligatoirement
- Filtrer par IP si possible
- Implémenter un rate limiting côté client
- Logger toutes les synchronisations
- Gérer les erreurs avec retry et alertes
Performances
Pour les gros catalogues (10 000+ produits) :
- Utiliser la pagination (
limit=100&offset=0) - Synchroniser uniquement les modifications (
filter[date_upd]) - Mettre en cache les données statiques
- Exécuter les syncs en tâches cron, pas en temps réel
Conclusion
L’API Prestashop est un outil puissant pour automatiser votre e-commerce. Lueur Externe conçoit des intégrations robustes et performantes entre Prestashop et vos systèmes métier.