File size: 2,881 Bytes
97ec0e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Token 管理 API 文档

## 概述

提供对本地 Token 凭证的完整管理功能,支持增删改查和热重载。所有操作都会自动更新内存中的 Token 池。

## 认证

所有 API 请求需要在请求头中包含 API Key:

```
Authorization: Bearer sk-text  // 配置内文件配置
```

## 接口列表

### 1. 获取 Token 列表

**请求**
```bash
GET /v1/tokens
```

**响应**
```json
{
  "success": true,
  "data": [
    {
      "refresh_token": "1//xxx",
      "access_token_suffix": "...abc12345",
      "expires_in": 3599,
      "timestamp": 1234567890000,
      "enable": true,
      "projectId": "project-123"
    }
  ]
}
```

### 2. 添加新 Token

**请求**
```bash
POST /v1/tokens
Content-Type: application/json

{
  "access_token": "ya29.xxx",
  "refresh_token": "1//xxx",
  "expires_in": 3599
}
```

**响应**
```json
{
  "success": true,
  "message": "Token添加成功"
}
```

### 3. 更新 Token

**请求**
```bash
PUT /v1/tokens/{refresh_token}
Content-Type: application/json

{
  "enable": false,
  "access_token": "new_token"
}
```

**响应**
```json
{
  "success": true,
  "message": "Token更新成功"
}
```

### 4. 删除 Token

**请求**
```bash
DELETE /v1/tokens/{refresh_token}
```

**响应**
```json
{
  "success": true,
  "message": "Token删除成功"
}
```

### 5. 热重载 Token

**请求**
```bash
POST /v1/tokens/reload
```

**响应**
```json
{
  "success": true,
  "message": "Token已热重载"
}
```

## 使用示例

### 查看当前 Token 状态
```bash
curl http://localhost:8045/v1/tokens \
  -H "Authorization: Bearer sk-text"
```

### 添加新账号
```bash
curl -X POST http://localhost:8045/v1/tokens \
  -H "Authorization: Bearer sk-text" \
  -H "Content-Type: application/json" \
  -d '{
    "access_token": "ya29.a0ARrdaM...",
    "refresh_token": "1//0GWI4...",
    "expires_in": 3599
  }'
```

### 禁用某个账号
```bash
curl -X PUT http://localhost:8045/v1/tokens/1//0GWI4... \
  -H "Authorization: Bearer sk-text" \
  -H "Content-Type: application/json" \
  -d '{"enable": false}'
```

### 删除账号
```bash
curl -X DELETE http://localhost:8045/v1/tokens/1//0GWI4... \
  -H "Authorization: Bearer sk-text"
```

### 重新加载配置
```bash
curl -X POST http://localhost:8045/v1/tokens/reload \
  -H "Authorization: Bearer sk-text"
```

## 注意事项

1. **refresh_token** 作为唯一标识符,不可重复
2. 所有操作会立即生效,无需重启服务
3. 删除操作不可恢复,请谨慎使用
4. Token 过期会自动刷新,无需手动维护
5. 禁用的 Token 不会参与轮换,但仍保存在文件中

## 错误码

- `400` - 请求参数错误
- `401` - API Key 验证失败
- `500` - 服务器内部错误

## 安全建议

- 定期备份 `data/accounts.json` 文件
- 不要在日志中暴露完整的 Token 信息
- 建议使用 HTTPS 部署生产环境