OneAPI開源項目的地址->One API
最近在學習oneapi,閱讀了部分源碼,把接口文檔分享給大家
OneAPI API 文檔
本文檔描述了One API 開源項目的 API 接口(部分)。
用戶管理 (User Management)
1. 用戶注冊 (User Registration)
-
接口路徑:
/api/user/register -
請求方法:
POST -
控制器函數(shù):
controller.Register -
認證:
- 無需認證。
- 可能受以下中間件限制:
-
middleware.CriticalRateLimit(): 限制接口調(diào)用頻率。 -
middleware.TurnstileCheck(): 如果啟用了 Turnstile 人機驗證,則需要通過驗證。
-
- 功能: 創(chuàng)建一個新的用戶賬戶。
-
請求體:
{ "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是邀請者的邀請碼,如果提供,新用戶將與邀請者關(guān)聯(lián)。
- 此接口的可用性取決于管理員是否在后臺設置中開啟了“新用戶注冊” (
2. 用戶登錄 (User Login)
-
接口路徑:
/api/user/login -
請求方法:
POST -
控制器函數(shù):
controller.Login -
認證:
- 無需認證。
- 可能受以下中間件限制:
-
middleware.CriticalRateLimit(): 限制接口調(diào)用頻率。
-
- 功能: 驗證用戶憑據(jù)并創(chuàng)建用戶會話。
-
請求體:
{ "username": "existinguser", "password": "password123" } -
說明:
- 此接口的可用性取決于管理員是否在后臺設置中開啟了“密碼登錄” (
config.PasswordLoginEnabled)。 - 登錄成功后,服務器會設置 Session Cookie,用于后續(xù)請求的用戶認證。
- 響應中會包含用戶的基本信息(ID、用戶名、顯示名稱、角色、狀態(tài))。
- 此接口的可用性取決于管理員是否在后臺設置中開啟了“密碼登錄” (
3. 獲取當前用戶信息 (Get Self Information)
-
接口路徑:
/api/user/self -
請求方法:
GET -
控制器函數(shù):
controller.GetSelf -
認證:
- 需要用戶認證 (
middleware.UserAuth())。
- 需要用戶認證 (
- 功能: 獲取當前登錄用戶的完整信息,包括額度。
-
響應示例 (成功):
{ "success": true, "message": "", "data": { "id": 1, "username": "user1", "display_name": "User One", "role": 1, // 角色 (e.g., 1: 普通用戶, 10: 管理員) "status": 1, // 狀態(tài) (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)) - 控制器實現(xiàn):
controller/user.go(約第 248 行:GetSelf函數(shù))
- 路由定義:
令牌管理 (Token Management)
4. 獲取用戶令牌列表 (Get User Tokens)
-
接口路徑:
/api/token/ -
請求方法:
GET -
控制器函數(shù):
controller.GetAllTokens -
認證:
- 需要用戶認證 (
middleware.UserAuth())。 - 用戶需先登錄,并在請求頭中攜帶有效的認證信息(Session Cookie 或 Bearer Token)。
- 需要用戶認證 (
- 功能: 查詢并返回當前登錄用戶創(chuàng)建的所有令牌。
-
查詢參數(shù):
-
p(可選): 頁碼,用于分頁,從 0 開始。每頁項目數(shù)量由config.ItemsPerPage配置。
-
-
響應示例 (成功):
{ "success": true, "message": "", "data": [ { "id": 1, "user_id": 5, "name": "My First Token", "key": "sk-abc...", // 令牌 Key (部分隱藏) "status": 1, // 令牌狀態(tài) (1: Enabled, 2: Disabled, 3: Expired, 4: Exhausted) "remain_quota": 500000, // 剩余額度 "unlimited_quota": false, // 是否無限額度 "created_time": 1678886400, // 創(chuàng)建時間 (Unix Timestamp) "accessed_time": 1678887000, // 最近訪問時間 (Unix Timestamp) "expired_time": -1 // 過期時間 (-1: 永不過期) }, { "id": 2, "user_id": 5, "name": "Another Token", "key": "sk-def..." // ... 其他令牌信息 } // ... 更多令牌 ] }
模型與渠道管理 (Model & Channel Management)
5. 獲取模型列表 (Get Models)
-
接口路徑:
/api/models -
請求方法:
GET -
認證:
- 需要用戶認證 (
middleware.UserAuth())。
- 需要用戶認證 (
- 功能: 獲取當前 OneAPI 系統(tǒng)中所有可用的模型列表(按渠道分組)。
-
響應示例 (成功):
{ "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(整數(shù)),值是該渠道類型支持的模型名稱數(shù)組。 - 此接口返回的是系統(tǒng) 當前版本支持的所有 模型類型,按其 默認 關(guān)聯(lián)的渠道類型進行分組。這 不 代表管理員實際配置的可用渠道或用戶實際可用的模型。
- 響應
6. 獲取渠道列表 (Get Channels)
-
接口路徑:
/api/channel/ -
請求方法:
GET -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 獲取管理員在 OneAPI 系統(tǒng)中配置的所有渠道列表。
-
查詢參數(shù):
-
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, // 狀態(tài) (1: Enabled, 2: Disabled) "group": "default", // 所屬分組 "priority": 0, // 優(yōu)先級 "weight": 0, // 權(quán)重 "created_time": 1234567890, // 創(chuàng)建時間 (Unix Timestamp) "base_url": "https://api.openai.com/v1", // 基礎(chǔ) URL "other": "{}" // 其他配置 (JSON 字符串) // ... 其他渠道信息 } // ... 其他渠道 ] } - 說明: 返回管理員實際配置的渠道詳細信息。
7. 添加渠道 (Add Channel)
-
接口路徑:
/api/channel/ -
請求方法:
POST -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 添加一個新的渠道到 OneAPI 系統(tǒng)。
-
請求體:
{ "name": "My New Channel", "type": 1, // 渠道類型 (必填) "key": "sk-xxx\nsk-yyy", // API 密鑰 (必填,支持多行,每行一個 Key) "base_url": "", // 覆蓋默認 Base URL (可選) "other": "", // 其他配置 (可選, JSON 字符串) "models": "gpt-3.5-turbo,gpt-4", // 支持的模型列表 (逗號分隔, 必填) "group": "default", // 所屬分組 (默認 'default') "status": 1, // 狀態(tài) (1: Enabled, 2: Disabled, 默認 1) "priority": 0 // 優(yōu)先級 (可選, 整數(shù), 值越大優(yōu)先級越高) // 可能還有其他字段,如 weight, headers 等,取決于 OneAPI 版本和配置 } -
響應示例 (成功):
{ "success": true, "message": "" } -
說明:
-
key字段支持多行文本,每行一個密鑰,系統(tǒng)會自動為每個密鑰創(chuàng)建一個渠道記錄。 - 具體的必填和可選字段可能因 OneAPI 版本和渠道類型而異。
-
8. 刪除渠道 (Delete Channel)
-
接口路徑:
/api/channel/{id} -
請求方法:
DELETE -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 刪除指定 ID 的渠道。
-
路徑參數(shù):
-
id(必填): 要刪除的渠道 ID。
-
-
響應示例 (成功):
{ "success": true, "message": "" }
9. 更新渠道 (Update Channel)
-
接口路徑:
/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字段,其他字段為可選,僅提供需要修改的字段即可。
10. 刪除已禁用的渠道 (Delete Disabled Channels)
-
接口路徑:
/api/channel/disabled -
請求方法:
DELETE -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 批量刪除所有狀態(tài)為“已禁用” (status=2) 的渠道。
-
響應示例 (成功):
{ "success": true, "message": "", "data": 2 // 實際刪除的渠道數(shù)量 }
11. 測試指定渠道 (Test Channel)
-
接口路徑:
/api/channel/test/{id} -
請求方法:
GET -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 測試指定 ID 的渠道的連通性和可用性。
-
路徑參數(shù):
-
id(必填): 要測試的渠道 ID。
-
-
響應示例 (成功):
{ "success": true, "message": "", // 成功時通常為空 "time": 0.532 // 測試耗時(秒) } -
響應示例 (失敗):
{ "success": false, "message": "連接失敗: 超時或認證錯誤", // 具體的錯誤信息 "time": 5.1 // 測試耗時(秒) } -
說明: 系統(tǒng)會嘗試使用該渠道配置向其
base_url發(fā)送一個簡單的測試請求(通常是獲取模型列表或余額)。
12. 測試所有渠道 (Test All Channels)
-
接口路徑:
/api/channel/test -
請求方法:
GET -
認證:
- 需要管理員認證 (
middleware.AdminAuth())。
- 需要管理員認證 (
- 功能: 觸發(fā)對所有已配置渠道的后臺異步測試。
-
查詢參數(shù):
-
scope(可選): 測試范圍。如果未指定或為 "all",則測試所有渠道??梢灾付ㄌ囟ㄇ?ID (e.g.,?scope=1,3,5) 或分組名稱 (e.g.,?scope=group:default) 來測試特定范圍。
-
-
響應示例 (請求已接受):
{ "success": true, "message": "" // 通常表示測試任務已啟動 } -
說明:
- 此接口僅用于 啟動 后臺測試任務,不會立即返回測試結(jié)果。
- 測試過程是異步的。測試結(jié)果(成功、失敗、耗時)通常會在管理界面的渠道列表中更新。
- 根據(jù)系統(tǒng)配置(如“出錯時自動禁用”),測試失敗的渠道可能會被自動禁用。
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!