Documentation Index
Fetch the complete documentation index at: https://docs.officiscan.com/llms.txt
Use this file to discover all available pages before exploring further.
Cas d’usage
Le monitoring stock permet de :
- Détecter les ruptures de stock
- Alerter sur les problèmes de distribution
- Optimiser la supply chain
Implémentation
1. Vérifier la disponibilité d’un produit
import requests
API_KEY = "oc_YOUR_API_KEY"
EAN = "3401351277399"
response = requests.get(
f"https://api.officiscan.com/v1/snapshots/compare?ean={EAN}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
available = [s for s in data["data"] if s["stock"]["available"]]
unavailable = [s for s in data["data"] if not s["stock"]["available"]]
print(f"Disponible sur {len(available)} sources")
print(f"Indisponible sur {len(unavailable)} sources")
2. Alertes de rupture
def check_stock_alerts(ean_list, threshold=0.5):
"""Alerte si le produit est indisponible sur plus de X% des sources"""
alerts = []
for ean in ean_list:
response = requests.get(
f"https://api.officiscan.com/v1/snapshots/compare?ean={ean}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
total = len(data["data"])
available = sum(1 for s in data["data"] if s["stock"]["available"])
rate = available / total if total > 0 else 0
if rate < threshold:
alerts.append({
"ean": ean,
"product": data["product_name"],
"availability_rate": f"{rate*100:.1f}%",
"available_sources": available,
"total_sources": total
})
return alerts
# Vérifier les alertes
alerts = check_stock_alerts(["3401351277399", "3540550014944"])
for alert in alerts:
print(f"⚠️ {alert['product']}: {alert['availability_rate']} dispo")
3. Rapport de disponibilité par source
def availability_by_source(ean):
"""Analyse la disponibilité par source pour un produit"""
response = requests.get(
f"https://api.officiscan.com/v1/snapshots/compare?ean={ean}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
source_status = {}
for snapshot in data["data"]:
source_status[snapshot["source"]] = {
"available": snapshot["stock"]["available"],
"price": snapshot["price"]["current"],
"collected_at": snapshot["collected_at"]
}
return source_status
# Exemple
status = availability_by_source("3401351277399")
for source, info in status.items():
emoji = "✅" if info["available"] else "❌"
print(f"{emoji} {source}: {info['price']}€")
Endpoints utilisés
GET /v1/snapshots/compare
Disponibilité multi-sources
GET /v1/products/{id}
Détail produit avec disponibilité