## Vue d'ensemble Les plans personnalisés vous permettent de **définir vos propres offres commerciales** : vous choisissez le plan KennHosting de base, lui donnez votre nom et fixez votre prix client. **Scope requis :** `reseller:plans` ## Créer un plan ```http POST /api/v1/reseller/plans ``` **Corps de la requête :** | Champ | Type | Requis | Description | |-------|------|--------|-------------| | `service_plan_id` | integer | Oui | ID du plan KennHosting de base (depuis le catalogue) | | `label` | string | Oui | Nom commercial de votre offre | | `client_price` | decimal | Oui | Prix que vous facturez à vos clients (XAF) | | `description` | string | Non | Description de votre offre | | `is_active` | boolean | Non | Plan visible/actif (défaut : `true`) | ```bash curl -X POST "https://kennhosting.com/api/v1/reseller/plans" \ -H "Authorization: Bearer kh_live_YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "service_plan_id": 1, "label": "Pack Démarrage", "client_price": 30000, "description": "Idéal pour les petits projets web" }' ``` **Réponse (201) :** ```json { "success": true, "data": { "id": 1, "reseller_profile_id": 1, "service_plan_id": 1, "label": "Pack Démarrage", "description": "Idéal pour les petits projets web", "client_price": "30000.00", "is_active": true, "created_at": "2026-06-12T...", "service_plan": { "id": 1, "slug": "starter", "name": "STARTER", "category": "essential", "price": "25000.00", "reseller_price": null, "billing_period": "annual" } } } ``` `service_plan.price` est le prix normal. `service_plan.reseller_price` est votre prix de gros (si configuré). Votre marge = `client_price` - (`reseller_price` ?? `price`). ## Lister vos plans ```http GET /api/v1/reseller/plans ``` ```json { "success": true, "data": [ { "id": 1, "label": "Pack Démarrage", "client_price": "30000.00", "is_active": true, "service_plan": { "slug": "starter", "name": "STARTER" } } ] } ``` ## Modifier un plan ```http PUT /api/v1/reseller/plans/{id} ``` ```json { "label": "Pack Démarrage Plus", "client_price": 35000, "is_active": true } ``` ## Supprimer un plan ```http DELETE /api/v1/reseller/plans/{id} ``` ```json { "success": true, "data": { "deleted": true } } ```