Pexxoo

Dernière mise à jour :

API

Principes, authentification, URL de base et quelques routes publiques.

Principes#

  • API REST en JSON. Toutes les routes sont sous le préfixe /api.
  • Les actions temps réel (messages, présence, vocal) passent par une connexion Socket.IO.
  • Toutes les permissions sont recalculées côté serveur à chaque requête.
  • Les limites de débit renvoient un code 429 (code rate_limited).

URL de base#

text
<URL_API>/api

<URL_API> est l'adresse de l'API de l'instance Pexxoo que tu utilises.

Authentification#

L'application se connecte avec un cookie de session nommé pexo_session, envoyé par le serveur à la connexion. Ce cookie est « httpOnly » (illisible par les scripts de la page), SameSite=Lax, et valable 30 jours par défaut. Les requêtes du navigateur doivent inclure les cookies (credentials: include) et viennent d'une origine autorisée par le serveur (CORS).

  • Il n'y a pas de clé d'API à créer.
  • Ne partage jamais ton cookie de session : il équivaut à ton mot de passe.

Format des erreurs#

JSON
{ "error": { "code": "limit_reached", "message": "…" } }
Code HTTPSignification
400Requête invalide (code invalid_input).
401Non connecté.
403Permission refusée.
404Ressource introuvable.
409Conflit, par exemple une limite atteinte (code limit_reached).
410Invitation expirée, révoquée ou épuisée.
429Trop de requêtes.

Routes publiques utiles#

Ces routes ne demandent pas de connexion.

RouteDescription
GET /api/healthÉtat de l'API. Répond { ok: true, time } avec l'heure du serveur en millisecondes.
GET /api/invites/:codeAperçu public d'une invitation : nom, icône, description et nombre de membres du serveur, et si elle est encore valable. Limité à 120 requêtes par minute.
POST /api/hooks/:serverId/:tokenPoster un message via un webhook entrant (le jeton sert d'authentification).
cURL
curl "<URL_API>/api/health"
# {"ok":true,"time":1767225600000}

curl "<URL_API>/api/invites/CODE"
GET /api/invites/:code
{
  "invite": {
    "code": "CODE",
    "server": { "id": "…", "name": "Mon serveur", "memberCount": 42, "online": 7, "requireApproval": false },
    "valid": true
  }
}

L'aperçu est abrégé ci-dessus : il contient aussi l'icône, la couleur, la description et la classification d'âge du serveur. Aucune information personnelle sur les membres n'est exposée.

Voir aussi#