API Free
Gratuit
1 000 requêtes/mois, 5 req/min. Parfait pour tester.
- 1 000 requêtes / mois
- 5 requêtes / minute
- Accès à tous les endpoints v1
- Support communauté
Catalogue produits, commerçants, recherche transverse et gestion vendeur (produits, stock, commandes, vidanges, promotions, réservations…). Auth Bearer, quotas clairs, documentation transparente.
L'API publique d'RiLoProxy est une API REST en JSON. Elle expose deux périmètres :
Catalogue, fiches produits, boutiques, catégories, recherche. Idéal pour intégrer l'offre locale dans un site, une app, une borne…
Gestion produits, stock, commandes, vidanges, promotions, réservations, employés. Strictement scopée à vos magasins.
https://enghien.riloweb.be/api/v1
curl -H "Authorization: Bearer ep_live_VOTRE_TOKEN" \
https://enghien.riloweb.be/api/v1/products?limit=5
GET /me.
Toutes les routes (sauf POST /auth/login) exigent un Bearer token :
Authorization: Bearer ep_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
En dépannage uniquement, le token peut passer en query : ?api_key=ep_live_… (déconseillé en production).
Connexion utilisateur en JSON. Limite stricte : 3 tentatives par email/IP toutes les 15 minutes.
Au-delà → 429 too_many_attempts avec Retry-After.
curl -X POST https://enghien.riloweb.be/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"client@example.com","password":"secret"}'
Réponse :
{
"ok": true,
"token_type": "Bearer",
"access_token": "ep_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"api_key_prefix": "ep_live_abcd",
"user": {
"id": 1,
"email": "client@example.com",
"first_name": "Client",
"last_name": "Demo",
"role": "customer"
}
}
Chaque réponse renvoie les compteurs courants :
X-RateLimit-Quota: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Per-Minute: 5
Toutes les réponses sont en JSON UTF-8 et incluent toujours ok: true|false.
{
"ok": true,
"items": [...],
"total": 42,
"limit": 50,
"offset": 0
}
{
"ok": false,
"error": "invalid_token",
"message": "Jeton API invalide ou révoqué.",
"details": { ... }
}
| Statut | Code | Cause |
|---|---|---|
| 400 | invalid_query | Paramètre manquant ou malformé. |
| 400 | empty_payload | Aucun champ fourni pour une mise à jour. |
| 401 | unauthorized | Token manquant. |
| 401 | invalid_token | Token invalide ou révoqué. |
| 403 | monthly_quota_exceeded | Quota mensuel atteint — passez à la formule supérieure. |
| 403 | shop_not_owned | Vous n'êtes pas propriétaire de ce magasin. |
| 404 | *_not_found | Ressource introuvable ou non publiée. |
| 422 | validation_failed | Données invalides (details contient les erreurs par champ). |
| 429 | rate_limit_exceeded | Débit dépassé — attendez Retry-After secondes. |
| 429 | too_many_attempts | Trop d'échecs sur /auth/login. |
Consultation du catalogue et de la recherche. Disponibles avec n'importe quelle clé valide.
/auth/login
Authentification utilisateur (email + mot de passe). Aucun token requis.
/me
Informations sur votre clé et votre quota courant.
/products
Liste paginée des produits publiés. Filtres : q, category, limit, offset.
/products/{slug}
Fiche produit complète (description, stock, boutique, réservation).
/categories
Catégories actives avec product_count pré-calculé.
/shops
Liste des commerçants actifs. Filtres : city, limit, offset.
/shops/{slug}
Fiche commerçant + jusqu'à 100 produits publiés.
/search?q=…
Recherche transverse (produits + boutiques + catégories).
GET /products| Paramètre | Type | Défaut | Description |
|---|---|---|---|
q | string | — | Recherche nom / description. |
category | string | — | Slug d'une catégorie. |
limit | int | 50 | Maximum 100. |
offset | int | 0 | Pagination. |
{slug}. Tout accès à un
magasin tiers renvoie 403 shop_not_owned. Les employés sont limités
par leurs permissions
(products.manage, orders.manage, reservations.manage,
promotions.manage, ads.manage, employees.manage).
Après POST /auth/login, listez les magasins via GET /shop
pour afficher la sélection à l'utilisateur. Si selected_shop est
null, l'utilisateur doit choisir un magasin avant d'appeler
/shop/{slug}/....
/shop
Liste des magasins accessibles à l'utilisateur.
/shop/{slug}
Magasin sélectionné + modules autorisés.
/shop/{slug}/products
Tous les produits (draft, published, archived).
/shop/{slug}/products/{id}
Fiche produit complète possédée.
/shop/{slug}/products
Crée un nouveau produit (name + price requis).
/shop/{slug}/products/{id}
Mise à jour partielle.
/shop/{slug}/products/{id}
Soft delete (archived).
/shop/{slug}/products/{id}/stock
Définit le stock courant du produit.
/shop/{slug}/inventory
Liste des mouvements de stock.
/shop/{slug}/inventory
Enregistre une entrée, sortie ou ajustement.
/shop/{slug}/orders
Liste paginée des commandes (filtre status).
/shop/{slug}/orders/{id}
Détail d'une commande.
/shop/{slug}/orders/{id}/status
Met à jour le statut de la commande.
/shop/{slug}/storeserver
Etat StoreServeur, usage stockage et liens programmes.
/shop/{slug}/storeserver/all
Toutes les tables et donnees StoreServeur du magasin en JSON.
/shop/{slug}/storeserver/export
Export StoreServeur en json, csv, sql ou sqlite.
/shop/{slug}/storeserver/daily
Liste Daily filtrable par dates/heures, code raison et departement.
/shop/{slug}/storeserver/daily/add-to-daily
Ajoute une ligne Daily d'ajustement depuis un code raison.
/shop/{slug}/storeserver/reasons-codes
Liste des codes raison.
/shop/{slug}/storeserver/reasons-codes
Encode ou met a jour un code raison.
/shop/{slug}/storeserver/reasons-codes/{code}
Supprime un code raison.
/shop/{slug}/storeserver/expiry-date
Historique append-only des dates de peremption.
/shop/{slug}/storeserver/rayons
Table Rayon locale.
/shop/{slug}/storeserver/storein-local
Infos locales StoreIn par article.
/shop/{slug}/storeserver/tables
Tables StoreServeur dynamiques.
/shop/{slug}/storeserver/tables/{table}/rows
Lignes d'une table dynamique.
/shop/{slug}/deposits
Liste des vidanges (q, status, limit, offset).
/shop/{slug}/deposits/orders/{id}
Détail des vidanges d'une commande.
/shop/{slug}/deposits/{itemId}/refund
Marque la vidange remboursée + email preuves.
/shop/{slug}/promotions
Liste des promotions du magasin.
/shop/{slug}/promotions
Crée une promotion.
/shop/{slug}/promotions/{id}
Met à jour une promotion.
/shop/{slug}/promotions/{id}
Supprime une promotion.
/shop/{slug}/reservations
Liste des réservations.
/shop/{slug}/reservations/{id}/status
Met à jour le statut.
/shop/{slug}/ads
Liste des publicités.
/shop/{slug}/ads
Crée une publicité.
/shop/{slug}/sponsorships
Liste des sponsorisations.
/shop/{slug}/sponsorships
Crée une sponsorisation.
/shop/{slug}/sponsorships/{id}/toggle
Active/désactive une sponsorisation.
/shop/{slug}/employees
Liste des employés.
/shop/{slug}/employees
Ajoute un employé.
/shop/{slug}/employees/{id}
Met à jour permissions / rôle.
/shop/{slug}/employees/{id}
Retire un employé.
POST /shop/{slug}/products| Champ | Type | Notes |
|---|---|---|
name requis | string | Max 200 caractères. |
price requis | number | En euros. |
stock | int | Défaut 0. |
compare_at_price | number | Prix barré. |
short_description | string | Max 500 caractères. |
description | string | Texte long, Markdown toléré. |
sku | string | Max 80 caractères. |
stock_threshold | int | Seuil d'alerte stock (défaut 5). |
category_id | int | Voir /categories. |
reservation_enabled | bool | Autoriser réservation sans paiement. |
reservation_window_hours | int | Fenêtre par défaut 48 h. |
not_deliverable | bool | Retrait uniquement. |
status | string | draft (défaut), published, archived. |
has_deposit | bool | Active une vidange / caution remboursable. |
deposit_price | number | Montant de la vidange en euros. |
deposit_description | string | Description libre (bouteille, cintre, contenant…). |
curl -X POST https://enghien.riloweb.be/api/v1/shop/rich-lo/products \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Café arabica 250g",
"price": 8.90,
"stock": 30,
"category_id": 2,
"short_description": "Grains fraîchement torréfiés à Enghien",
"status": "published"
}'
curl -X PATCH https://enghien.riloweb.be/api/v1/shop/rich-lo/products/42 \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "price": 9.50, "stock": 45 }'
{
"product_id": 12,
"type": "in",
"quantity": 5,
"reason": "Réception fournisseur",
"reference": "BL-2026-001"
}
POST /shop/rich-lo/deposits/142/refund
{
"method": "cash",
"reference": "Rendu en boutique"
}
method accepte cash, card ou stripe.
Avec stripe, l'API tente un remboursement partiel du montant de la
vidange sur le paiement Stripe de la commande.
curl https://enghien.riloweb.be/api/v1/shop/rich-lo/storeserver/all \
-H "Authorization: Bearer $TOKEN"
{
"id": 5,
"slug": "cafe-arabica-250g",
"name": "Café arabica 250g",
"short_description": "Grains fraîchement torréfiés",
"description": "Texte long…",
"price": 8.90,
"compare_at_price": 10.90,
"sku": "ARAB-250",
"stock": 30,
"stock_threshold": 5,
"category_id": 2,
"status": "published",
"is_active": true,
"reservation_enabled": false,
"reservation_window_hours": 48,
"not_deliverable": false,
"published_at": "2026-04-23 15:00:00",
"updated_at": "2026-04-23 15:00:00",
"created_at": "2026-04-23 15:00:00",
"url": "/produit/cafe-arabica-250g"
}
{
"id": 1042,
"order_number": "EP-2026-04-01042",
"status": "preparing",
"payment_status": "paid",
"payment_method": "card",
"subtotal": 32.40,
"delivery_fee": 4.00,
"total": 36.40,
"created_at": "2026-04-23 12:48:00",
"cancelled_at": null
}
Statuts commande : pending, confirmed, preparing,
shipped, delivered, cancelled.
Les listes acceptent limit (max 100) et offset. La réponse contient total pour calculer le nombre de pages.
GET /api/v1/products?limit=20&offset=40
L'URL porte la version (/api/v1). En cas de changement incompatible, une
/api/v2 sera introduite en parallèle. Les ajouts rétro-compatibles
(nouveaux champs optionnels, nouveaux endpoints) sont déployés en v1 sans préavis.
Démarrez gratuitement. Passez à une formule payante quand votre produit décolle.
Gratuit
1 000 requêtes/mois, 5 req/min. Parfait pour tester.
2,99 €/ mois
10 000 req/mois, 1 000 req/min. Pour petites intégrations.
9,99 €/ mois
Requêtes mensuelles illimitées, 5 000 req/min.
10,99 €/ mois
Requêtes mensuelles illimitées, débit illimité.
Bug, question, suggestion : /support — réponse rapide, équipe basée à Enghien.
Gérez et révoquez vos tokens depuis /compte/api.
La référence est aussi disponible en api.md dans le dépôt.