API REST
Toutes les routes sont préfixées /api/ sauf /files/ (serving) et /ws (WebSocket).
Authentification : header Authorization: Bearer <access_token> sur tous les endpoints protégés.
Authentification — /api/auth/
| Méthode |
Endpoint |
Corps |
Description |
| POST |
/register |
{username, email, password} |
Créer un compte |
| POST |
/login |
{username, password} |
Connexion → {access_token, refresh_token} |
| POST |
/refresh |
{refresh_token} |
Renouveler l'access token |
| POST |
/logout |
{refresh_token} |
Invalider le refresh token |
| GET |
/me |
— |
Profil de l'utilisateur connecté |
Utilisateur — /api/users/
| Méthode |
Endpoint |
Description |
| GET |
/me |
Profil (username, email, realname, is_admin) |
| PUT |
/me |
Modifier profil {username?, email?, realname?} |
| PUT |
/me/password |
Changer mot de passe {current_password, new_password} |
| GET |
/me/keywords |
Liste des mots-clés de notification |
| PUT |
/me/keywords |
{keywords: [...]} |
| GET |
/me/notification-prefs |
{highlights, private_messages, keywords} |
| PUT |
/me/notification-prefs |
Modifier les préférences |
| GET |
/me/ui-preferences |
Préférences UI synchronisées |
| PUT |
/me/ui-preferences |
Sauvegarder les préférences UI |
| GET |
/me/theme |
Thème actif + overrides |
| POST |
/me/theme |
Appliquer un thème {theme_id} |
| PUT |
/me/theme/overrides |
Surcharges CSS custom {tokens: {...}} |
| DELETE |
/me/theme/overrides |
Supprimer les surcharges |
Réseaux IRC — /api/networks/
| Méthode |
Endpoint |
Description |
| GET |
/ |
Liste des réseaux |
| POST |
/ |
Créer {name, host, port, use_tls, nick, realname, auto_connect} |
| PUT |
/{id} |
Modifier |
| DELETE |
/{id} |
Supprimer |
| POST |
/{id}/connect |
Se connecter |
| POST |
/{id}/disconnect |
Se déconnecter |
| GET |
/{id}/whois/{nick} |
Infos WHOIS |
Channels — /api/networks/{id}/
| Méthode |
Endpoint |
Description |
| GET |
/channels |
Channels rejoints + DMs |
| GET |
/channels/{channel}/members |
[{nick, mode, realname}] |
| GET |
/unread |
Compteurs non-lus par target |
Messages — /api/messages/
| Méthode |
Endpoint |
Description |
| GET |
/{network_id}/{target} |
Historique ?limit=50&before=<id> |
| GET |
/highlights |
Toutes les mentions ?limit=100 |
| GET |
/privates |
Conversations privées |
| GET |
/search |
Recherche ?q=...&network_id=... |
| POST |
/read |
Marquer lu {network_id, target} |
Fichiers — /api/files/
| Méthode |
Endpoint |
Auth |
Description |
| GET |
/providers |
Oui |
Providers disponibles |
| GET |
/ |
Oui |
Mes fichiers |
| POST |
/upload?provider=<name> |
Oui |
Upload multipart/form-data |
| DELETE |
/{file_id} |
Oui |
Supprimer |
| GET |
/files/{uuid}.ext |
Non |
Servir un fichier (inline pour images/PDF) |
Notifications Push — /api/push/
| Méthode |
Endpoint |
Description |
| GET |
/vapid-public-key |
Clé publique VAPID |
| POST |
/subscribe |
{endpoint, p256dh, auth, user_agent} |
| DELETE |
/unsubscribe |
{endpoint} |
| GET |
/subscriptions |
Mes subscriptions actives |
| POST |
/active |
Keep-alive (toutes les 25s) |
Scripts — /api/scripts/
| Méthode |
Endpoint |
Description |
| GET |
/ |
Mes scripts |
| POST |
/ |
Créer {name, code, network_id?} |
| PUT |
/{id} |
Modifier |
| DELETE |
/{id} |
Supprimer |
| POST |
/{id}/toggle |
Activer/désactiver |
| POST |
/test |
Dry-run {code, event, context: {nick, chan, message}} |
Thèmes — /api/themes/
| Méthode |
Endpoint |
Description |
| GET |
/marketplace |
Thèmes communautaires |
| GET |
/ |
Mes thèmes |
| POST |
/ |
Créer {name, tokens: {...}} |
| PUT |
/{id} |
Modifier |
| DELETE |
/{id} |
Supprimer |
| POST |
/install |
Installer depuis marketplace |
| POST |
/import |
Importer JSON |
| GET |
/{id}/export |
Exporter JSON |
Plugins — /api/plugins/
| Méthode |
Endpoint |
Description |
| GET |
/marketplace |
Marketplace |
| GET |
/ |
Plugins installés |
| POST |
/install |
{plugin_id, version, source_url} |
| POST |
/uninstall/{id} |
Désinstaller |
| POST |
/reload/{id} |
Recharger sans redémarrer |
| POST |
/{id}/toggle |
Activer/désactiver |
| GET |
/{id}/audit |
Logs d'audit |
Administration — /api/admin/ (is_admin requis)
| Méthode |
Endpoint |
Description |
| GET |
/overview |
Statistiques globales |
| GET |
/users |
Tous les utilisateurs |
| GET |
/users/{id} |
Détails |
| POST |
/users/{id}/toggle |
Activer/désactiver |
| POST |
/users/{id}/make-admin |
Promouvoir admin |
| DELETE |
/users/{id} |
Supprimer |
| GET |
/settings |
Paramètres système |
| PUT |
/settings |
Modifier {key, value} |
| DELETE |
/settings/{key} |
Supprimer |
| GET |
/connections |
Connexions IRC actives |
| DELETE |
/connections/{user_id}/{network_id} |
Forcer déconnexion |
WebSocket — ws://host/ws?token=<access_token>
Événements reçus (serveur → client)
| Type |
data |
Description |
MESSAGE |
{target, by, message, realname, is_private} |
Message IRC |
JOIN |
{channel, user, realname} |
Quelqu'un a rejoint |
PART |
{channel, user, message} |
Quelqu'un a quitté |
QUIT |
{user, message} |
Déconnexion IRC |
MODE |
{channel, nick, mode, set} |
Mode utilisateur changé |
TOPIC |
{channel, topic, by} |
Topic modifié |
KICK |
{channel, target, by, reason} |
Kick |
NOTICE |
{target, by, message} |
Notice IRC |
SERVER_MSG |
{message} |
Message serveur (MOTD…) |
MEMBERS_UPDATED |
{channel} |
Liste membres à recharger |
CONNECT |
— |
Connecté au réseau |
DISCONNECT |
— |
Déconnecté du réseau |
ERROR |
{message} |
Erreur |
SCRIPT_OUTPUT |
{data} |
Sortie d'un script NoxScript |
Commandes envoyées (client → serveur)
| type |
Champs |
Description |
MESSAGE |
{network_id, target, content} |
Envoyer un message |
JOIN |
{network_id, channel} |
Rejoindre un channel |
PART |
{network_id, channel} |
Quitter un channel |
COMMAND |
{network_id, raw} |
Commande IRC brute |