Authentification
L'API TeamDay utilise des jetons d'accès personnels (PAT) pour l'authentification. Toutes les requêtes API doivent inclure un jeton valide dans l'en-tête Authorization.
Obtenir votre jeton d'accès
Étape 1 : Générer un jeton
- Connectez-vous à votre compte TeamDay sur cc.teamday.ai
- Naviguez vers Paramètres → Accès API
- Cliquez sur Générer un nouveau jeton
- Définissez optionnellement une expiration personnalisée (7-365 jours, par défaut : 90 jours)
- Copiez votre jeton immédiatement - vous ne pourrez plus le voir !
Étape 2 : Stocker en sécurité
Votre jeton ressemblera à ceci :
td_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdE
Format du jeton :
- Préfixe :
td_(identifie les jetons TeamDay) - Longueur : 43 caractères alphanumériques après le préfixe
- Encodage : Base64url (compatible URL)
Stockez dans des variables d'environnement :
# Unix/Linux/macOS
export TEAMDAY_TOKEN="td_votre-jeton-actuel-ici"
# Windows (PowerShell)
$env:TEAMDAY_TOKEN="td_votre-jeton-actuel-ici"
# Ou dans un fichier .env (pour le développement local)
TEAMDAY_TOKEN=td_votre-jeton-actuel-ici
Utiliser votre jeton
Incluez votre jeton dans l'en-tête Authorization avec le schéma Bearer :
Authorization: Bearer td_votre-jeton-actuel-ici
Exemples de requêtes
Lister les agents :
curl https://cc.teamday.ai/api/v1/agents \
-H "Authorization: Bearer $TEAMDAY_TOKEN"
Créer un agent :
curl -X POST https://cc.teamday.ai/api/v1/agents \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Assistant de recherche",
"role": "Recherche et analyse",
"systemPrompt": "Vous êtes un assistant de recherche utile.",
"visibility": "private"
}'
Obtenir les détails d'une exécution :
curl https://cc.teamday.ai/api/v1/executions/exec_123 \
-H "Authorization: Bearer $TEAMDAY_TOKEN"
Fonctionnalités de sécurité du jeton
Chiffrement au repos
Les jetons sont protégés par une sécurité de niveau entreprise :
- Hachage : Hachage SHA-256 stocké dans la base de données (irréversible)
- Chiffrement : Chiffrement AES-256-GCM pour les métadonnées du jeton
- Pas de stockage en clair : Le jeton original n'est jamais stocké après création
Validation automatique
Chaque requête API valide :
- Format du jeton - Préfixe et longueur corrects
- Recherche du hachage - Le jeton existe dans la base de données
- Expiration - Le jeton n'est pas expiré
- Portée de l'organisation - L'utilisateur appartient à l'organisation
- Suivi de la dernière utilisation - Mis à jour à chaque requête
Portée
Chaque jeton est lié à :
- Utilisateur : Le jeton appartient à un utilisateur spécifique (créateur)
- Organisation : Hérite de l'appartenance à l'organisation de l'utilisateur
- Permissions : Utilise le rôle et les permissions de l'utilisateur
Important : Les jetons héritent des permissions de l'utilisateur qui les a créés. Si l'accès d'un utilisateur est révoqué, ses jetons cessent immédiatement de fonctionner.
Gestion des jetons
Afficher les jetons actifs
Consultez tous vos jetons actifs dans Paramètres → Accès API :
- Nom du jeton (étiquette optionnelle)
- Date de création
- Horodatage de dernière utilisation
- Date d'expiration
- Portée des permissions
Révoquer les jetons
Révoquer immédiatement un jeton :
- Allez dans Paramètres → Accès API
- Trouvez le jeton dans votre liste
- Cliquez sur Révoquer
- Confirmez la suppression
Quand révoquer :
- Jeton compromis ou exposé
- Membre de l'équipe quittant l'organisation
- Jeton non utilisé
- Rotation des identifiants (bonne pratique de sécurité)
Expiration du jeton
Expiration par défaut : 90 jours
Expiration personnalisée :
- Minimum : 7 jours
- Maximum : 365 jours
Que se passe-t-il à l'expiration :
- Les requêtes API retournent
401 Unauthorized - Message d'erreur :
"Token expired" - Le jeton est automatiquement nettoyé (suppression logique)
Renouvellement automatique : Non supporté. Générez un nouveau jeton avant l'expiration.
Réponses d'erreur
Jeton manquant
Requête :
curl https://cc.teamday.ai/api/v1/agents
Réponse :
{
"error": true,
"statusCode": 401,
"statusMessage": "Unauthorized",
"message": "Authorization header required"
}
Jeton invalide
Requête :
curl https://cc.teamday.ai/api/v1/agents \
-H "Authorization: Bearer invalid_token"
Réponse :
{
"error": true,
"statusCode": 401,
"statusMessage": "Unauthorized",
"message": "Invalid or expired token"
}
Jeton expiré
Requête :
curl https://cc.teamday.ai/api/v1/agents \
-H "Authorization: Bearer td_expired_token"
Réponse :
{
"error": true,
"statusCode": 401,
"statusMessage": "Unauthorized",
"message": "Token expired"
}
Bonnes pratiques de sécurité
À faire ✅
- Stocker les jetons dans des variables d'environnement - Ne jamais coder en dur dans le code source
- Utiliser des jetons séparés par intégration - Plus facile à suivre et révoquer
- Définir des dates d'expiration appropriées - Plus courtes pour les environnements à haut risque
- Faire tourner les jetons régulièrement - Surtout pour les systèmes de production
- Révoquer immédiatement si compromis - Mieux vaut prévenir que guérir
- Utiliser HTTPS uniquement - Ne jamais envoyer de jetons via HTTP non sécurisé
- Surveiller l'utilisation des jetons - Vérifier régulièrement les horodatages "dernière utilisation"
À ne pas faire ❌
- Ne jamais committer les jetons dans Git - Utiliser
.gitignorepour les fichiers.env - Ne jamais partager les jetons - Chaque intégration devrait avoir le sien
- Ne jamais logger les jetons - Masquer dans les journaux d'application
- Ne jamais envoyer dans les paramètres d'URL - Utiliser uniquement les en-têtes
- Ne jamais réutiliser entre environnements - Dev/staging/prod devraient avoir des jetons séparés
- Ne jamais stocker dans le code côté client - Les jetons sont uniquement pour un usage côté serveur
Exemple de variables d'environnement
# .env (ajouter à .gitignore!)
TEAMDAY_TOKEN=td_votre-jeton-actuel-ici
# Utilisation dans le code
const token = process.env.TEAMDAY_TOKEN
const response = await fetch('https://cc.teamday.ai/api/v1/agents', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
Stratégie de rotation des jetons
Calendrier de rotation recommandé :
- Développement : 90 jours (par défaut)
- Staging : 60 jours
- Production : 30 jours
- Haute sécurité : 7 jours
Comment faire tourner sans interruption :
- Générer un nouveau jeton (ne pas encore révoquer l'ancien)
- Mettre à jour les applications pour utiliser le nouveau jeton
- Déployer et vérifier que le nouveau jeton fonctionne
- Surveiller pendant 24-48 heures (vérifier l'utilisation de l'ancien jeton)
- Révoquer l'ancien jeton une fois confirmé inutilisé
Limitation de débit
État actuel : Aucune limite de débit appliquée
Bonnes pratiques :
- Implémenter un backoff exponentiel pour les nouvelles tentatives
- Mettre en cache les réponses lorsque approprié
- Utiliser des taux de requête raisonnables (< 100 req/min recommandé)
Futur : Des limites de débit pourraient être introduites. Nous fournirons un préavis et de la documentation.
OAuth (Bientôt disponible)
Fonctionnalités prévues :
- Support OAuth 2.0 pour les intégrations tierces
- Permissions à portée limitée (lecture seule, écriture, admin)
- Clés API au niveau de l'organisation
Tester votre jeton
Test rapide :
# Devrait retourner une liste d'agents (ou un tableau vide)
curl https://cc.teamday.ai/api/v1/agents \
-H "Authorization: Bearer $TEAMDAY_TOKEN"
# Réponse de succès (exemple)
[
{
"id": "agent_123",
"name": "Mon agent",
"role": "Assistant",
"createdAt": "2025-12-09T12:00:00Z"
}
]
Si vous voyez 401 Unauthorized :
- Vérifier que le jeton est copié correctement (pas d'espaces supplémentaires)
- Vérifier que le jeton n'est pas expiré dans Paramètres → Accès API
- Confirmer que l'utilisateur a toujours accès à l'organisation
- Essayer de générer un nouveau jeton
Besoin d'aide ?
Le jeton ne fonctionne pas ?
- Consultez la référence des erreurs pour le dépannage
- Vérifier le format :
td_+ 43 caractères - Confirmer qu'il n'est pas expiré dans le tableau de bord
Questions ?
- 📧 Email : [email protected]
- 💬 Discord : Rejoindre la communauté
Dernière mise à jour : 9 décembre 2025