monsiteo aide

Authentification

Inscription, connexion, jetons Sanctum par appareil, échange de code de connexion, mot de passe oublié et déconnexion.

L'API utilise des jetons personnels Laravel Sanctum. Vous obtenez un jeton en vous inscrivant ou en vous connectant, puis vous l'envoyez dans l'en-tête Authorization de chaque requête protégée :

Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd
Accept: application/json
  • Un jeton est créé par appareil : le champ facultatif device (60 caractères maximum, par défaut app) lui donne un nom, par exemple iphone-william ou script-import.
  • Les jetons n'expirent pas d'eux-mêmes, sauf ceux issus d'une connexion de l'équipe Monsiteo « en tant que » client (2 heures).
  • Changer de mot de passe révoque tous les autres jetons du compte, seul le jeton utilisé pour la requête reste valide.
  • Un jeton invalide, révoqué ou absent donne 401 {"message": "Unauthenticated."}.

Attention Un jeton donne un accès complet au compte. Conservez-le côté serveur (variable d'environnement, coffre de secrets) et ne le publiez jamais dans du code client ou un dépôt Git.

Inscription#

POST /v1/auth/register · Public · 10 requêtes par minute

Crée un compte (formule Gratuit), envoie l'e-mail de vérification et l'e-mail de bienvenue, et renvoie un jeton.

Paramètre Type Obligatoire Règles
name chaîne oui 120 caractères max.
email chaîne oui e-mail valide (RFC), 190 caractères max., pas déjà utilisé
password chaîne oui 8 caractères min.
accept_terms booléen oui doit valoir true (acceptation des conditions)
company chaîne non 190 caractères max.
device chaîne non 60 caractères max., nom du jeton
curl -X POST https://api.monsiteo.com/v1/auth/register \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"name":"William Dupont","email":"william@friterie-william.be","password":"motdepasse1","accept_terms":true,"company":"Friterie William","device":"script"}'

Réponse 201 Created :

{
  "token": "1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd",
  "user": {
    "id": 42,
    "name": "William Dupont",
    "email": "william@friterie-william.be",
    "email_verified": false,
    "locale": "fr",
    "phone": null,
    "company": "Friterie William",
    "vat_number": null,
    "address": null,
    "zip": null,
    "city": null,
    "country": null,
    "marketing_opt_in": false,
    "is_demo": false,
    "plan": "free",
    "limits": { "name": "Gratuit", "formula": 1, "monthly": 0, "yearly": 0, "stripe_monthly": null, "stripe_yearly": null, "sites": 1, "pages": 5, "custom_domain": false, "branding": true, "ai_generations": 3, "storage_mb": 200, "novadesko": false },
    "sites_count": 0
  }
}

L'objet user est décrit en détail sur la page Compte. Notez qu'ici il n'est pas enveloppé dans data.

Erreurs : 422 (e-mail déjà utilisé, mot de passe trop court, conditions non acceptées...), 429.

Connexion#

POST /v1/auth/login · Public · 10 requêtes par minute

Paramètre Type Obligatoire Règles
email chaîne oui e-mail valide (la casse est ignorée)
password chaîne oui
device chaîne non 60 caractères max.
curl -X POST https://api.monsiteo.com/v1/auth/login \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"email":"william@friterie-william.be","password":"motdepasse1","device":"script"}'

Réponse 200 : même forme que l'inscription (token + user).

Erreurs, toujours en 422 sur le champ email :

{ "message": "E-mail ou mot de passe incorrect.", "errors": { "email": ["E-mail ou mot de passe incorrect."] } }
{ "message": "Ce compte est suspendu. Contactez hello@monsiteo.com.", "errors": { "email": ["Ce compte est suspendu. Contactez hello@monsiteo.com."] } }

Bon à savoir Un compte créé via une connexion externe peut ne pas avoir de mot de passe : la connexion par mot de passe échoue alors avec le même message générique. Utilisez « mot de passe oublié » pour en définir un.

Échanger un code de connexion#

POST /v1/auth/exchange · Public · 10 requêtes par minute

Certaines actions ouvrent l'application déjà connectée : l'inscription depuis monsiteo.com, ou la connexion d'un membre de l'équipe Monsiteo « en tant que » client depuis le back-office. Elles produisent un code à usage unique de 64 caractères, valable 5 minutes, transmis dans l'URL https://app.monsiteo.com/#/auth/code/<code>. L'application l'échange contre un jeton.

Paramètre Type Obligatoire Règles
code chaîne oui exactement 64 caractères
curl -X POST https://api.monsiteo.com/v1/auth/exchange \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"code":"Zq3...64 caractères...Yt"}'

Réponse 200 :

{
  "token": "7|Hj8kLmNoPqRsTuVwXyZa0123456789AbCdEfGhIj",
  "user": { "id": 42, "name": "William Dupont", "email": "william@friterie-william.be", "plan": "site" },
  "impersonated": false
}

(objet user abrégé ici). Quand impersonated vaut true, le jeton appartient au client mais a été demandé par un administrateur : il expire après 2 heures et l'action est inscrite dans le journal d'activité.

Erreur 422 si le code est inconnu, déjà utilisé ou expiré :

{ "message": "Ce lien de connexion a expiré. Reconnectez-vous.", "errors": { "code": ["Ce lien de connexion a expiré. Reconnectez-vous."] } }

Mot de passe oublié#

POST /v1/auth/forgot-password · Public · 10 requêtes par minute

Envoie un e-mail de réinitialisation. La réponse est identique que le compte existe ou non, pour ne pas révéler quelles adresses sont inscrites.

Paramètre Type Obligatoire Règles
email chaîne oui e-mail valide
curl -X POST https://api.monsiteo.com/v1/auth/forgot-password \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"email":"william@friterie-william.be"}'
{ "message": "Si un compte existe pour cette adresse, un e-mail vient de partir." }

Le lien de l'e-mail mène à la page de réinitialisation de monsiteo.com (la réinitialisation elle-même ne passe pas par l'API).

Déconnexion#

POST /v1/auth/logout · Jeton

Révoque uniquement le jeton utilisé pour la requête. Les autres appareils restent connectés.

curl -X POST https://api.monsiteo.com/v1/auth/logout \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true }

Pour déconnecter tous les appareils, changez de mot de passe (Compte) : tous les autres jetons sont révoqués.

Mis à jour le 26 octobre 2026