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 :

RessourceGETPOSTPUTDELETE
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.