OneAPI开源项目的地址->One API
最近在学习oneapi,阅读了部分源码,把接口文档分享给大家
本文档描述了One API 开源项目的 API 接口(部分)。
/api/user/register
POST
controller.Register
middleware.CriticalRateLimit()
: 限制接口调用频率。middleware.TurnstileCheck()
: 如果启用了 Turnstile 人机验证,则需要通过验证。{
"username": "newuser",
"password": "password123",
"email": "user@example.com", // 如果开启了邮箱验证则必须
"verification_code": "123456", // 如果开启了邮箱验证则必须
"aff_code": "invite_code" // 可选,邀请码
}
config.RegisterEnabled
) 和“密码注册” (config.PasswordRegisterEnabled
)。config.EmailVerificationEnabled
),请求体中必须包含 email
和 verification_code
字段,且验证码需有效。aff_code
是邀请者的邀请码,如果提供,新用户将与邀请者关联。/api/user/login
POST
controller.Login
middleware.CriticalRateLimit()
: 限制接口调用频率。{
"username": "existinguser",
"password": "password123"
}
config.PasswordLoginEnabled
)。/api/user/self
GET
controller.GetSelf
middleware.UserAuth()
)。{
"success": true,
"message": "",
"data": {
"id": 1,
"username": "user1",
"display_name": "User One",
"role": 1, // 角色 (e.g., 1: 普通用户, 10: 管理员)
"status": 1, // 状态 (e.g., 1: Enabled, 2: Disabled)
"email": "user@example.com",
"quota": 1000000, // 总配额
"used_quota": 250000, // 已用额度
"remain_quota": 750000 // 剩余额度 (计算得出: quota - used_quota)
}
}
router/api-router.go
(约第 36 行: selfRoute.GET("/self", controller.GetSelf)
)controller/user.go
(约第 248 行: GetSelf
函数)/api/token/
GET
controller.GetAllTokens
middleware.UserAuth()
)。p
(可选): 页码,用于分页,从 0 开始。每页项目数量由 config.ItemsPerPage
配置。{
"success": true,
"message": "",
"data": [
{
"id": 1,
"user_id": 5,
"name": "My First Token",
"key": "sk-abc...", // 令牌 Key (部分隐藏)
"status": 1, // 令牌状态 (1: Enabled, 2: Disabled, 3: Expired, 4: Exhausted)
"remain_quota": 500000, // 剩余额度
"unlimited_quota": false, // 是否无限额度
"created_time": 1678886400, // 创建时间 (Unix Timestamp)
"accessed_time": 1678887000, // 最近访问时间 (Unix Timestamp)
"expired_time": -1 // 过期时间 (-1: 永不过期)
},
{
"id": 2,
"user_id": 5,
"name": "Another Token",
"key": "sk-def..."
// ... 其他令牌信息
}
// ... 更多令牌
]
}
/api/models
GET
middleware.UserAuth()
)。{
"success": true,
"message": "",
"data": {
"1": ["gpt-3.5-turbo", "gpt-4", "gpt-4-32k"], // 渠道类型 1 (如 OpenAI) 对应的模型
"2": ["claude-2", "claude-instant-1"], // 渠道类型 2 (如 Anthropic) 对应的模型
"3": ["gemini-pro", "gemini-pro-vision"] // 渠道类型 3 (如 Google) 对应的模型
// ... 其他渠道类型的模型列表
}
}
data
是一个对象,键是渠道 类型 ID(整数),值是该渠道类型支持的模型名称数组。/api/channel/
GET
middleware.AdminAuth()
)。p
(可选): 页码,用于分页,从 0 开始。{
"success": true,
"message": "",
"data": [
{
"id": 1,
"name": "OpenAI Channel 1",
"type": 1, // 渠道类型 (e.g., 1: OpenAI, 2: Anthropic, 3: Google PaLM2/Gemini)
"key": "sk-xxx...", // API Key (部分隐藏)
"models": "gpt-3.5-turbo,gpt-4", // 该渠道支持的模型列表 (逗号分隔)
"status": 1, // 状态 (1: Enabled, 2: Disabled)
"group": "default", // 所属分组
"priority": 0, // 优先级
"weight": 0, // 权重
"created_time": 1234567890, // 创建时间 (Unix Timestamp)
"base_url": "https://api.openai.com/v1", // 基础 URL
"other": "{}" // 其他配置 (JSON 字符串)
// ... 其他渠道信息
}
// ... 其他渠道
]
}
/api/channel/
POST
middleware.AdminAuth()
)。{
"name": "My New Channel",
"type": 1, // 渠道类型 (必填)
"key": "sk-xxxnsk-yyy", // API 密钥 (必填,支持多行,每行一个 Key)
"base_url": "", // 覆盖默认 Base URL (可选)
"other": "", // 其他配置 (可选, JSON 字符串)
"models": "gpt-3.5-turbo,gpt-4", // 支持的模型列表 (逗号分隔, 必填)
"group": "default", // 所属分组 (默认 'default')
"status": 1, // 状态 (1: Enabled, 2: Disabled, 默认 1)
"priority": 0 // 优先级 (可选, 整数, 值越大优先级越高)
// 可能还有其他字段,如 weight, headers 等,取决于 OneAPI 版本和配置
}
{
"success": true,
"message": ""
}
key
字段支持多行文本,每行一个密钥,系统会自动为每个密钥创建一个渠道记录。/api/channel/{id}
DELETE
middleware.AdminAuth()
)。id
(必填): 要删除的渠道 ID。{
"success": true,
"message": ""
}
/api/channel/
PUT
middleware.AdminAuth()
)。{
"id": 1, // 要更新的渠道 ID (必填)
"name": "OpenAI Channel Updated",
"type": 1,
"key": "sk-new-key",
"base_url": "https://api.openai.com/v1",
"other": "{}",
"models": "gpt-3.5-turbo,gpt-4,gpt-4-32k",
"group": "premium",
"status": 1,
"priority": 10
// 提供需要更新的字段及其新值
}
{
"success": true,
"message": "",
"data": {
"id": 1,
"name": "OpenAI Channel Updated",
"type": 1,
"key": "sk-new...", // Key 可能部分隐藏
"models": "gpt-3.5-turbo,gpt-4,gpt-4-32k",
"status": 1,
"created_time": 1234567890
// ... 其他更新后的渠道信息
}
}
id
字段,其他字段为可选,仅提供需要修改的字段即可。/api/channel/disabled
DELETE
middleware.AdminAuth()
)。{
"success": true,
"message": "",
"data": 2 // 实际删除的渠道数量
}
/api/channel/test/{id}
GET
middleware.AdminAuth()
)。id
(必填): 要测试的渠道 ID。{
"success": true,
"message": "", // 成功时通常为空
"time": 0.532 // 测试耗时(秒)
}
{
"success": false,
"message": "连接失败: 超时或认证错误", // 具体的错误信息
"time": 5.1 // 测试耗时(秒)
}
base_url
发送一个简单的测试请求(通常是获取模型列表或余额)。/api/channel/test
GET
middleware.AdminAuth()
)。scope
(可选): 测试范围。如果未指定或为 "all",则测试所有渠道。可以指定特定渠道 ID (e.g., ?scope=1,3,5
) 或分组名称 (e.g., ?scope=group:default
) 来测试特定范围。{
"success": true,
"message": "" // 通常表示测试任务已启动
}
本文由博客一文多发平台 OpenWrite 发布!
参与评论
手机查看
返回顶部