API Partagée: Ces points de terminaison sont disponibles pour toutes les APIs produit. Tous les endpoints commencent par: /api/v1/auth/member/

Vérifier l'Existence d'un Membre

POST Vérifier Membre
Aucun scope requis
/api/v1/auth/member/check

Vérifier si un compte membre existe avant d'afficher le formulaire approprié (connexion ou inscription).

Corps de la Requête

{
  "email": "user@example.com"
}

email (string, requis sans phone) - Adresse email
phone (string, requis sans email) - Numéro de téléphone

Réponse (Membre Existe)

{
  "success": true,
  "data": {
    "exists": true,
    "is_active": true,
    "member": {
      "email": "us**@ex*****.com",
      "phone": null
    }
  }
}

Réponse (Membre Non Trouvé)

{
  "success": true,
  "data": {
    "exists": false,
    "registration_endpoint": "/auth/member/register"
  }
}

Inscription

POST Créer un Compte
Aucun scope requis
/api/v1/auth/member/register

Créer un nouveau compte membre. Un code OTP est automatiquement envoyé par email après l'inscription.

Corps de la Requête

{
  "name": "Jean Dupont",
  "email": "jean@example.com",
  "phone": "12345678",
  "accepts_emails": true
}

name (string, requis) - Nom complet
email (string, requis) - Adresse email (unique)
phone (string, requis) - Numéro de téléphone (unique)
accepts_emails (boolean, optionnel) - Accepte les emails marketing

Réponse

{
  "success": true,
  "data": {
    "message": "Account created successfully. Please verify your email with the OTP code sent.",
    "member": {
      "id": 456,
      "name": "Jean Dupont",
      "email": "je**@ex*****.com",
      "phone": "12****78"
    },
    "otp_expires_in_minutes": 10,
    "otp_code": "123456"  // Only in test mode
  }
}

Demander un Code OTP

POST Demander OTP
Aucun scope requis
/api/v1/auth/member/request-otp

Demander un code OTP pour l'authentification d'un membre existant.

Important: Le membre doit exister. Si le membre n'existe pas, une erreur member_not_found sera retournée avec requires_registration: true.

Corps de la Requête

{
  "email": "jean@example.com"
}

Réponse (Succès)

{
  "success": true,
  "data": {
    "message": "OTP code sent successfully",
    "expires_in_minutes": 10,
    "member": {
      "email": "je**@ex*****.com",
      "phone": null
    },
    "otp_code": "123456"  // Only in test mode
  }
}

Réponse (Membre Non Trouvé)

{
  "success": false,
  "error": {
    "code": "member_not_found",
    "message": "No account found with this email address. Please register first.",
    "requires_registration": true,
    "registration_endpoint": "/auth/member/register"
  }
}

Vérifier le Code OTP

POST Vérifier OTP
Aucun scope requis
/api/v1/auth/member/verify-otp

Vérifier le code OTP et obtenir un token d'authentification membre.

Corps de la Requête

{
  "email": "jean@example.com",
  "code": "123456"
}

Réponse

{
  "success": true,
  "data": {
    "member_token": "dmt_abc123xyz...",
    "expires_at": "2025-01-20T15:30:00Z",
    "expires_in_minutes": 60,
    "member": {
      "id": 456,
      "email": "je**@ex*****.com",
      "phone": "12****78",
      "name": "Jean Dupont"
    }
  }
}

Rafraîchir le Token

POST Rafraîchir Token
Token membre valide requis X-Member-Token
/api/v1/auth/member/refresh

Rafraîchir un token membre qui expire bientôt.

En-têtes

X-App-Id: app_abc123...
X-Api-Key: test_xyz789...
X-Member-Token: dmt_abc123xyz...

Réponse

{
  "success": true,
  "data": {
    "member_token": "dmt_new_token...",
    "expires_at": "2025-01-20T16:30:00Z",
    "expires_in_minutes": 60
  }
}

Déconnexion

POST Déconnexion
Token membre valide requis X-Member-Token
/api/v1/auth/member/logout

Invalider le token membre actuel.

Réponse

{
  "success": true,
  "data": {
    "message": "Successfully logged out"
  }
}
ESC