Arpelin

Développeurs

API Arpelin

Récupérez en lecture seule, au format JSON, les commandes en cours d'un établissement. Pratique pour alimenter un écran cuisine, une TV de rappel, une borne d'affichage ou un outil tiers.

Principes

  • Requêtes GET, réponses JSON (toujours un tableau), encodage UTF-8.
  • Chaque établissement a son propre domaine ; l'API ne renvoie que les données de cet établissement.
  • Aucune clé requise pour lister les commandes. Seule l'adresse de livraison est réservée au personnel connecté (voir Authentification).

URL de base

https://votre-domaine.arpelin.fr/panel/

Remplacez votre-domaine.arpelin.fr par le domaine de l'établissement (le même que celui de sa boutique en ligne et de son écran /panel/cast).

Authentification

Les points d'accès sont publics : aucun en-tête ni jeton n'est nécessaire.

Adresse de livraison. Le champ adresse (mode détaillé) n'est renvoyé en clair que si la requête porte un cookie de session du backoffice appartenant à un compte de rôle admin, manager ou cashier. Sinon il est masqué : seuls le code postal et la ville sont conservés (exemple : ••• 75011 Paris), ou ••• si aucun code postal n'est détecté. Depuis un navigateur déjà connecté, envoyez la requête avec credentials: 'include'.

Formats & erreurs

  • Dates : chaînes AAAA-MM-JJ HH:MM:SS (fuseau du serveur).
  • Montants : nombres décimaux en euros, séparateur point.
  • etat est renvoyé sous forme de chaîne JSON : comparez avec == ou convertissez en nombre.

En cas d'échec, le code HTTP passe à 500 et le corps devient un objet :

{ "error": "Erreur lors de l'exécution de la requête : ..." }

Point d'accès — Commandes en cours

GET /panel/api_gestion

Le paramètre update sélectionne le mode de réponse :

ParamètreValeurEffet
update absent Mode synthétique : une entrée par commande, pour affichage TV.
update présent (ex. update=1) Mode détaillé : contenu du panier, total, adresse.

Mode synthétique — GET /panel/api_gestion

Commandes dont l'horodatage debut est compris entre 12 h avant et 3 h après l'instant courant, avec un état actif (0.5 à 2). Livraisons terminées exclues. Une entrée par commande.

ChampTypeDescription
prepentierNuméro de préparation affiché au client.
etatnombreÉtat de la commande (voir Codes d'état).
debutdatetimeDate et heure de création de la commande.
retraitchaîneMode de retrait (sur place, a emporter, livraison…).
notechaîne | nullNote libre. Peut contenir un marqueur [Nom: …].
[
  { "prep": 42, "etat": "1",   "debut": "2026-09-09 12:04:11", "retrait": "sur place", "note": null },
  { "prep": 43, "etat": "0.6", "debut": "2026-09-09 12:06:52", "retrait": "livraison", "note": "[Nom: Dupont] sans oignon" }
]

Mode détaillé — GET /panel/api_gestion?update=1

Commandes du jour et de la veille (DATE(debut) ≥ hier) avec un état actif, livraisons terminées exclues. Une entrée par commande, avec le détail des articles.

ChampTypeDescription
panier_identierIdentifiant de la commande.
prepentierNuméro de préparation.
etatnombreÉtat de la commande (voir Codes d'état).
heuredatetimeDate et heure de création.
retraitchaîneMode de retrait.
totalnombreMontant total dû en euros (toutes lignes incluses, ventilation TVA comprise).
notechaîne | nullNote libre de la commande.
adressechaîneAdresse de livraison. Masquée hors session staff (voir Authentification). Chaîne vide si retrait sur place ou à emporter.
commandestableauArticles de la commande (un objet par article, voir ci-dessous).

Objet commandes[]

ChampTypeDescription
nom_articlechaîneLibellé de l'article.
infos_articlechaîne | nullPersonnalisations et options.
quantiteentierQuantité commandée.
prix_articlenombrePrix unitaire complet en euros (ventilation TVA recomposée).
[
  {
    "panier_id": 10432,
    "heure": "2026-09-09 12:06:52",
    "retrait": "livraison",
    "total": 24.5,
    "commandes": [
      { "nom_article": "Burger maison", "infos_article": "sans oignon", "quantite": 2, "prix_article": 9.5 },
      { "nom_article": "Frites",        "infos_article": null,          "quantite": 1, "prix_article": 3.5 },
      { "nom_article": "Coca 33cl",     "infos_article": null,          "quantite": 1, "prix_article": 2.0 }
    ],
    "note": "[Nom: Dupont] 3e étage",
    "adresse": "••• 75011 Paris",
    "etat": "1",
    "prep": 43
  }
]

Codes d'état (etat)

ValeurSignification
0.5À encaisser
0.6Prête à encaisser
1En cours de préparation
2Prête (à remettre au client)

Exemples

curl

# Mode synthétique
curl https://votre-domaine.arpelin.fr/panel/api_gestion

# Mode détaillé
curl "https://votre-domaine.arpelin.fr/panel/api_gestion?update=1"

# Mode détaillé avec adresse complète (session backoffice)
curl "https://votre-domaine.arpelin.fr/panel/api_gestion?update=1" \
  --cookie "PHPSESSID=VOTRE_ID_DE_SESSION"

JavaScript (navigateur)

async function chargerCommandes() {
  const res = await fetch('https://votre-domaine.arpelin.fr/panel/api_gestion', {
    credentials: 'include' // envoie le cookie de session si connecté au backoffice
  });
  if (!res.ok) throw new Error('HTTP ' + res.status);
  const commandes = await res.json();

  for (const c of commandes) {
    const prete = c.etat == 0.6 || c.etat == 2;
    console.log(`Prép ${c.prep} — ${prete ? 'PRÊTE' : 'en cours'}`);
  }
}

setInterval(chargerCommandes, 5000);
chargerCommandes();

Extraire le nom du client depuis note

function nomClient(note) {
  if (!note) return null;
  const m = note.match(/\[(?:Nom|Name)[^:]*:\s*([^\]]+)\]/i);
  return m ? m[1].trim() : null;
}