Files
ragflow/internal/admin/router.go
Jin Hai 6b8a76c659 Go: refactor API route for EE (#17093)
### Summary

As title.

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
2026-07-20 14:34:35 +08:00

137 lines
4.5 KiB
Go

//
// Copyright 2026 The InfiniFlow Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package admin
import (
"github.com/gin-gonic/gin"
)
// Router admin router
type Router struct {
handler *Handler
}
// NewRouter create admin router
func NewRouter(handler *Handler) *Router {
return &Router{
handler: handler,
}
}
// Setup setup routes
func (r *Router) Setup(engine *gin.Engine) {
SetupEERouter(engine)
// Healthz to get system health
engine.GET("/healthz", r.handler.Healthz)
engine.GET("/", r.handler.Live)
engine.GET("/live", r.handler.Live)
// Admin API routes with prefix /api/v1/admin
admin := engine.Group("/api/v1/admin")
{
// Public routes
admin.GET("/ping", r.handler.Ping)
admin.POST("/login", r.handler.Login)
admin.POST("/reports", r.handler.Reports)
//admin.POST("/ingestion/tasks", r.handler.StartIngestionTask)
//admin.DELETE("/ingestion", r.handler.CancelIngestionTask) // cancel ingestion
//admin.GET("/ingestion/tasks", r.handler.ListIngestionTasks)
// Protected routes
protected := admin.Group("")
protected.Use(r.handler.AuthMiddleware())
{
protected.POST("/logout", r.handler.Logout)
// Auth
protected.GET("/auth", r.handler.AuthCheck)
// User management
protected.GET("/users", r.handler.ListUsers)
protected.POST("/users", r.handler.CreateUser)
protected.GET("/users/:username", r.handler.GetUser)
protected.DELETE("/users/:username", r.handler.DeleteUser)
protected.PUT("/users/:username/password", r.handler.ChangePassword)
protected.PUT("/users/:username/activate", r.handler.UpdateUserActivateStatus)
protected.PUT("/users/:username/admin", r.handler.GrantAdmin)
protected.DELETE("/users/:username/admin", r.handler.RevokeAdmin)
// Service management
protected.GET("/services", r.handler.GetServices)
protected.GET("/service_types/:service_type", r.handler.GetServicesByType)
protected.GET("/services/:service_id", r.handler.GetService)
protected.DELETE("/services/:service_id", r.handler.ShutdownService)
protected.PUT("/services/:service_id", r.handler.RestartService)
protected.POST("/services/:service_id", r.handler.StartService)
// Variables/Settings
protected.GET("/variables", r.handler.ListVariables)
protected.PUT("/variables", r.handler.SetVariable)
protected.GET("/variables/:var_name", r.handler.ShowVariable)
// Configs
protected.GET("/configs", r.handler.ListConfigs)
// Log level
protected.GET("/config/log", r.handler.GetLogLevel)
protected.PUT("/config/log", r.handler.SetLogLevel)
// Environments
protected.GET("/environments", r.handler.ListEnvironments)
// Version
protected.GET("/version", r.handler.GetVersion)
queue := protected.Group("/queue")
{
queue.GET("/", r.handler.ShowMessageQueue)
queue.POST("/messages", r.handler.PublishMessageToQueue)
queue.GET("/messages", r.handler.ListMessagesFromQueue)
queue.PUT("/messages", r.handler.PullMessageFromQueue)
}
protected.GET("/store", r.handler.PingStore)
protected.GET("/cache", r.handler.PingCache)
protected.GET("/engine", r.handler.PingEngine)
protected.GET("/ingestors", r.handler.ListIngestors)
protected.DELETE("/ingestors", r.handler.ShutdownIngestor)
// Sandbox
protected.GET("/sandbox/providers", r.handler.ListSandboxProviders)
protected.GET("/sandbox/providers/:provider_id/schema", r.handler.GetSandboxProviderSchema)
protected.GET("/sandbox/config", r.handler.GetSandboxConfig)
protected.POST("/sandbox/config", r.handler.SetSandboxConfig)
protected.POST("/sandbox/test", r.handler.TestSandboxConnection)
protected.GET("/all-models", r.handler.ListAllModels)
protected.GET("/all-models/:model_name", r.handler.ShowModel)
// Ingestion tasks
protected.DELETE("/ingestion/tasks", r.handler.RemoveIngestionTasks)
protected.PUT("/ingestion/tasks", r.handler.StopIngestionTasks)
protected.GET("/ingestion/tasks", r.handler.ListIngestionTasks)
RegisterEERouter(protected, r)
}
}
// Handle undefined routes
engine.NoRoute(r.handler.HandleNoRoute)
}