Documentation J+SERVICES Guides Référence API

CONTRAT API : RADIUS PPPoE (Abonnés)

Date : 2026-08-31 Auteur : L’équipe J+SERVICES Statut : DRAFT / IMPLEMENTED Base URL : `/v1/radius/pppoe`

Description

Le module PPPoE AAA (produit opérateur fibre/quartier) permet l’authentification et l’autorisation des abonnés PPPoE via le serveur virtuel `pppoe` de FreeRADIUS (déployé sur le VPN/RADIUS add-on). Contrairement au Hotspot (profils à durée), ce module gère des comptes permanents (un foyer = un compte).

⚠️ Note d’Architecture : L’état vit exclusivement dans RADIUS. Nous ne dupliquons pas de base d’abonnés en local dans PostgreSQL pour éviter toute divergence.


1. Lister les abonnés PPPoE

Liste tous les abonnés du tenant courant, enrichis avec leur consommation agrégée sur les 30 derniers jours (données issues de `radacct`).

Requête : `GET /v1/radius/pppoe/subscribers`

Query Params (Optionnels) :

Réponse (200 OK) : ```json { “abonnes”: [ { “username”: “pppoe_hash_jean”, “nom”: “jean”, “go_30j”: 124.5 } ], “source”: “RADIUS” } ```


2. Créer ou Mettre à jour un abonné PPPoE

Opération idempotente (upsert). Crée un abonné dans `radcheck` et applique ses attributs de débit ou d’IP statique dans `radreply`.

Requête : `POST /v1/radius/pppoe/subscribers`

Body : ```json { “nom”: “jean”, “mot_de_passe”: “secret123”, “debitMbps”: 10, “ipStatique”: “100.64.10.15” } ``` (Note: `password` est accepté comme alias de `mot_de_passe`.)

Règles de validation :

Réponse (201 Created) : ```json { “username”: “pppoe_hash_jean”, “nom”: “jean”, “debit_mbps”: 10, “ip_statique”: “100.64.10.15” } ```


3. Supprimer un abonné PPPoE

L’abonné ne pourra plus se connecter lors de la prochaine négociation PPP.

Requête : `DELETE /v1/radius/pppoe/subscribers/:nom`

Paramètres d’URL :

Réponse (200 OK) : ```json { “username”: “pppoe_hash_jean”, “supprime”: true } ```