Catalogue
Rien ici n’exige un compte. Ce qui exige un droit d’accès, c’est la lecture, jamais la consultation. Seuls les produits publiés et vendables sont servis ; un produit en brouillon répond 404.
GET /catalogue — accueil
Section intitulée « GET /catalogue — accueil »Les domaines actifs avec leurs sous-thématiques et leurs offres publiées, et les produits mis en avant.
{ "themes": [ { "id": 1, "slug": "leadership-personnel", "title_ar": "القيادة الشخصية", "subtitle_ar": null, "description_ar": "…", "color": "#14532d", "position": 1, "sub_themes": [ { "id": 1, "slug": "motivation-de-soi", "title_ar": "التحفيز الذاتي", "description_ar": null, "position": 1 } ], "products": [ { "id": 6, "slug": "parcours-leadership-personnel", "kind": "parcours", "title_ar": "…", "is_offer": true, "is_featured": true, "price": { "amount": 120000, "base": 120000, "promo_active": false, "promo_ends_at": null, "currency": "MAD", "label": "1 200 DH" }, "saving_percent": 20 } ] } ], "featured": [ … ]}GET /catalogue/themes et GET /catalogue/themes/{slug}
Section intitulée « GET /catalogue/themes et GET /catalogue/themes/{slug} »La liste des domaines actifs avec leurs sous-thématiques ; ou un domaine avec, en plus, ses offres publiées. Chaque domaine porte image_url (paysage 4:3, null sans image). Un domaine masqué répond 404.
GET /catalogue/products/{slug} — fiche produit
Section intitulée « GET /catalogue/products/{slug} — fiche produit »La fiche complète, sous la clé data :
| Champ | Contenu |
|---|---|
| identité et prix | comme dans les listes, plus description_ar, published_at, total_duration_s |
cover |
la couverture : url (adresse publique, null sans image), ratio (portrait ou landscape) et aspect (2:3 ou 4:3) — le format se déduit du type, même sans image, pour réserver l’espace |
contents |
les segments ordonnés : id, position, title_ar, type, duration_s, preview, locked, stream_url |
children |
la composition, ordonnée |
prerequisites |
ce que l’apprenant doit avoir avant : { "rule": "certified", "product": { … } } |
upsell |
les offres qui contiennent ce produit, de la moins chère à la plus chère |
cross_sell |
même sous-thématique, puis même domaine en repli |
Aucune clé de stockage n’apparaît. Chaque segment porte stream_url, l’adresse à appeler pour obtenir un lien signé au moment de lire, et locked, vrai s’il exige un droit d’accès.
{ "data": { "slug": "programme-motivation-de-soi", "kind": "programme", "title_ar": "برنامج «مفاتيح التحفيز الذاتي»", "price": { "amount": 30000, "label": "300 DH", "currency": "MAD", "promo_active": false }, "total_duration_s": 4620, "contents": [ { "id": 1, "position": 1, "title_ar": "الفهرس والتعريف بمحتوى البرنامج", "type": "audio", "duration_s": 180, "preview": true, "locked": false, "stream_url": "https://…/api/v1/contents/1/stream" }, { "id": 3, "position": 3, "title_ar": "مقدمة البرنامج", "type": "audio", "duration_s": 420, "preview": false, "locked": true, "stream_url": "https://…/api/v1/contents/3/stream" } ], "children": [], "prerequisites": [], "upsell": [ { "slug": "parcours-leadership-personnel", … }, { "slug": "pack-demarrage-leadership", … } ], "cross_sell": [ … ] }}