Authentification
API consommée par app-native-playpad (Capacitor). Auth Firebase (email/password + Phone OTP). Les routes /auth/* et /players/connected/* sont publiques ; le reste exige API_KEY_PLAYPAD_APP en production. Session joueur = header x-firebase-id-token.
PlayPad App
- Préfixe /api/playpad-app/*
- Clé API_KEY_PLAYPAD_APP (x-api-key ou Bearer)
- Profil connecté : x-firebase-id-token
Client : NEXT_PUBLIC_API_URL_PLAYPAD_APP + NEXT_PUBLIC_API_KEY_PLAYPAD_APP
Public (sans clé)
- /auth/register, /auth/phone/*, /auth/email/*
- /players/connected/* (login, me, refresh…)
Toujours Content-Type: application/json
Parcours inscription (app-native)
- 1. Stepper /signup/infos → profil + email/password + téléphone
- 2. POST /auth/register (sans phone sur Firebase Auth ; SQL users+players)
- 3. Login email/password côté client + doc Firestore
- 4. POST /auth/phone/send (+ recaptchaToken)
- 5. POST /auth/phone/verify (sessionInfo + code + idToken pour lier le phone)
- 6. Suite onboarding : photo → formula → level → email → legal
Après register, status SQL typique : must_complete_photo. Ne pas coller le phone à Auth au register.