Skip to content

API REST

L'API Échoppe est construite avec Elysia et expose une documentation OpenAPI.

Documentation interactive

Accédez à Swagger UI : http://localhost:7532/swagger

Base URL

http://localhost:7532  # Développement
https://api.votresite.com  # Production

Authentification

L'API utilise des cookies de session (pas de JWT).

Login

bash
curl -X POST http://localhost:7532/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@echoppe.dev","password":"admin123"}' \
  -c cookies.txt

Requête authentifiée

bash
curl http://localhost:7532/auth/me -b cookies.txt

Endpoints principaux

Auth

MéthodeEndpointDescription
POST/auth/loginConnexion
POST/auth/logoutDéconnexion
GET/auth/meUtilisateur courant

Produits

MéthodeEndpointDescription
GET/productsListe des produits
GET/products/:idDétail d'un produit
POST/productsCréer un produit
PUT/products/:idModifier un produit
DELETE/products/:idSupprimer un produit

Catégories

MéthodeEndpointDescription
GET/categoriesListe des catégories
POST/categoriesCréer une catégorie
PUT/categories/:idModifier
DELETE/categories/:idSupprimer

Commandes

MéthodeEndpointDescription
GET/ordersListe des commandes
GET/orders/:idDétail d'une commande
PATCH/orders/:id/statusChanger le statut

Voir la documentation complète ou Swagger pour tous les endpoints.

Client Eden (TypeScript)

Le client Eden génère un client type-safe à partir des schémas Elysia.

Installation

bash
bun add @elysiajs/eden

Utilisation

typescript
import { treaty } from '@elysiajs/eden';
import type { App } from '@echoppe/api';

const api = treaty<App>('http://localhost:7532');

// Requêtes type-safe
const { data } = await api.products.get();
const { data: product } = await api.products({ id: '123' }).get();

Gestion des erreurs

Format des erreurs

json
{
  "message": "Description de l'erreur"
}

Codes HTTP

CodeSignification
200Succès
201Créé
400Requête invalide
401Non authentifié
403Accès refusé
404Non trouvé
500Erreur serveur

Rate Limiting

Certains endpoints sont protégés par rate limiting :

EndpointLimite
/auth/login5 req/min
/auth/register3 req/min
/payments/checkout10 req/min

Publié sous licence CeCILL v2.1.