api.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package router
  2. import (
  3. "github.com/gin-contrib/gzip"
  4. "github.com/gin-gonic/gin"
  5. "github.com/labring/aiproxy/core/common/env"
  6. "github.com/labring/aiproxy/core/controller"
  7. mcp "github.com/labring/aiproxy/core/controller/mcp"
  8. "github.com/labring/aiproxy/core/middleware"
  9. )
  10. func SetAPIRouter(router *gin.Engine) {
  11. api := router.Group("/api")
  12. if env.Bool("GZIP_ENABLED", false) {
  13. api.Use(gzip.Gzip(gzip.DefaultCompression))
  14. }
  15. healthRouter := api.Group("")
  16. healthRouter.GET("/status", controller.GetStatus)
  17. apiRouter := api.Group("")
  18. apiRouter.Use(middleware.AdminAuth)
  19. {
  20. modelsRoute := apiRouter.Group("/models")
  21. {
  22. modelsRoute.GET("/builtin", controller.BuiltinModels)
  23. modelsRoute.GET("/builtin/channel", controller.ChannelBuiltinModels)
  24. modelsRoute.GET("/builtin/channel/:type", controller.ChannelBuiltinModelsByType)
  25. modelsRoute.GET("/enabled", controller.EnabledModels)
  26. modelsRoute.GET("/enabled/:set", controller.EnabledModelsSet)
  27. modelsRoute.GET("/sets", controller.EnabledModelSets)
  28. modelsRoute.GET("/default", controller.ChannelDefaultModelsAndMapping)
  29. modelsRoute.GET("/default/:type", controller.ChannelDefaultModelsAndMappingByType)
  30. }
  31. dashboardRoute := apiRouter.Group("/dashboard")
  32. {
  33. dashboardRoute.GET("/", controller.GetDashboard)
  34. dashboardRoute.GET("/:group", controller.GetGroupDashboard)
  35. dashboardRoute.GET("/:group/models", controller.GetGroupDashboardModels)
  36. }
  37. dashboardV2Route := apiRouter.Group("/dashboardv2")
  38. {
  39. dashboardV2Route.GET("/", controller.GetTimeSeriesModelData)
  40. dashboardV2Route.GET("/:group", controller.GetGroupTimeSeriesModelData)
  41. }
  42. groupsRoute := apiRouter.Group("/groups")
  43. {
  44. groupsRoute.GET("/", controller.GetGroups)
  45. groupsRoute.GET("/search", controller.SearchGroups)
  46. groupsRoute.POST("/batch_delete", controller.DeleteGroups)
  47. groupsRoute.POST("/batch_status", controller.UpdateGroupsStatus)
  48. groupsRoute.GET("/ip_groups", controller.GetIPGroupList)
  49. }
  50. groupRoute := apiRouter.Group("/group")
  51. {
  52. groupRoute.POST("/:group", controller.CreateGroup)
  53. groupRoute.PUT("/:group", controller.UpdateGroup)
  54. groupRoute.GET("/:group", controller.GetGroup)
  55. groupRoute.DELETE("/:group", controller.DeleteGroup)
  56. groupRoute.POST("/:group/status", controller.UpdateGroupStatus)
  57. groupRoute.POST("/:group/rpm_ratio", controller.UpdateGroupRPMRatio)
  58. groupRoute.POST("/:group/tpm_ratio", controller.UpdateGroupTPMRatio)
  59. groupModelConfigRoute := groupRoute.Group("/:group/model_config")
  60. {
  61. groupModelConfigRoute.GET("/", controller.GetGroupModelConfigs)
  62. groupModelConfigRoute.POST("/", controller.SaveGroupModelConfigs)
  63. groupModelConfigRoute.PUT("/", controller.UpdateGroupModelConfigs)
  64. groupModelConfigRoute.DELETE("/", controller.DeleteGroupModelConfigs)
  65. groupModelConfigRoute.POST("/:model", controller.SaveGroupModelConfig)
  66. groupModelConfigRoute.PUT("/:model", controller.UpdateGroupModelConfig)
  67. groupModelConfigRoute.DELETE("/:model", controller.DeleteGroupModelConfig)
  68. groupModelConfigRoute.GET("/:model", controller.GetGroupModelConfig)
  69. }
  70. groupMcpRoute := groupRoute.Group("/:group/mcp")
  71. {
  72. groupMcpRoute.GET("/", mcp.GetGroupPublicMCPs)
  73. groupMcpRoute.GET("/:id", mcp.GetGroupPublicMCPByID)
  74. }
  75. }
  76. optionRoute := apiRouter.Group("/option")
  77. {
  78. optionRoute.GET("/", controller.GetOptions)
  79. optionRoute.GET("/:key", controller.GetOption)
  80. optionRoute.PUT("/", controller.UpdateOption)
  81. optionRoute.POST("/", controller.UpdateOption)
  82. optionRoute.PUT("/:key", controller.UpdateOptionByKey)
  83. optionRoute.POST("/batch", controller.UpdateOptions)
  84. }
  85. channelsRoute := apiRouter.Group("/channels")
  86. {
  87. channelsRoute.GET("/", controller.GetChannels)
  88. channelsRoute.GET("/all", controller.GetAllChannels)
  89. channelsRoute.GET("/type_metas", controller.ChannelTypeMetas)
  90. channelsRoute.POST("/", controller.AddChannels)
  91. channelsRoute.GET("/search", controller.SearchChannels)
  92. channelsRoute.GET("/update_balance", controller.UpdateAllChannelsBalance)
  93. channelsRoute.POST("/batch_delete", controller.DeleteChannels)
  94. channelsRoute.GET("/test", controller.TestAllChannels)
  95. importRoute := channelsRoute.Group("/import")
  96. {
  97. importRoute.POST("/oneapi", controller.ImportChannelFromOneAPI)
  98. }
  99. }
  100. channelRoute := apiRouter.Group("/channel")
  101. {
  102. channelRoute.GET("/:id", controller.GetChannel)
  103. channelRoute.POST("/", controller.AddChannel)
  104. channelRoute.PUT("/:id", controller.UpdateChannel)
  105. channelRoute.POST("/:id/status", controller.UpdateChannelStatus)
  106. channelRoute.DELETE("/:id", controller.DeleteChannel)
  107. channelRoute.GET("/:id/test", controller.TestChannelModels)
  108. channelRoute.GET("/:id/test/:model", controller.TestChannel)
  109. channelRoute.GET("/:id/update_balance", controller.UpdateChannelBalance)
  110. }
  111. tokensRoute := apiRouter.Group("/tokens")
  112. {
  113. tokensRoute.GET("/", controller.GetTokens)
  114. tokensRoute.GET("/:id", controller.GetToken)
  115. tokensRoute.PUT("/:id", controller.UpdateToken)
  116. tokensRoute.POST("/:id/status", controller.UpdateTokenStatus)
  117. tokensRoute.POST("/:id/name", controller.UpdateTokenName)
  118. tokensRoute.DELETE("/:id", controller.DeleteToken)
  119. tokensRoute.GET("/search", controller.SearchTokens)
  120. tokensRoute.POST("/batch_delete", controller.DeleteTokens)
  121. }
  122. tokenRoute := apiRouter.Group("/token")
  123. {
  124. tokenRoute.GET("/:group/search", controller.SearchGroupTokens)
  125. tokenRoute.POST("/:group/batch_delete", controller.DeleteGroupTokens)
  126. tokenRoute.GET("/:group", controller.GetGroupTokens)
  127. tokenRoute.GET("/:group/:id", controller.GetGroupToken)
  128. tokenRoute.POST("/:group", controller.AddGroupToken)
  129. tokenRoute.PUT("/:group/:id", controller.UpdateGroupToken)
  130. tokenRoute.POST("/:group/:id/status", controller.UpdateGroupTokenStatus)
  131. tokenRoute.POST("/:group/:id/name", controller.UpdateGroupTokenName)
  132. tokenRoute.DELETE("/:group/:id", controller.DeleteGroupToken)
  133. }
  134. logsRoute := apiRouter.Group("/logs")
  135. {
  136. logsRoute.GET("/", controller.GetLogs)
  137. logsRoute.DELETE("/", controller.DeleteHistoryLogs)
  138. logsRoute.GET("/search", controller.SearchLogs)
  139. logsRoute.GET("/consume_error", controller.SearchConsumeError)
  140. logsRoute.GET("/detail/:log_id", controller.GetLogDetail)
  141. }
  142. logRoute := apiRouter.Group("/log")
  143. {
  144. logRoute.GET("/:group", controller.GetGroupLogs)
  145. logRoute.GET("/:group/search", controller.SearchGroupLogs)
  146. logRoute.GET("/:group/detail/:log_id", controller.GetGroupLogDetail)
  147. }
  148. modelConfigsRoute := apiRouter.Group("/model_configs")
  149. {
  150. modelConfigsRoute.GET("/", controller.GetModelConfigs)
  151. modelConfigsRoute.GET("/search", controller.SearchModelConfigs)
  152. modelConfigsRoute.GET("/all", controller.GetAllModelConfigs)
  153. modelConfigsRoute.POST("/contains", controller.GetModelConfigsByModelsContains)
  154. modelConfigsRoute.POST("/", controller.SaveModelConfigs)
  155. modelConfigsRoute.POST("/batch_delete", controller.DeleteModelConfigs)
  156. }
  157. modelConfigRoute := apiRouter.Group("/model_config")
  158. {
  159. modelConfigRoute.GET("/:model", controller.GetModelConfig)
  160. modelConfigRoute.POST("/", controller.SaveModelConfig)
  161. modelConfigRoute.DELETE("/:model", controller.DeleteModelConfig)
  162. }
  163. monitorRoute := apiRouter.Group("/monitor")
  164. {
  165. monitorRoute.GET("/", controller.GetAllChannelModelErrorRates)
  166. monitorRoute.GET("/:id", controller.GetChannelModelErrorRates)
  167. monitorRoute.DELETE("/", controller.ClearAllModelErrors)
  168. monitorRoute.DELETE("/:id", controller.ClearChannelAllModelErrors)
  169. monitorRoute.DELETE("/:id/:model", controller.ClearChannelModelErrors)
  170. monitorRoute.GET("/models", controller.GetModelsErrorRate)
  171. monitorRoute.GET("/banned_channels", controller.GetAllBannedModelChannels)
  172. }
  173. publicMcpRoute := apiRouter.Group("/mcp/public")
  174. {
  175. publicMcpRoute.GET("/", mcp.GetPublicMCPs)
  176. publicMcpRoute.GET("/all", mcp.GetAllPublicMCPs)
  177. publicMcpRoute.GET("/:id", mcp.GetPublicMCPByID)
  178. publicMcpRoute.POST("/", mcp.CreatePublicMCP)
  179. publicMcpRoute.PUT("/:id", mcp.UpdatePublicMCP)
  180. publicMcpRoute.DELETE("/:id", mcp.DeletePublicMCP)
  181. publicMcpRoute.POST("/:id/status", mcp.UpdatePublicMCPStatus)
  182. publicMcpRoute.GET("/:id/group/:group/params", mcp.GetGroupPublicMCPReusingParam)
  183. publicMcpRoute.POST(
  184. "/:id/group/:group/params",
  185. mcp.SaveGroupPublicMCPReusingParam,
  186. )
  187. }
  188. groupMcpRoute := apiRouter.Group("/mcp/group")
  189. {
  190. groupMcpRoute.GET("/:group", mcp.GetGroupMCPs)
  191. groupMcpRoute.GET("/all", mcp.GetAllGroupMCPs)
  192. groupMcpRoute.GET("/:group/:id", mcp.GetGroupMCPByID)
  193. groupMcpRoute.POST("/:group", mcp.CreateGroupMCP)
  194. groupMcpRoute.PUT("/:group/:id", mcp.UpdateGroupMCP)
  195. groupMcpRoute.DELETE("/:group/:id", mcp.DeleteGroupMCP)
  196. groupMcpRoute.POST("/:group/:id/status", mcp.UpdateGroupMCPStatus)
  197. }
  198. embedMcpRoute := apiRouter.Group("/embedmcp")
  199. {
  200. embedMcpRoute.GET("/", mcp.GetEmbedMCPs)
  201. embedMcpRoute.POST("/", mcp.SaveEmbedMCP)
  202. }
  203. testEmbedMcpRoute := apiRouter.Group("/test-embedmcp")
  204. {
  205. testEmbedMcpRoute.GET("/:id/sse", mcp.TestEmbedMCPSseServer)
  206. testEmbedMcpRoute.POST("/message", mcp.TestEmbedMCPMessage)
  207. testEmbedMcpRoute.GET("/:id", mcp.TestEmbedMCPStreamable)
  208. testEmbedMcpRoute.POST("/:id", mcp.TestEmbedMCPStreamable)
  209. testEmbedMcpRoute.DELETE("/:id", mcp.TestEmbedMCPStreamable)
  210. }
  211. }
  212. }