Mohaioo — pour les IA / for AIs
Cette page décrit ce que la boutique sait faire pour un lecteur automatique. Elle est rendue par le serveur : ce que vous lisez ici ne dépend d'aucun script.
This page describes what the shop offers an automated reader. It is server-rendered: nothing here depends on JavaScript.
Ce que vend Mohaioo / What Mohaioo sells
Boutique en ligne tunisienne. Commande sans compte, paiement en espèces à la livraison.
Tunisian online shop. Order without an account, payment in cash on delivery.
- Beauté & Hygiène —
https://mohaioo.com/u/skincare - École —
https://mohaioo.com/u/ecole - Jouets —
https://mohaioo.com/u/jouets - Épicerie —
https://mohaioo.com/soukelkhir
Livraison dans 24 gouvernorats. Frais à partir de 3,000 TND. Minimum de commande : 5,000 TND. Frais et minimum dépendent du gouvernorat et sont annoncés avant la validation. Delivery to 24 governorates; fees and minimum depend on the governorate and are shown before checkout.
Lire le catalogue / Reading the catalogue
- Le catalogue en TEXTE — identifiant, nom, nom arabe, prix du jour, adresse :
https://mohaioo.com/products.txt - Toutes les fiches publiques :
https://mohaioo.com/sitemap.xml - Ce qu'est la boutique, en clair :
https://mohaioo.com/llms.txt - Un univers à la fois :
https://mohaioo.com/u/<code>
L'identifiant dont vous avez besoin pour composer un panier est la première colonne de https://mohaioo.com/products.txt — une fiche par ligne, champs séparés par une tabulation, prix du jour, sans aucun script à exécuter :
GET https://mohaioo.com/products.txt?q=<mot>
id ⇥ nom ⇥ nom arabe ⇥ prix TND ⇥ adresse de la fiche
23 ⇥ Nouilles instantanées… ⇥ … ⇥ 1.040 ⇥ https://mohaioo.com/produit/<slug>
└─ l'identifiant à utiliserSans ?q=, le fichier rend le catalogue page par page, et dit lui-même où trouver la suite. C'est aussi lui qui répond quand vous cherchez un produit par son nom.
Le même identifiant est aussi dans le balisage JSON-LD, pour qui sait le lire — champ productID du bloc schema.org/Product, sur la fiche et sur les listes (rayon, marque, univers) :
GET https://mohaioo.com/produit/<slug>
<script type="application/ld+json">
{ "@type": "Product",
"productID": "11279", ← le même identifiant
"name": "…", "offers": { "price": "…", … } }
</script>Attention : ce bloc est un <script> — un lecteur qui ne restitue que le texte visible d'une page ne le voit pas, et n'y trouvera aucun identifiant. C'est pour lui que /products.txt existe. Les adresses des fiches sont également dans https://mohaioo.com/sitemap.xml, et https://mohaioo.com/catalogue est l'écran des humains — il a besoin de JavaScript, ne vous en servez pas.
The id you need is the FIRST COLUMN of https://mohaioo.com/products.txt — one product per line, TAB-separated, with the price of the day, and no script to run. Use ?q=<word> to search by name; without it the file is paginated and says where the next page is. The same id is also the productID of the JSON-LD markup, on the product page and on listing pages — but that markup lives inside a <script> tag, so a reader that keeps only the visible text will never find it. Product URLs are in the sitemap; https://mohaioo.com/catalogue is the human screen and needs JavaScript — do not use it.
(La boutique expose aussi une interface interne sous /api, que /robots.txt refuse à l'exploration. Elle n'est pas le chemin décrit ici, et vous n'en avez pas besoin : tout ce qu'il vous faut est sur les pages produit. — The shop also serves an internal interface under /api, disallowed for crawling; it is not the path described here, and you do not need it.)
Un lien de panier / A shared basket link
https://mohaioo.com/panier/<jeton> est un panier qu'un client a partagé. Le jeton n'est pas devinable, ces pages ne sont pas indexées, et un lien s'éteint tout seul avec le temps. Ouvrir un lien n'écrit rien : deux personnes peuvent ouvrir le même sans se gêner.
A basket a customer shared. Opening one writes nothing, and the address carries lines — product and quantity — never a price: it is re-priced at every opening.
Composer un panier / Composing a basket
Vous pouvez fabriquer une adresse qui propose un panier à quelqu'un :
https://mohaioo.com/panier/composer?items=<id>:<quantité>,<id>:<quantité>,…Un exemple qui marche, construit à l'instant depuis le catalogue — deux exemplaires du premier produit, un du second :
https://mohaioo.com/panier/composer?items=9595:2,102A working example, built from the live catalogue as this page was rendered.
- Un identifiant seul vaut un exemplaire :
45équivaut à45:1. La quantité est alors affichée comme proposée, et le client l'ajuste avant de valider. 45:0est refusé, et l'écran le dit. Une quantité écrite est une parole : zéro veut dire zéro, et la remplacer par un reviendrait à vous contredire, pas à vous compléter.- Au plus 30 lignes ; quantité au plus 999 par ligne.
- Ce qui n'est pas lisible est écarté et annoncé à l'écran, jamais en silence — et une adresse vide ou absurde rend « rien à ajouter », jamais une erreur.
- Un produit qui n'est plus en vente aujourd'hui est retiré et annoncé. Les prix affichés sont ceux du jour : la même adresse rouverte demain montrera les prix de demain.
A bare id means one unit; id:0 is refused; at most 30 lines and 999 per line. Unreadable fragments are dropped and announced; an empty or nonsensical address returns “nothing to add”, never a raw error.
Ce que le composeur NE fait PAS / What it does NOT do
- Il n'écrit rien. Aucun panier n'est enregistré, aucune ligne en base. La page est construite à la volée depuis l'adresse.
- Il ne crée aucune commande, et ne peut pas en créer.
- Il fabrique une proposition : c'est le client qui ouvre l'adresse, qui voit les prix, et qui accepte. S'il a déjà un panier, on lui demande quoi en faire — rien n'est jamais écrasé sans qu'il choisisse.
It writes nothing, creates no order, and cannot. It produces a link the CUSTOMER opens and accepts; an existing basket is never overwritten without their choice.
Limites d'usage / Rate limiting
La route du composeur porte une borne de charge par adresse réseau. Ce n'est pas un mur : elle existe pour que la boutique ne soit pas ralentie, pas pour vous autoriser ou vous interdire quelque chose. Si vous la touchez, la réponse le dit et l'adresse reste valable — réessayez plus tard.
The composer route carries a load bound per network address. It is a load bound, not a wall: if you hit it, the address stays valid — retry later.
Ce qui n'est PAS offert / Not offered
- Aucune écriture. Rien de public ne permet de créer, modifier ou supprimer quoi que ce soit dans le catalogue ou dans les commandes.
- Aucun prix d'achat, aucune marge, aucun fournisseur. Ces données sont internes et ne sortent nulle part.
- Aucune donnée de client. Ni nom, ni téléphone, ni adresse, ni commande. Les pages de suivi et les paniers partagés portent des jetons privés et ne sont pas indexés.
No writes. No purchase prices, margins or suppliers. No customer data of any kind.