Skip to main content

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é