Authentification
MorisBox expose deux types de clés selon le type de compte.
| Compte | Préfixe clé | Usage |
|---|---|---|
| Partenaire | sk_… (hors sk_dev_) | Partner API complète (/messages, bots, modèles…) |
| Développeur | sk_dev_… | API développeur uniquement (/dev/*) - modèles MorisBox |
Ne pas utiliser les JWT utilisateurs finaux dans un backend partenaire ou développeur.
En-tête commun
Authorization: Bearer <api_key>
Content-Type: application/json
Les clés développeur acceptent aussi X-Api-Key: sk_dev_….
Clés partenaires
| Propriété | Description |
|---|---|
| Format | Opaque (sk_…) |
| Stockage | Hash côté serveur ; secret affiché une seule fois |
| Scopes | send, read, templates, full… |
| IP allowlist | Optionnel par clé |
Créer une clé (Partner Hub)
- Connexion Partner Hub
- Administration → API Keys → Créer
- Copier le secret immédiatement
Création programmatique
POST /api/v1/settings/api-keys
Authorization: Bearer <clé_existante>
{
"name": "Backend production",
"scopes": "send"
}
Login Partner Hub (UI)
| Endpoint | Rôle |
|---|---|
POST /api/v1/auth/partner/login | Login + mot de passe → clé de session |
POST /api/v1/auth/partner/logout | Révoque la clé de session |
| Onboarding | Demande de compte partenaire |
Les intégrations serveur doivent préférer des clés API dédiées, pas la session UI.
Clés développeurs
Voir le guide complet : Comptes développeurs.
| Endpoint | Rôle |
|---|---|
POST /api/v1/auth/developer/register | Créer un compte + première clé |
POST /api/v1/auth/developer/login | Session dashboard |
GET/POST /api/v1/dev/api-keys | Gérer les clés |
DELETE /api/v1/dev/api-keys/{id} | Révoquer |
Les développeurs n'utilisent pas /api/v1/messages partenaire : uniquement /api/v1/dev/messages avec template_code.
Checklist sécurité
- HTTPS en production / sandbox publique
- Rotation des clés en cas de fuite
- Principe du moindre privilège (scopes)
- Ne jamais embarquer de clé dans une app mobile publique
- Vérifier les signatures webhook (Webhooks)
Réponses non autorisées
{
"error": {
"code": "unauthorized",
"message": "Invalid or expired API key."
}
}
Statuts : 401 (clé invalide) ou 403 (scope / IP / rôle).
