controller

package
v0.1.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2025 License: MIT Imports: 42 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OneAPIOpenAI = iota + 1
	OneAPIAPI2D
	OneAPIAzure
	OneAPICloseAI
	OneAPIOpenAISB
	OneAPIOpenAIMax
	OneAPIOhMyGPT
	OneAPICustom
	OneAPIAils
	OneAPIAIProxy
	OneAPIPaLM
	OneAPIAPI2GPT
	OneAPIAIGC2D
	OneAPIAnthropic
	OneAPIBaidu
	OneAPIZhipu
	OneAPIAli
	OneAPIXunfei
	OneAPIAI360
	OneAPIOpenRouter
	OneAPIAIProxyLibrary
	OneAPIFastGPT
	OneAPITencent
	OneAPIGemini
	OneAPIMoonshot
	OneAPIBaichuan
	OneAPIMinimax
	OneAPIMistral
	OneAPIGroq
	OneAPIOllama
	OneAPILingYiWanWu
	OneAPIStepFun
	OneAPIAwsClaude
	OneAPICoze
	OneAPICohere
	OneAPIDeepSeek
	OneAPICloudflare
	OneAPIDeepL
	OneAPITogetherAI
	OneAPIDoubao
	OneAPINovita
	OneAPIVertextAI
	OneAPIProxy
	OneAPISiliconFlow
	OneAPIXAI
	OneAPIReplicate
	OneAPIBaiduV2
	OneAPIXunfeiV2
	OneAPIAliBailian
	OneAPIOpenAICompatible
	OneAPIGeminiOpenAICompatible
)

https://github.com/songquanpeng/one-api/blob/main/relay/channeltype/define.go

Variables

View Source
var (
	ErrChannelsNotFound  = errors.New("channels not found")
	ErrChannelsExhausted = errors.New("channels exhausted")
)

Functions

func AddChannel

func AddChannel(c *gin.Context)

AddChannel godoc

@Summary		Add a single channel
@Description	Adds a new channel to the system
@Tags			channel
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			channel	body		AddChannelRequest	true	"Channel information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/channel [post]

func AddChannels

func AddChannels(c *gin.Context)

AddChannels godoc

@Summary		Add multiple channels
@Description	Adds multiple channels in a batch operation
@Tags			channels
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			channels	body		[]AddChannelRequest	true	"Channel information"
@Success		200			{object}	middleware.APIResponse
@Router			/api/channels [post]

func AddGroupToken

func AddGroupToken(c *gin.Context)

AddGroupToken godoc

@Summary		Add group token
@Description	Adds a new token to a specific group
@Tags			token
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group				path		string			true	"Group name"
@Param			auto_create_group	query		bool			false	"Auto create group"
@Param			token				body		AddTokenRequest	true	"Token information"
@Success		200					{object}	middleware.APIResponse{data=TokenResponse}
@Router			/api/token/{group} [post]

func AddOneAPIChannel

func AddOneAPIChannel(ch OneAPIChannel) error

func AudioSpeech added in v0.1.5

func AudioSpeech() []gin.HandlerFunc

AudioSpeech godoc

@Summary		AudioSpeech
@Description	AudioSpeech
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.TextToSpeechRequest		true	"Request"
@Param			Aiproxy-Channel	header		string							false	"Optional Aiproxy-Channel header"
@Success		200				{file}		file							"audio binary"
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/audio/speech [post]

func AudioTranscription added in v0.1.5

func AudioTranscription() []gin.HandlerFunc

AudioTranscription godoc

@Summary		AudioTranscription
@Description	AudioTranscription
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			model			formData	string	true	"Model"
@Param			file			formData	file	true	"File"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.SttJSONResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/audio/transcription [post]

func AudioTranslation added in v0.1.5

func AudioTranslation() []gin.HandlerFunc

AudioTranslation godoc

@Summary		AudioTranslation
@Description	AudioTranslation
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			model			formData	string	true	"Model"
@Param			file			formData	file	true	"File"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.SttJSONResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/audio/translation [post]

func AutoTestBannedModels

func AutoTestBannedModels()

func BuiltinModels

func BuiltinModels(c *gin.Context)

BuiltinModels godoc

@Summary		Get builtin models
@Description	Returns a list of builtin models
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=[]BuiltinModelConfig}
@Router			/api/models/builtin [get]

func ChannelBuiltinModels

func ChannelBuiltinModels(c *gin.Context)

ChannelBuiltinModels godoc

@Summary		Get channel builtin models
@Description	Returns a list of channel builtin models
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[int][]BuiltinModelConfig}
@Router			/api/models/builtin/channel [get]

func ChannelBuiltinModelsByType

func ChannelBuiltinModelsByType(c *gin.Context)

ChannelBuiltinModelsByType godoc

@Summary		Get channel builtin models by type
@Description	Returns a list of channel builtin models by type
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Param			type	path		string	true	"Channel type"
@Success		200		{object}	middleware.APIResponse{data=[]BuiltinModelConfig}
@Router			/api/models/builtin/channel/{type} [get]

func ChannelDefaultModelsAndMapping

func ChannelDefaultModelsAndMapping(c *gin.Context)

ChannelDefaultModelsAndMapping godoc

@Summary		Get channel default models and mapping
@Description	Returns a list of channel default models and mapping
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[string]any{models=[]string,mapping=map[string]string}}
@Router			/api/models/default [get]

func ChannelDefaultModelsAndMappingByType

func ChannelDefaultModelsAndMappingByType(c *gin.Context)

ChannelDefaultModelsAndMappingByType godoc

@Summary		Get channel default models and mapping by type
@Description	Returns a list of channel default models and mapping by type
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Param			type	path		string	true	"Channel type"
@Success		200		{object}	middleware.APIResponse{data=map[string]any{models=[]string,mapping=map[string]string}}
@Router			/api/models/default/{type} [get]

func ChannelTypeMetas

func ChannelTypeMetas(c *gin.Context)

ChannelTypeMetas godoc

@Summary		Get channel type metadata
@Description	Returns metadata for all channel types
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[int]channeltype.AdaptorMeta}
@Router			/api/channels/type_metas [get]

func ChannelTypeNames

func ChannelTypeNames(c *gin.Context)

ChannelTypeNames godoc

@Summary		Get all channel type names
@Description	Returns a list of all available channel type names
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[int]string}
@Router			/api/channels/type_names [get]

func ChatCompletions added in v0.1.5

func ChatCompletions() []gin.HandlerFunc

ChatCompletions godoc

@Summary		ChatCompletions
@Description	ChatCompletions
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.GeneralOpenAIRequest		true	"Request"
@Param			Aiproxy-Channel	header		string							false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.TextResponse				|		model.ChatCompletionsStreamResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/chat/completions [post]

func ClearAllModelErrors

func ClearAllModelErrors(c *gin.Context)

ClearAllModelErrors godoc

@Summary		Clear all model errors
@Description	Clears all model errors
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse
@Router			/api/monitor [delete]

func ClearChannelAllModelErrors

func ClearChannelAllModelErrors(c *gin.Context)

ClearChannelAllModelErrors godoc

@Summary		Clear channel all model errors
@Description	Clears all model errors for a specific channel
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Channel ID"
@Success		200	{object}	middleware.APIResponse
@Router			/api/monitor/{id} [delete]

func ClearChannelModelErrors

func ClearChannelModelErrors(c *gin.Context)

ClearChannelModelErrors godoc

@Summary		Clear channel model errors
@Description	Clears model errors for a specific channel and model
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int		true	"Channel ID"
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse
@Router			/api/monitor/{id}/{model} [delete]

func Completions added in v0.1.5

func Completions() []gin.HandlerFunc

Completions godoc

@Summary		Completions
@Description	Completions
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.GeneralOpenAIRequest	true	"Request"
@Param			Aiproxy-Channel	header		string						false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.TextResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/completions [post]

func CreateGroup

func CreateGroup(c *gin.Context)

CreateGroup godoc

@Summary		Create a new group
@Description	Creates a new group with the given information
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string				true	"Group name"
@Param			data	body		CreateGroupRequest	true	"Group information"
@Success		200		{object}	middleware.APIResponse{data=model.Group}
@Router			/api/group/{group} [post]

func DeleteChannel

func DeleteChannel(c *gin.Context)

DeleteChannel godoc

@Summary		Delete a channel
@Description	Deletes a channel by its ID
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Channel ID"
@Success		200	{object}	middleware.APIResponse
@Router			/api/channel/{id} [delete]

func DeleteChannels

func DeleteChannels(c *gin.Context)

DeleteChannels godoc

@Summary		Delete multiple channels
@Description	Deletes multiple channels by their IDs
@Tags			channels
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			ids	body		[]int	true	"Channel IDs"
@Success		200	{object}	middleware.APIResponse
@Router			/api/channels/batch_delete [post]

func DeleteGroup

func DeleteGroup(c *gin.Context)

DeleteGroup godoc

@Summary		Delete a group
@Description	Deletes a group by its name
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group} [delete]

func DeleteGroupModelConfig added in v0.1.5

func DeleteGroupModelConfig(c *gin.Context)

DeleteGroupModelConfig godoc

@Summary		Delete group model config
@Description	Delete group model config
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_config/{model} [delete]

func DeleteGroupModelConfigs added in v0.1.5

func DeleteGroupModelConfigs(c *gin.Context)

DeleteGroupModelConfigs godoc

@Summary		Delete group model configs
@Description	Delete group model configs
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string		true	"Group name"
@Param			models	body		[]string	true	"Model names"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_configs/ [delete]

func DeleteGroupToken

func DeleteGroupToken(c *gin.Context)

DeleteGroupToken godoc

@Summary		Delete group token
@Description	Deletes a specific token from a group
@Tags			token
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			id		path		int		true	"Token ID"
@Success		200		{object}	middleware.APIResponse
@Router			/api/token/{group}/{id} [delete]

func DeleteGroupTokens

func DeleteGroupTokens(c *gin.Context)

DeleteGroupTokens godoc

@Summary		Delete group tokens
@Description	Deletes multiple tokens from a specific group
@Tags			token
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			ids		body		[]int	true	"Token IDs"
@Success		200		{object}	middleware.APIResponse
@Router			/api/token/{group}/batch_delete [post]

func DeleteGroups

func DeleteGroups(c *gin.Context)

DeleteGroups godoc

@Summary		Delete multiple groups
@Description	Deletes multiple groups by their IDs
@Tags			groups
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			ids	body		[]string	true	"Group IDs"
@Success		200	{object}	middleware.APIResponse
@Router			/api/groups/batch_delete [post]

func DeleteHistoryLogs

func DeleteHistoryLogs(c *gin.Context)

DeleteHistoryLogs godoc

@Summary		Delete historical logs
@Description	Deletes logs older than the specified retention period
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			timestamp	query		int	true	"Timestamp (milliseconds)"
@Success		200			{object}	middleware.APIResponse{data=int}
@Router			/api/logs [delete]

func DeleteModelConfig

func DeleteModelConfig(c *gin.Context)

DeleteModelConfig godoc

@Summary		Delete model config
@Description	Deletes a model config
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse
@Router			/api/model_config/{model} [delete]

func DeleteModelConfigs

func DeleteModelConfigs(c *gin.Context)

DeleteModelConfigs godoc

@Summary		Delete model configs
@Description	Deletes a list of model configs
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			models	body		[]string	true	"Model names"
@Success		200		{object}	middleware.APIResponse
@Router			/api/model_configs/batch_delete [post]

func DeleteToken

func DeleteToken(c *gin.Context)

DeleteToken godoc

@Summary		Delete token
@Description	Deletes a specific token by ID
@Tags			tokens
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Token ID"
@Success		200	{object}	middleware.APIResponse
@Router			/api/tokens/{id} [delete]

func DeleteTokens

func DeleteTokens(c *gin.Context)

DeleteTokens godoc

@Summary		Delete multiple tokens
@Description	Deletes multiple tokens by their IDs
@Tags			tokens
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			ids	body		[]int	true	"Token IDs"
@Success		200	{object}	middleware.APIResponse
@Router			/api/tokens/batch_delete [post]

func Edits added in v0.1.5

func Edits() []gin.HandlerFunc

func Embeddings added in v0.1.5

func Embeddings() []gin.HandlerFunc

Embeddings godoc

@Summary		Embeddings
@Description	Embeddings
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.EmbeddingRequest	true	"Request"
@Param			Aiproxy-Channel	header		string					false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.EmbeddingResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/embeddings [post]

func EnabledModels

func EnabledModels(c *gin.Context)

EnabledModels godoc

@Summary		Get enabled models
@Description	Returns a list of enabled models
@Tags			model
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[string][]model.ModelConfig}
@Router			/api/models/enabled [get]

func GetAllBannedModelChannels

func GetAllBannedModelChannels(c *gin.Context)

GetAllBannedModelChannels godoc

@Summary		Get all banned model channels
@Description	Returns a list of all banned model channels
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[string][]int64}
@Router			/api/monitor/banned_channels [get]

func GetAllChannelModelErrorRates

func GetAllChannelModelErrorRates(c *gin.Context)

GetAllChannelModelErrorRates godoc

@Summary		Get all channel model error rates
@Description	Returns a list of all channel model error rates
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[int64]map[string]float64}
@Router			/api/monitor [get]

func GetAllChannels

func GetAllChannels(c *gin.Context)

GetAllChannels godoc

@Summary		Get all channels
@Description	Returns a list of all channels without pagination
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=[]model.Channel}
@Router			/api/channels/all [get]

func GetAllModelConfigs

func GetAllModelConfigs(c *gin.Context)

GetAllModelConfigs godoc

@Summary		Get all model configs
@Description	Returns a list of all model configs
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=[]model.ModelConfig}
@Router			/api/model_configs/all [get]

func GetChannel

func GetChannel(c *gin.Context)

GetChannel godoc

@Summary		Get a channel by ID
@Description	Returns detailed information about a specific channel
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Channel ID"
@Success		200	{object}	middleware.APIResponse{data=model.Channel}
@Router			/api/channel/{id} [get]

func GetChannelModelErrorRates

func GetChannelModelErrorRates(c *gin.Context)

GetChannelModelErrorRates godoc

@Summary		Get channel model error rates
@Description	Returns a list of channel model error rates
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Channel ID"
@Success		200	{object}	middleware.APIResponse{data=[]map[string]float64}
@Router			/api/monitor/{id} [get]

func GetChannels

func GetChannels(c *gin.Context)

GetChannels godoc

@Summary		Get channels with pagination
@Description	Returns a paginated list of channels with optional filters
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			id				query		int		false	"Filter by id"
@Param			name			query		string	false	"Filter by name"
@Param			key				query		string	false	"Filter by key"
@Param			channel_type	query		int		false	"Filter by channel type"
@Param			base_url		query		string	false	"Filter by base URL"
@Param			order			query		string	false	"Order by field"
@Success		200				{object}	middleware.APIResponse{data=map[string]any{channels=[]model.Channel,total=int}}
@Router			/api/channels [get]

func GetDashboard

func GetDashboard(c *gin.Context)

GetDashboard godoc

@Summary		Get dashboard data
@Description	Returns the general dashboard data including usage statistics and metrics
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			group			query		string	false	"Group or *"
@Param			channel			query		int		false	"Channel ID"
@Param			type			query		string	false	"Type of time span (day, week, month, two_week)"
@Param			model			query		string	false	"Model name"
@Param			result_only		query		bool	false	"Only return result"
@Param			token_usage		query		bool	false	"Token usage"
@Param			start_timestamp	query		int64	false	"Start second timestamp"
@Param			end_timestamp	query		int64	false	"End second timestamp"
@Param			from_log		query		bool	false	"From log"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Success		200				{object}	middleware.APIResponse{data=model.DashboardResponse}
@Router			/api/dashboard [get]

func GetGroup

func GetGroup(c *gin.Context)

GetGroup godoc

@Summary		Get a group
@Description	Returns detailed information about a specific group
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Success		200		{object}	middleware.APIResponse{data=GroupResponse}
@Router			/api/group/{group} [get]

func GetGroupDashboard

func GetGroupDashboard(c *gin.Context)

GetGroupDashboard godoc

@Summary		Get dashboard data for a specific group
@Description	Returns dashboard data and metrics specific to the given group
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			group			path		string	true	"Group"
@Param			type			query		string	false	"Type of time span (day, week, month, two_week)"
@Param			token_name		query		string	false	"Token name"
@Param			model			query		string	false	"Model or *"
@Param			result_only		query		bool	false	"Only return result"
@Param			token_usage		query		bool	false	"Token usage"
@Param			start_timestamp	query		int64	false	"Start second timestamp"
@Param			end_timestamp	query		int64	false	"End second timestamp"
@Param			from_log		query		bool	false	"From log"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Success		200				{object}	middleware.APIResponse{data=model.GroupDashboardResponse}
@Router			/api/dashboard/{group} [get]

func GetGroupDashboardModels

func GetGroupDashboardModels(c *gin.Context)

GetGroupDashboardModels godoc

@Summary		Get model usage data for a specific group
@Description	Returns model-specific metrics and usage data for the given group
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group"
@Success		200		{object}	middleware.APIResponse{data=[]model.ModelConfig}
@Router			/api/dashboard/{group}/models [get]

func GetGroupLogDetail

func GetGroupLogDetail(c *gin.Context)

GetGroupLogDetail godoc

@Summary		Get group log detail
@Description	Get detailed information about a specific log entry in a group
@Tags			log
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			log_id	path		string	true	"Log ID"
@Success		200		{object}	middleware.APIResponse{data=model.RequestDetail}
@Router			/api/log/{group}/detail/{log_id} [get]

func GetGroupLogs

func GetGroupLogs(c *gin.Context)

GetGroupLogs godoc

@Summary		Get group logs
@Description	Get logs for a specific group
@Tags			log
@Produce		json
@Security		ApiKeyAuth
@Param			group			path		string	true	"Group name"
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			start_timestamp	query		int		false	"Start timestamp (milliseconds)"
@Param			end_timestamp	query		int		false	"End timestamp (milliseconds)"
@Param			token_name		query		string	false	"Token name"
@Param			model_name		query		string	false	"Model name"
@Param			channel			query		int		false	"Channel ID"
@Param			token_id		query		int		false	"Token ID"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Code type"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			result_only		query		bool	false	"Result only"
@Success		200				{object}	middleware.APIResponse{data=model.GetGroupLogsResult}
@Router			/api/log/{group} [get]

func GetGroupModelConfig added in v0.1.5

func GetGroupModelConfig(c *gin.Context)

GetGroupModelConfig godoc

@Summary		Get group model config
@Description	Get group model config
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse{data=model.GroupModelConfig}
@Router			/api/group/{group}/model_config/{model} [get]

func GetGroupModelConfigs added in v0.1.5

func GetGroupModelConfigs(c *gin.Context)

GetGroupModelConfigs godoc

@Summary		Get group model configs
@Description	Get group model configs
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Success		200		{object}	middleware.APIResponse{data=[]model.GroupModelConfig}
@Router			/api/group/{group}/model_configs/ [get]

func GetGroupModelCostRank

func GetGroupModelCostRank(c *gin.Context)

GetGroupModelCostRank godoc

@Summary		Get model cost ranking data for a specific group
@Description	Returns model cost ranking data specific to the given group
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			group			path		string	true	"Group"
@Param			start_timestamp	query		int64	false	"Start timestamp"
@Param			end_timestamp	query		int64	false	"End timestamp"
@Param			token_usage		query		bool	false	"Token usage"
@Param			from_log		query		bool	false	"From log"
@Success		200				{object}	middleware.APIResponse{data=[]model.ModelCostRank}
@Router			/api/model_cost_rank/{group} [get]

func GetGroupToken

func GetGroupToken(c *gin.Context)

GetGroupToken godoc

@Summary		Get token by ID for a specific group
@Description	Returns detailed information about a specific token for a specific group
@Tags			token
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Param			id		path		int		true	"Token ID"
@Success		200		{object}	middleware.APIResponse{data=TokenResponse}
@Router			/api/token/{group}/{id} [get]

func GetGroupTokens

func GetGroupTokens(c *gin.Context)

GetGroupTokens godoc

@Summary		Get all tokens for a specific group
@Description	Returns a paginated list of all tokens for a specific group
@Tags			tokens
@Produce		json
@Security		ApiKeyAuth
@Param			group		path		string	true	"Group name"
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			order		query		string	false	"Order"
@Param			status		query		int		false	"Status"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{tokens=[]TokenResponse,total=int}}
@Router			/api/tokens/{group} [get]

func GetGroupUsedModels

func GetGroupUsedModels(c *gin.Context)

GetGroupUsedModels godoc

@Summary		Get group used models
@Description	Get a list of models that have been used in a specific group's logs
@Tags			log
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Success		200		{object}	middleware.APIResponse{data=[]string}
@Router			/api/log/{group}/used/models [get]

func GetGroupUsedTokenNames

func GetGroupUsedTokenNames(c *gin.Context)

GetGroupUsedTokenNames godoc

@Summary		Get group used token names
@Description	Get a list of token names that have been used in a specific group's logs
@Tags			log
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group name"
@Success		200		{object}	middleware.APIResponse{data=[]string}
@Router			/api/log/{group}/used/token_names [get]

func GetGroups

func GetGroups(c *gin.Context)

GetGroups godoc

@Summary		Get all groups
@Description	Returns a list of all groups with pagination
@Tags			groups
@Produce		json
@Security		ApiKeyAuth
@Param			page		query		int	false	"Page number"
@Param			per_page	query		int	false	"Items per page"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{groups=[]GroupResponse,total=int}}
@Router			/api/groups [get]

func GetIPGroupList added in v0.1.5

func GetIPGroupList(c *gin.Context)

GetIPGroupList godoc

@Summary		Get IP group list
@Description	Get IP group list
@Tags			groups
@Produce		json
@Security		ApiKeyAuth
@Param			threshold		query		int	false	"Threshold"
@Param			start_timestamp	query		int	false	"Start timestamp"
@Param			end_timestamp	query		int	false	"End timestamp"
@Success		200				{object}	middleware.APIResponse{data=map[string][]string}
@Router			/api/groups/ip_groups [get]

func GetLogDetail

func GetLogDetail(c *gin.Context)

GetLogDetail godoc

@Summary		Get log detail
@Description	Get detailed information about a specific log entry
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			log_id	path		string	true	"Log ID"
@Success		200		{object}	middleware.APIResponse{data=model.RequestDetail}
@Router			/api/logs/detail/{log_id} [get]

func GetLogs

func GetLogs(c *gin.Context)

GetLogs godoc

@Summary		Get all logs
@Description	Returns a paginated list of all logs with optional filters
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			group			query		string	false	"Group or *"
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			start_timestamp	query		int		false	"Start timestamp (milliseconds)"
@Param			end_timestamp	query		int		false	"End timestamp (milliseconds)"
@Param			token_name		query		string	false	"Token name"
@Param			model_name		query		string	false	"Model name"
@Param			channel			query		int		false	"Channel ID"
@Param			token_id		query		int		false	"Token ID"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Code type"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			result_only		query		bool	false	"Result only"
@Success		200				{object}	middleware.APIResponse{data=model.GetLogsResult}
@Router			/api/logs [get]

func GetModelConfig

func GetModelConfig(c *gin.Context)

GetModelConfig godoc

@Summary		Get model config
@Description	Returns a model config
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse{data=model.ModelConfig}
@Router			/api/model_config/{model} [get]

func GetModelConfigs

func GetModelConfigs(c *gin.Context)

GetModelConfigs godoc

@Summary		Get model configs
@Description	Returns a list of model configs with pagination
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			model	query		string	false	"Model name"
@Success		200		{object}	middleware.APIResponse{data=map[string]any{configs=[]model.ModelConfig,total=int}}
@Router			/api/model_configs [get]

func GetModelConfigsByModelsContains

func GetModelConfigsByModelsContains(c *gin.Context)

GetModelConfigsByModelsContains godoc

@Summary		Get model configs by models contains
@Description	Returns a list of model configs by models contains
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			models	body		GetModelConfigsByModelsContainsRequest	true	"Models"
@Success		200		{object}	middleware.APIResponse{data=[]model.ModelConfig}
@Router			/api/model_configs/contains [post]

func GetModelCostRank

func GetModelCostRank(c *gin.Context)

GetModelCostRank godoc

@Summary		Get model cost ranking data
@Description	Returns ranking data for models based on cost
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			group			query		string	false	"Group or *"
@Param			channel			query		int		false	"Channel ID"
@Param			start_timestamp	query		int64	false	"Start timestamp"
@Param			end_timestamp	query		int64	false	"End timestamp"
@Param			token_usage		query		bool	false	"Token usage"
@Param			from_log		query		bool	false	"From log"
@Success		200				{object}	middleware.APIResponse{data=[]model.ModelCostRank}
@Router			/api/model_cost_rank [get]

func GetModelsErrorRate

func GetModelsErrorRate(c *gin.Context)

GetModelsErrorRate godoc

@Summary		Get models error rate
@Description	Returns a list of models error rate
@Tags			monitor
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[string]float64}
@Router			/api/monitor/models [get]

func GetOption

func GetOption(c *gin.Context)

GetOption godoc

@Summary		Get option
@Description	Returns a single option
@Tags			option
@Produce		json
@Security		ApiKeyAuth
@Param			key	path		string	true	"Option key"
@Success		200	{object}	middleware.APIResponse{data=model.Option}
@Router			/api/options/{key} [get]

func GetOptions

func GetOptions(c *gin.Context)

GetOptions godoc

@Summary		Get options
@Description	Returns a list of options
@Tags			option
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse{data=map[string]string}
@Router			/api/options [get]

func GetRandomChannel

func GetRandomChannel(mc *model.ModelCaches, availableSet []string, modelName string, errorRates map[int64]float64, ignoreChannel ...int64) (*model.Channel, []*model.Channel, error)

func GetStatus

func GetStatus(c *gin.Context)

GetStatus godoc

@Summary		Get status
@Description	Returns the status of the server
@Tags			misc
@Produce		json
@Success		200	{object}	middleware.APIResponse{data=StatusData}
@Router			/api/status [get]

func GetSubscription

func GetSubscription(c *gin.Context)

GetSubscription godoc

@Summary		Get subscription
@Description	Get subscription
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	openai.SubscriptionResponse
@Router			/v1/dashboard/subscription [get]

func GetToken

func GetToken(c *gin.Context)

GetToken godoc

@Summary		Get token by ID
@Description	Returns detailed information about a specific token
@Tags			tokens
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Token ID"
@Success		200	{object}	middleware.APIResponse{data=TokenResponse}
@Router			/api/tokens/{id} [get]

func GetTokens

func GetTokens(c *gin.Context)

GetTokens godoc

@Summary		Get all tokens
@Description	Returns a paginated list of all tokens
@Tags			tokens
@Produce		json
@Security		ApiKeyAuth
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			group		query		string	false	"Group name"
@Param			order		query		string	false	"Order"
@Param			status		query		int		false	"Status"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{tokens=[]TokenResponse,total=int}}
@Router			/api/tokens [get]

func GetUsage

func GetUsage(c *gin.Context)

GetUsage godoc

@Summary		Get usage
@Description	Get usage
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	openai.UsageResponse
@Router			/v1/dashboard/usage [get]

func GetUsedModels

func GetUsedModels(c *gin.Context)

GetUsedModels godoc

@Summary		Get used models
@Description	Get a list of models that have been used in logs
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			group	query		string	false	"Group or *"
@Success		200		{object}	middleware.APIResponse{data=[]string}
@Router			/api/logs/used/models [get]

func GetUsedTokenNames added in v0.1.5

func GetUsedTokenNames(c *gin.Context)

GetUsedTokenNames godoc

@Summary		Get used token names
@Description	Get a list of token names that have been used in logs
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			group	query		string	false	"Group or *"
@Success		200		{object}	middleware.APIResponse{data=[]string}
@Router			/api/logs/used/token_names [get]

func ImagesGenerations added in v0.1.5

func ImagesGenerations() []gin.HandlerFunc

ImagesGenerations godoc

@Summary		ImagesGenerations
@Description	ImagesGenerations
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.ImageRequest	true	"Request"
@Param			Aiproxy-Channel	header		string				false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.ImageResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/images/generations [post]

func ImportChannelFromOneAPI

func ImportChannelFromOneAPI(c *gin.Context)

ImportChannelFromOneAPI godoc

@Summary		Import channel from OneAPI
@Description	Imports channels from OneAPI
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Param			request	body		ImportChannelFromOneAPIRequest	true	"Import channel from OneAPI request"
@Success		200		{object}	middleware.APIResponse{data=[]error}
@Router			/api/channels/import/oneapi [post]

func ListModels

func ListModels(c *gin.Context)

ListModels godoc

@Summary		List models
@Description	List all models
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	object{object=string,data=[]OpenAIModels}
@Router			/v1/models [get]

func Moderations added in v0.1.5

func Moderations() []gin.HandlerFunc

func NewMetaByContext added in v0.1.6

func NewMetaByContext(c *gin.Context, channel *model.Channel, mode mode.Mode, opts ...meta.Option) *meta.Meta

func NewRelay

func NewRelay(mode mode.Mode) func(c *gin.Context)

func ParsePdf added in v0.1.5

func ParsePdf() []gin.HandlerFunc

ParsePdf godoc

@Summary		ParsePdf
@Description	ParsePdf
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			model			formData	string	true	"Model"
@Param			file			formData	file	true	"File"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.ParsePdfResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/parse-pdf [post]

func RelayHelper

func RelayHelper(meta *meta.Meta, c *gin.Context, handel RelayHandler) (*controller.HandleResult, bool)

func RelayNotImplemented

func RelayNotImplemented(c *gin.Context)

func Rerank added in v0.1.5

func Rerank() []gin.HandlerFunc

Rerank godoc

@Summary		Rerank
@Description	Rerank
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.RerankRequest	true	"Request"
@Param			Aiproxy-Channel	header		string				false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.RerankResponse
@Header			all				{integer}	X-RateLimit-Limit-Requests		"X-RateLimit-Limit-Requests"
@Header			all				{integer}	X-RateLimit-Limit-Tokens		"X-RateLimit-Limit-Tokens"
@Header			all				{integer}	X-RateLimit-Remaining-Requests	"X-RateLimit-Remaining-Requests"
@Header			all				{integer}	X-RateLimit-Remaining-Tokens	"X-RateLimit-Remaining-Tokens"
@Header			all				{string}	X-RateLimit-Reset-Requests		"X-RateLimit-Reset-Requests"
@Header			all				{string}	X-RateLimit-Reset-Tokens		"X-RateLimit-Reset-Tokens"
@Router			/v1/rerank [post]

func RetrieveModel

func RetrieveModel(c *gin.Context)

RetrieveModel godoc

@Summary		Retrieve model
@Description	Retrieve a model
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	OpenAIModels
@Router			/v1/models/{model} [get]

func SaveGroupModelConfig added in v0.1.5

func SaveGroupModelConfig(c *gin.Context)

SaveGroupModelConfig godoc

@Summary		Save group model config
@Description	Save group model config
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			data	body		SaveGroupModelConfigRequest	true	"Group model config information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_config/ [post]

func SaveGroupModelConfigs added in v0.1.5

func SaveGroupModelConfigs(c *gin.Context)

SaveGroupModelConfigs godoc

@Summary		Save group model configs
@Description	Save group model configs
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string							true	"Group name"
@Param			data	body		[]SaveGroupModelConfigRequest	true	"Group model config information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_configs/ [post]

func SaveModelConfig

func SaveModelConfig(c *gin.Context)

SaveModelConfig godoc

@Summary		Save model config
@Description	Saves a model config
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			config	body		SaveModelConfigsRequest	true	"Model config"
@Success		200		{object}	middleware.APIResponse
@Router			/api/model_config [post]

func SaveModelConfigs

func SaveModelConfigs(c *gin.Context)

SaveModelConfigs godoc

@Summary		Save model configs
@Description	Saves a list of model configs
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			configs	body		[]SaveModelConfigsRequest	true	"Model configs"
@Success		200		{object}	middleware.APIResponse
@Router			/api/model_configs [post]

func SearchChannels

func SearchChannels(c *gin.Context)

SearchChannels godoc

@Summary		Search channels
@Description	Search channels with keyword and optional filters
@Tags			channels
@Produce		json
@Security		ApiKeyAuth
@Param			keyword			query		string	true	"Search keyword"
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			id				query		int		false	"Filter by id"
@Param			name			query		string	false	"Filter by name"
@Param			key				query		string	false	"Filter by key"
@Param			channel_type	query		int		false	"Filter by channel type"
@Param			base_url		query		string	false	"Filter by base URL"
@Param			order			query		string	false	"Order by field"
@Success		200				{object}	middleware.APIResponse{data=map[string]any{channels=[]model.Channel,total=int}}
@Router			/api/channels/search [get]

func SearchConsumeError

func SearchConsumeError(c *gin.Context)

SearchConsumeError godoc

@Summary		Search consumption errors
@Description	Search for logs with consumption errors
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			start_timestamp	query		int		false	"Start timestamp (milliseconds)"
@Param			end_timestamp	query		int		false	"End timestamp (milliseconds)"
@Param			keyword			query		string	false	"Keyword"
@Param			group			query		string	false	"Group"
@Param			token_name		query		string	false	"Token name"
@Param			model_name		query		string	false	"Model name"
@Param			content			query		string	false	"Content"
@Param			token_id		query		int		false	"Token ID"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Success		200				{object}	middleware.APIResponse{data=map[string]any{logs=[]model.RequestDetail,total=int}}
@Router			/api/logs/consume_error [get]

func SearchGroupLogs

func SearchGroupLogs(c *gin.Context)

SearchGroupLogs godoc

@Summary		Search group logs
@Description	Search logs for a specific group with filters
@Tags			log
@Produce		json
@Security		ApiKeyAuth
@Param			group			path		string	true	"Group name"
@Param			keyword			query		string	true	"Keyword"
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			start_timestamp	query		int		false	"Start timestamp (milliseconds)"
@Param			end_timestamp	query		int		false	"End timestamp (milliseconds)"
@Param			token_name		query		string	false	"Filter by token name"
@Param			model_name		query		string	false	"Filter by model name"
@Param			channel			query		int		false	"Filter by channel"
@Param			token_id		query		int		false	"Filter by token id"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Code type"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			result_only		query		bool	false	"Result only"
@Success		200				{object}	middleware.APIResponse{data=model.GetGroupLogsResult}
@Router			/api/log/{group}/search [get]

func SearchGroupTokens

func SearchGroupTokens(c *gin.Context)

SearchGroupTokens godoc

@Summary		Search tokens for a specific group
@Description	Returns a paginated list of tokens for a specific group based on search criteria
@Tags			token
@Produce		json
@Security		ApiKeyAuth
@Param			group		path		string	true	"Group name"
@Param			keyword		query		string	false	"Keyword"
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			order		query		string	false	"Order"
@Param			name		query		string	false	"Name"
@Param			key			query		string	false	"Key"
@Param			status		query		int		false	"Status"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{tokens=[]TokenResponse,total=int}}
@Router			/api/token/{group}/search [get]

func SearchGroups

func SearchGroups(c *gin.Context)

SearchGroups godoc

@Summary		Search groups
@Description	Search groups with keyword and pagination
@Tags			groups
@Produce		json
@Security		ApiKeyAuth
@Param			keyword		query		string	true	"Search keyword"
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			status		query		int		false	"Status"
@Param			order		query		string	false	"Order"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{groups=[]GroupResponse,total=int}}
@Router			/api/groups/search [get]

func SearchLogs

func SearchLogs(c *gin.Context)

SearchLogs godoc

@Summary		Search logs
@Description	Search logs with various filters
@Tags			logs
@Produce		json
@Security		ApiKeyAuth
@Param			group			query		string	false	"Group or *"
@Param			keyword			query		string	true	"Keyword"
@Param			page			query		int		false	"Page number"
@Param			per_page		query		int		false	"Items per page"
@Param			start_timestamp	query		int		false	"Start timestamp (milliseconds)"
@Param			end_timestamp	query		int		false	"End timestamp (milliseconds)"
@Param			token_name		query		string	false	"Filter by token name"
@Param			model_name		query		string	false	"Filter by model name"
@Param			channel			query		int		false	"Filter by channel"
@Param			token_id		query		int		false	"Filter by token id"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Code type"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			result_only		query		bool	false	"Result only"
@Success		200				{object}	middleware.APIResponse{data=model.GetLogsResult}
@Router			/api/logs/search [get]

func SearchModelConfigs

func SearchModelConfigs(c *gin.Context)

SearchModelConfigs godoc

@Summary		Search model configs
@Description	Returns a list of model configs by keyword
@Tags			modelconfig
@Produce		json
@Security		ApiKeyAuth
@Param			keyword		query		string	false	"Keyword"
@Param			model		query		string	false	"Model name"
@Param			owner		query		string	false	"Owner"
@Param			page		query		int		false	"Page"
@Param			per_page	query		int		false	"Per page"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{configs=[]model.ModelConfig,total=int}}
@Router			/api/model_configs/search [get]

func SearchTokens

func SearchTokens(c *gin.Context)

SearchTokens godoc

@Summary		Search tokens
@Description	Returns a paginated list of tokens based on search criteria
@Tags			tokens
@Produce		json
@Security		ApiKeyAuth
@Param			keyword		query		string	false	"Keyword"
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			order		query		string	false	"Order"
@Param			name		query		string	false	"Name"
@Param			key			query		string	false	"Key"
@Param			status		query		int		false	"Status"
@Param			group		query		string	false	"Group"
@Success		200			{object}	middleware.APIResponse{data=map[string]any{tokens=[]TokenResponse,total=int}}
@Router			/api/tokens/search [get]

func SortBuiltinModelConfigsFunc

func SortBuiltinModelConfigsFunc(i, j *BuiltinModelConfig) int

func TestAllChannels

func TestAllChannels(c *gin.Context)

TestAllChannels godoc

@Summary		Test all channels
@Description	Tests all channels
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			test_disabled	query		bool	false	"Test disabled"
@Param			return_success	query		bool	false	"Return success"
@Param			success_body	query		bool	false	"Success body"
@Param			stream			query		bool	false	"Stream"
@Success		200				{object}	middleware.APIResponse{data=[]TestResult}

@Router			/api/channels/test [get]

func TestChannel

func TestChannel(c *gin.Context)

TestChannel godoc

@Summary		Test channel model
@Description	Tests a single model in the channel
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int		true	"Channel ID"
@Param			model	path		string	true	"Model name"
@Success		200		{object}	middleware.APIResponse{data=model.ChannelTest}
@Router			/api/channel/{id}/{model} [get]

func TestChannelModels

func TestChannelModels(c *gin.Context)

TestChannelModels godoc

@Summary		Test channel models
@Description	Tests all models in the channel
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			id				path		int		true	"Channel ID"
@Param			return_success	query		bool	false	"Return success"
@Param			success_body	query		bool	false	"Success body"
@Param			stream			query		bool	false	"Stream"
@Success		200				{object}	middleware.APIResponse{data=[]TestResult}
@Router			/api/channel/{id}/models [get]

func UpdateAllChannelsBalance

func UpdateAllChannelsBalance(c *gin.Context)

UpdateAllChannelsBalance godoc

@Summary		Update all channels balance
@Description	Updates the balance for all channels
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	middleware.APIResponse
@Router			/api/channels/balance [get]

func UpdateChannel

func UpdateChannel(c *gin.Context)

UpdateChannel godoc

@Summary		Update a channel
@Description	Updates an existing channel by its ID
@Tags			channel
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int					true	"Channel ID"
@Param			channel	body		AddChannelRequest	true	"Updated channel information"
@Success		200		{object}	middleware.APIResponse{data=model.Channel}
@Router			/api/channel/{id} [put]

func UpdateChannelBalance

func UpdateChannelBalance(c *gin.Context)

UpdateChannelBalance godoc

@Summary		Update channel balance
@Description	Updates the balance for a single channel
@Tags			channel
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		int	true	"Channel ID"
@Success		200	{object}	middleware.APIResponse{data=float64}
@Router			/api/channel/{id}/balance [get]

func UpdateChannelStatus

func UpdateChannelStatus(c *gin.Context)

UpdateChannelStatus godoc

@Summary		Update channel status
@Description	Updates the status of a channel by its ID
@Tags			channel
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int							true	"Channel ID"
@Param			status	body		UpdateChannelStatusRequest	true	"Status information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/channel/{id}/status [post]

func UpdateChannelsBalance

func UpdateChannelsBalance(frequency time.Duration)

func UpdateGroup

func UpdateGroup(c *gin.Context)

UpdateGroup godoc

@Summary		Update a group
@Description	Updates an existing group with the given information
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string				true	"Group name"
@Param			data	body		CreateGroupRequest	true	"Updated group information"
@Success		200		{object}	middleware.APIResponse{data=model.Group}
@Router			/api/group/{group} [put]

func UpdateGroupModelConfig added in v0.1.5

func UpdateGroupModelConfig(c *gin.Context)

UpdateGroupModelConfig godoc

@Summary		Update group model config
@Description	Update group model config
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			model	path		string						true	"Model name"
@Param			data	body		SaveGroupModelConfigRequest	true	"Group model config information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_config/{model} [put]

func UpdateGroupModelConfigs added in v0.1.5

func UpdateGroupModelConfigs(c *gin.Context)

UpdateGroupModelConfigs godoc

@Summary		Update group model configs
@Description	Update group model configs
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string							true	"Group name"
@Param			data	body		[]SaveGroupModelConfigRequest	true	"Group model config information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/model_configs/ [put]

func UpdateGroupRPMRatio

func UpdateGroupRPMRatio(c *gin.Context)

UpdateGroupRPMRatio godoc

@Summary		Update group RPM ratio
@Description	Updates the RPM (Requests Per Minute) ratio for a group
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			data	body		UpdateGroupRPMRatioRequest	true	"RPM ratio information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/rpm_ratio [post]

func UpdateGroupStatus

func UpdateGroupStatus(c *gin.Context)

UpdateGroupStatus godoc

@Summary		Update group status
@Description	Updates the status of a group
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			status	body		UpdateGroupStatusRequest	true	"Status information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/status [post]

func UpdateGroupTPMRatio

func UpdateGroupTPMRatio(c *gin.Context)

UpdateGroupTPMRatio godoc

@Summary		Update group TPM ratio
@Description	Updates the TPM (Tokens Per Minute) ratio for a group
@Tags			group
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			data	body		UpdateGroupTPMRatioRequest	true	"TPM ratio information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/group/{group}/tpm_ratio [post]

func UpdateGroupToken

func UpdateGroupToken(c *gin.Context)

UpdateGroupToken godoc

@Summary		Update group token
@Description	Updates an existing token in a specific group
@Tags			token
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string			true	"Group name"
@Param			id		path		int				true	"Token ID"
@Param			token	body		AddTokenRequest	true	"Updated token information"
@Success		200		{object}	middleware.APIResponse{data=TokenResponse}
@Router			/api/token/{group}/{id} [put]

func UpdateGroupTokenName

func UpdateGroupTokenName(c *gin.Context)

UpdateGroupTokenName godoc

@Summary		Update group token name
@Description	Updates the name of a token in a specific group
@Tags			token
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string					true	"Group name"
@Param			id		path		int						true	"Token ID"
@Param			name	body		UpdateTokenNameRequest	true	"Name information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/token/{group}/{id}/name [post]

func UpdateGroupTokenStatus

func UpdateGroupTokenStatus(c *gin.Context)

UpdateGroupTokenStatus godoc

@Summary		Update group token status
@Description	Updates the status of a token in a specific group
@Tags			token
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string						true	"Group name"
@Param			id		path		int							true	"Token ID"
@Param			status	body		UpdateTokenStatusRequest	true	"Status information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/token/{group}/{id}/status [post]

func UpdateGroupsStatus added in v0.1.5

func UpdateGroupsStatus(c *gin.Context)

UpdateGroupsStatus godoc

@Summary		Update multiple groups status
@Description	Updates the status of multiple groups
@Tags			groups
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			data	body		UpdateGroupsStatusRequest	true	"Group IDs and status"
@Success		200		{object}	middleware.APIResponse
@Router			/api/groups/batch_status [post]

func UpdateOption

func UpdateOption(c *gin.Context)

UpdateOption godoc

@Summary		Update option
@Description	Updates a single option
@Tags			option
@Produce		json
@Security		ApiKeyAuth
@Param			value	body		model.Option	true	"Option value"
@Success		200		{object}	middleware.APIResponse
@Router			/api/options/ [put]
@Router			/api/options/ [post]

func UpdateOptionByKey added in v0.1.5

func UpdateOptionByKey(c *gin.Context)

UpdateOptionByKey godoc

@Summary		Update option by key
@Description	Updates a single option by key
@Tags			option
@Produce		json
@Security		ApiKeyAuth
@Param			key		path		string	true	"Option key"
@Param			value	body		string	true	"Option value"
@Success		200		{object}	middleware.APIResponse
@Router			/api/options/{key} [put]

func UpdateOptions

func UpdateOptions(c *gin.Context)

UpdateOptions godoc

@Summary		Update options
@Description	Updates multiple options
@Tags			option
@Produce		json
@Security		ApiKeyAuth
@Param			options	body		map[string]string	true	"Options"
@Success		200		{object}	middleware.APIResponse
@Router			/api/options [post]

func UpdateToken

func UpdateToken(c *gin.Context)

UpdateToken godoc

@Summary		Update token
@Description	Updates an existing token's information
@Tags			tokens
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int				true	"Token ID"
@Param			token	body		AddTokenRequest	true	"Updated token information"
@Success		200		{object}	middleware.APIResponse{data=TokenResponse}
@Router			/api/tokens/{id} [put]

func UpdateTokenName

func UpdateTokenName(c *gin.Context)

UpdateTokenName godoc

@Summary		Update token name
@Description	Updates the name of a specific token
@Tags			tokens
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int						true	"Token ID"
@Param			name	body		UpdateTokenNameRequest	true	"Name information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/tokens/{id}/name [post]

func UpdateTokenStatus

func UpdateTokenStatus(c *gin.Context)

UpdateTokenStatus godoc

@Summary		Update token status
@Description	Updates the status of a specific token
@Tags			tokens
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		int							true	"Token ID"
@Param			status	body		UpdateTokenStatusRequest	true	"Status information"
@Success		200		{object}	middleware.APIResponse
@Router			/api/tokens/{id}/status [post]

Types

type AddChannelRequest

type AddChannelRequest struct {
	ModelMapping map[string]string    `json:"model_mapping"`
	Config       *model.ChannelConfig `json:"config"`
	Name         string               `json:"name"`
	Key          string               `json:"key"`
	BaseURL      string               `json:"base_url"`
	Models       []string             `json:"models"`
	Type         int                  `json:"type"`
	Priority     int32                `json:"priority"`
	Status       int                  `json:"status"`
	Sets         []string             `json:"sets"`
}

AddChannelRequest represents the request body for adding a channel

func (*AddChannelRequest) ToChannel

func (r *AddChannelRequest) ToChannel() (*model.Channel, error)

func (*AddChannelRequest) ToChannels

func (r *AddChannelRequest) ToChannels() ([]*model.Channel, error)

type AddTokenRequest

type AddTokenRequest struct {
	Name      string   `json:"name"`
	Subnets   []string `json:"subnets"`
	Models    []string `json:"models"`
	ExpiredAt int64    `json:"expiredAt"`
	Quota     float64  `json:"quota"`
}

func (*AddTokenRequest) ToToken

func (at *AddTokenRequest) ToToken() *model.Token

type BuiltinModelConfig

type BuiltinModelConfig model.ModelConfig

func (*BuiltinModelConfig) MarshalJSON

func (c *BuiltinModelConfig) MarshalJSON() ([]byte, error)

type ChannelConfig

type ChannelConfig struct {
	Region            string `json:"region,omitempty"`
	SK                string `json:"sk,omitempty"`
	AK                string `json:"ak,omitempty"`
	UserID            string `json:"user_id,omitempty"`
	APIVersion        string `json:"api_version,omitempty"`
	LibraryID         string `json:"library_id,omitempty"`
	VertexAIProjectID string `json:"vertex_ai_project_id,omitempty"`
	VertexAIADC       string `json:"vertex_ai_adc,omitempty"`
}

type CreateGroupRequest

type CreateGroupRequest struct {
	RPMRatio     float64  `json:"rpm_ratio"`
	TPMRatio     float64  `json:"tpm_ratio"`
	AvailableSet []string `json:"available_set"`

	BalanceAlertEnabled   bool    `json:"balance_alert_enabled"`
	BalanceAlertThreshold float64 `json:"balance_alert_threshold"`
}

func (*CreateGroupRequest) ToGroup added in v0.1.6

func (r *CreateGroupRequest) ToGroup() *model.Group

type GetModelConfigsByModelsContainsRequest

type GetModelConfigsByModelsContainsRequest struct {
	Models []string `json:"models"`
}

type GetRequestPrice added in v0.1.5

type GetRequestPrice func(*gin.Context, *model.ModelConfig) (model.Price, error)

type GetRequestUsage added in v0.1.5

type GetRequestUsage func(*gin.Context, *model.ModelConfig) (model.Usage, error)

type GroupResponse

type GroupResponse struct {
	*model.Group
	AccessedAt time.Time `json:"accessed_at,omitempty"`
}

func (*GroupResponse) MarshalJSON

func (g *GroupResponse) MarshalJSON() ([]byte, error)

type ImportChannelFromOneAPIRequest

type ImportChannelFromOneAPIRequest struct {
	DSN string `json:"dsn"`
}

type OneAPIChannel

type OneAPIChannel struct {
	Type         int               `gorm:"default:0"                              json:"type"`
	Key          string            `gorm:"type:text"                              json:"key"`
	Status       int               `gorm:"default:1"                              json:"status"`
	Name         string            `gorm:"index"                                  json:"name"`
	BaseURL      string            `gorm:"column:base_url;default:''"`
	Models       string            `json:"models"`
	ModelMapping map[string]string `gorm:"type:varchar(1024);serializer:fastjson"`
	Priority     int32             `gorm:"bigint;default:0"`
	Config       ChannelConfig     `gorm:"serializer:fastjson"`
}

func (*OneAPIChannel) TableName

func (c *OneAPIChannel) TableName() string

type OpenAIModelPermission

type OpenAIModelPermission struct {
	Group              *string `json:"group"`
	ID                 string  `json:"id"`
	Object             string  `json:"object"`
	Organization       string  `json:"organization"`
	Created            int     `json:"created"`
	AllowCreateEngine  bool    `json:"allow_create_engine"`
	AllowSampling      bool    `json:"allow_sampling"`
	AllowLogprobs      bool    `json:"allow_logprobs"`
	AllowSearchIndices bool    `json:"allow_search_indices"`
	AllowView          bool    `json:"allow_view"`
	AllowFineTuning    bool    `json:"allow_fine_tuning"`
	IsBlocking         bool    `json:"is_blocking"`
}

type OpenAIModels

type OpenAIModels struct {
	Parent     *string                 `json:"parent"`
	ID         string                  `json:"id"`
	Object     string                  `json:"object"`
	OwnedBy    string                  `json:"owned_by"`
	Root       string                  `json:"root"`
	Permission []OpenAIModelPermission `json:"permission"`
	Created    int                     `json:"created"`
}

type RelayController

type RelayController struct {
	GetRequestUsage GetRequestUsage
	GetRequestPrice GetRequestPrice
	Handler         RelayHandler
}

type RelayHandler added in v0.1.5

type RelayHandler func(*meta.Meta, *gin.Context) *controller.HandleResult

type SaveGroupModelConfigRequest added in v0.1.5

type SaveGroupModelConfigRequest struct {
	Model string `json:"model"`

	OverrideLimit bool  `json:"override_limit"`
	RPM           int64 `json:"rpm"`
	TPM           int64 `json:"tpm"`

	OverridePrice bool               `json:"override_price"`
	ImagePrices   map[string]float64 `json:"image_prices"`
	Price         model.Price        `json:"price"`
}

func (*SaveGroupModelConfigRequest) ToGroupModelConfig added in v0.1.5

func (r *SaveGroupModelConfigRequest) ToGroupModelConfig(groupID string) model.GroupModelConfig

type SaveModelConfigsRequest

type SaveModelConfigsRequest struct {
	CreatedAt int64 `json:"created_at"`
	UpdatedAt int64 `json:"updated_at"`
	*model.ModelConfig
}

type StatusData

type StatusData struct {
	StartTime int64 `json:"startTime"`
}

type TestResult added in v0.1.5

type TestResult struct {
	Data    *model.ChannelTest `json:"data,omitempty"`
	Message string             `json:"message,omitempty"`
	Success bool               `json:"success"`
}

type TokenResponse

type TokenResponse struct {
	*model.Token
	AccessedAt time.Time `json:"accessed_at"`
}

TokenResponse represents the response structure for token endpoints

func (*TokenResponse) MarshalJSON

func (t *TokenResponse) MarshalJSON() ([]byte, error)

type UpdateChannelStatusRequest

type UpdateChannelStatusRequest struct {
	Status int `json:"status"`
}

UpdateChannelStatusRequest represents the request body for updating a channel's status

type UpdateGroupRPMRatioRequest

type UpdateGroupRPMRatioRequest struct {
	RPMRatio float64 `json:"rpm_ratio"`
}

type UpdateGroupStatusRequest

type UpdateGroupStatusRequest struct {
	Status int `json:"status"`
}

type UpdateGroupTPMRatioRequest

type UpdateGroupTPMRatioRequest struct {
	TPMRatio float64 `json:"tpm_ratio"`
}

type UpdateGroupsStatusRequest added in v0.1.5

type UpdateGroupsStatusRequest struct {
	Status int      `json:"status"`
	Groups []string `json:"groups"`
}

type UpdateTokenNameRequest

type UpdateTokenNameRequest struct {
	Name string `json:"name"`
}

type UpdateTokenStatusRequest

type UpdateTokenStatusRequest struct {
	Status int `json:"status"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL