分享開源項目oneapi的部分API接口文檔

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),請求體中必須包含 emailverification_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ā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容