Module de gestion des jetons
Description des fonctionnalités
Le préfixe de l'API est uniformément http(s)://<your-domain>
HTTPS doit être utilisé dans les environnements de production pour sécuriser les jetons d'authentification. HTTP n'est recommandé que pour les environnements de développement.
Un système de gestion complet pour les jetons API des utilisateurs. Prend en charge des fonctionnalités telles que la création, la mise à jour, la suppression et les opérations par lots de jetons. Inclut des contrôles précis tels que les restrictions de modèle, les restrictions IP, la gestion des quotas et le délai d'expiration. Il s'agit de la source de données principale de la page des jetons frontend.
🔐 Authentification de l'utilisateur
Obtenez tous les jetons
- Nom de l'interface: Obtenez tous les jetons
- Méthode HTTP: GET
- Chemin:
/api/token/ - Exigence d'authentification: Utilisateur
- Description de la fonction: Pagine et récupère la liste de tous les jetons appartenant à l'utilisateur actuel.
💡 Exemple de demande:
const response = await fetch('/api/token/?p=1&size=20', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": "",
"data": {
"items": [
{
"id": 1,
"name": "API Token",
"key": "`<YOUR_API_KEY>`",
"status": 1,
"remain_quota": 1000000,
"unlimited_quota": false,
"expired_time": 1640995200,
"created_time": 1640908800,
"accessed_time": 1640995000
}
],
"total": 5,
"page": 1,
"page_size": 20
}
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Failed to retrieve Token list"
}🧾 Description du champ:
p(Numéro): Numéro de page, la valeur par défaut est 1size(Nombre): Nombre d'éléments par page, la valeur par défaut est 20items(Array): liste d'informations sur les jetonstotal(Nombre): Nombre total de jetonspage(Numéro): Numéro de la page actuellepage_size(Nombre): Nombre d'éléments par page
Jeton de recherche
- Nom de l'interface: jeton de recherche
- Méthode HTTP: GET
- Chemin:
/api/token/search - Exigence d'authentification: Utilisateur
- Description de la fonction: recherche les jetons de l'utilisateur en fonction de mots-clés et de valeurs de jetons.
💡 Exemple de demande:
const response = await fetch('/api/token/search?keyword=api&token=sk-123', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"name": "API Token",
"key": "sk-your-token-placeholder",
"status": 1,
"remain_quota": 1000000
}
]
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Failed to search Token"
}🧾 Description du champ:
keyword(Chaîne) : mot-clé de recherche, correspond au nom du jetontoken(String): recherche de valeur de jeton, prend en charge la correspondance partielle
Obtenez un jeton unique
- Nom de l'interface: obtenez un jeton unique
- Méthode HTTP: GET
- Chemin:
/api/token/:id - Exigence d'authentification: Utilisateur
- Description de la fonction: récupère des informations détaillées sur le jeton spécifié.
💡 Exemple de demande:
const response = await fetch('/api/token/123', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": "",
"data": {
"id": 123,
"name": "API Token",
"key": "sk-your-token-placeholder",
"status": 1,
"remain_quota": 1000000,
"unlimited_quota": false,
"model_limits_enabled": true,
"model_limits": "gpt-3.5-turbo,gpt-4",
"allow_ips": "192.168.1.1,10.0.0.1",
"group": "default",
"expired_time": 1640995200,
"created_time": 1640908800,
"accessed_time": 1640995000
}
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Token does not exist"
}🧾 Description du champ:
id (Numéro): ID de jeton, transmis via le chemin URL
Créer un jeton
- Nom de l'interface: Créer un jeton
- Méthode HTTP: POST
- Chemin:
/api/token/ - Exigence d'authentification: Utilisateur
- Description de la fonction: crée un nouveau jeton API, prend en charge la création par lots.
💡 Exemple de demande:
const response = await fetch('/api/token/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
name: "My API Token",
expired_time: 1640995200,
remain_quota: 1000000,
unlimited_quota: false,
model_limits_enabled: true,
model_limits: ["gpt-3.5-turbo", "gpt-4"],
allow_ips: "192.168.1.1,10.0.0.1",
group: "default"
})
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": ""
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Token name is too long"
}🧾 Description du champ:
name(String) : Nom du jeton, longueur maximale 30 caractèresexpired_time(Nombre): horodatage d'expiration, -1 signifie n'expire jamaisremain_quota(Nombre) : Quota restantunlimited_quota(Booléen) : indique si le quota est illimitémodel_limits_enabled(Booléen): s'il faut activer les limites du modèlemodel_limits(Array) : Liste des modèles autorisésallow_ips(Chaîne) : adresses IP autorisées, séparées par des virgulesgroup(String) : Groupe d'appartenance
Mettre à jour le jeton
- Nom de l'interface: jeton de mise à jour
- Méthode HTTP: PUT
- Chemin:
/api/token/ - Exigence d'authentification: Utilisateur
- Description de la fonction: met à jour la configuration du jeton, prend en charge le basculement d'état et les mises à jour complètes.
💡 Exemple de demande (mise à jour complète):
const response = await fetch('/api/token/', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
id: 123,
name: "Updated Token",
expired_time: 1640995200,
remain_quota: 2000000,
unlimited_quota: false,
model_limits_enabled: true,
model_limits: ["gpt-3.5-turbo", "gpt-4"],
allow_ips: "192.168.1.1",
group: "vip"
})
});
const data = await response.json();💡 Exemple de demande (mise à jour du statut uniquement):
const response = await fetch('/api/token/?status_only=true', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
id: 123,
status: 1
})
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": "",
"data": {
"id": 123,
"name": "Updated Token",
"status": 1
}
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "The token has expired and cannot be enabled. Please modify the token expiration time first, or set it to never expire"
}🧾 Description du champ:
id(Numéro): ID du jeton, obligatoirestatus_only(Paramètre de requête) : s'il faut mettre à jour uniquement l'état- Les autres champs sont les mêmes que ceux de l'interface Créer un jeton, tous sont facultatifs
Supprimer le jeton
- Nom de l'interface: Supprimer le jeton
- Méthode HTTP: SUPPRIMER
- Chemin:
/api/token/:id - Exigence d'authentification: Utilisateur
- Description de la fonction: supprime le jeton spécifié.
💡 Exemple de demande:
const response = await fetch('/api/token/123', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": ""
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Token does not exist"
}🧾 Description du champ:
id (Numéro): ID de jeton, transmis via le chemin URL
Jeton de suppression par lots
- Nom de l'interface: Jeton de suppression par lots
- Méthode HTTP: POST
- Chemin:
/api/token/batch - Exigence d'authentification: Utilisateur
- Description de la fonction: supprime plusieurs jetons dans un lot.
💡 Exemple de demande:
const response = await fetch('/api/token/batch', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
ids: [1, 2, 3, 4, 5]
})
});
const data = await response.json();✅ Exemple de réponse réussie:
{
"success": true,
"message": "",
"data": 5
}❗ Exemple de réponse échouée:
{
"success": false,
"message": "Parameter error"
}🧾 Description du champ:
ids(Array): Liste des ID de jeton à supprimer, obligatoire et ne peut pas être videdata(Nombre): Nombre de jetons supprimés avec succès