Skip to content

API & Intégrations

Endpoints internes (Next.js API routes)

  • /src/app/api/
  • RESTful, typés TypeScript

Notifications

Les notifications se décomposent en 2 parties :

  • Inbox (cloche) : alimentée par la table public.notification_logs.
  • Push web : s’appuie sur public.push_subscriptions (service worker + Web Push).

Endpoints

  • GET /api/notifications/logs?unread=true : nombre de notifications non lues.
  • GET /api/notifications/logs?limit=20&offset=0 : liste des dernières notifications.
  • PATCH /api/notifications/logs : marquer lu ({ markAll: true } ou { ids: string[] }).

  • GET /api/notifications/diagnostics : état complet (prefs, subs, events, logs) pour debug.

  • POST /api/notifications/test-push : envoie un push de test + écrit une entrée inbox (utile pour valider la cloche).

  • POST /api/notifications/push-subscribe : enregistre un device (endpoint + keys).

  • POST /api/notifications/push-unsubscribe : désenregistre un device.
  • POST /api/notifications/push-clear : supprime tous les devices push de l’utilisateur.

  • GET /api/notifications/preferences : lire les préférences.

  • PATCH /api/notifications/preferences : mettre à jour les préférences.

Authentification

  • Supabase (JWT, session)
  • Middlewares de protection des routes

Strava

  • OAuth2, synchronisation d’activités
  • Stockage des tokens dans Supabase
  • Webhooks (si activé)

Stripe

  • Paiements, abonnements
  • Webhooks Stripe

Supabase Storage

  • Uploads d’images, fichiers

Exemples d’appel API

const res = await fetch("/api/mon-endpoint", {
  method: "POST",
  body: JSON.stringify(data),
});

Sécurité

  • Validation des entrées (zod, types)
  • Auth obligatoire sur les routes sensibles