Programme d'affiliation
Endpoints de gestion du programme de parrainage et des retraits.
Authentification requise
Tous les endpoints de cette section nécessitent Authorization: Bearer {token}.
GET /api/user/affiliation/overview
Retourne le solde retirable, le total gagné, le nombre de filleuls actifs et le palier minimum de retrait.
Réponse 200
{
"user": {},
"message": "Vue d'ensemble de votre affiliation.",
"data": {
"wallet": {
"balance": 12500,
"total_earned": 37500
},
"godchildren_count": 8,
"withdraw_min": 5000
},
"errors": []
}
| Champ | Description |
|---|---|
balance | Solde actuellement retirable en XAF |
total_earned | Cumul de tout ce qui a été gagné (balance + retraits terminés) |
withdraw_min | Montant minimum requis pour placer un retrait |
GET /api/user/affiliation/godchildren
Retourne la liste complète des filleuls (sans pagination).
Réponse 200
{
"user": {},
"message": "Liste de vos filleuls.",
"data": {
"godchildren": [
{
"id": 12,
"name": "Moussa Traoré",
"phone": "+225070000000",
"avatar": "/storage/avatars/user/12/photo.jpg",
"created_at": "2026-03-08T14:00:00.000000Z"
}
]
},
"errors": []
}
GET /api/user/affiliation/withdrawals
Retourne l'historique paginé des demandes de retrait.
Paramètres (query string)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
status | string | Non | Filtre : pending, success, cancelled |
per_page | integer | Non | Résultats par page (défaut : 10, max : 50) |
page | integer | Non | Numéro de page (défaut : 1) |
Réponse 200
{
"user": {},
"message": "Historique de vos retraits.",
"data": {
"withdrawals": [
{
"id": 5,
"amount": 10000,
"status": "success",
"message": null,
"meta": {
"phone": "+237690000000",
"operator": { "name": "Orange Money", "icon": "..." }
},
"created_at": "2026-03-09T10:00:00.000000Z"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 10,
"total": 1,
"has_more": false
}
},
"errors": []
}
POST /api/user/affiliation/withdraw
Place une demande de retrait. Le montant est débité immédiatement ; la demande reste en pending jusqu'au traitement manuel.
Paramètres (body JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
amount | integer | Oui | Montant en XAF (minimum : 5 000) |
phone | string | Oui | Numéro Mobile Money de réception (format E.164) |
operator | object | Oui | Informations de l'opérateur sélectionné |
Exemple
{
"amount": 10000,
"phone": "+237690000000",
"operator": {
"name": "Orange Money",
"icon": "https://..."
}
}
Réponses
201 — Retrait enregistré :
{
"user": { "id": 1, "money_balance": 2500 },
"message": "Demande de retrait enregistrée avec succès.",
"data": {
"balance": 2500
},
"errors": []
}
402 — Solde insuffisant :
{
"user": {},
"message": "Solde insuffisant pour effectuer ce retrait.",
"data": {
"balance": 3000,
"required": 10000
},
"errors": []
}
422 — Paramètres invalides :
{
"user": null,
"message": "Données invalides.",
"errors": {
"amount": ["The amount field must be at least 5000."]
}
}