controller

package
v0.0.0-...-3c0159d Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2025 License: MIT Imports: 54 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

View Source
const (
	AIProxyChannelHeader = "Aiproxy-Channel"
)

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			ignore_exist		query		bool			false	"Ignore exist"
@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 Anthropic

func Anthropic() []gin.HandlerFunc

Anthropic godoc

@Summary		Anthropic
@Description	Anthropic
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.AnthropicMessageRequest	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/messages [post]

func AudioSpeech

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

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/transcriptions [post]

func AudioTranslation

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/translations [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 CancelResponse

func CancelResponse() []gin.HandlerFunc

CancelResponse godoc

@Summary		Cancel response
@Description	Cancel a response by ID
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			response_id		path		string	true	"Response ID"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.Response
@Router			/v1/responses/{response_id}/cancel [post]

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		model.ChannelType	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]adaptors.AdaptorMeta}
@Router			/api/channels/type_metas [get]

func ChatCompletions

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

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 CreateResponse

func CreateResponse() []gin.HandlerFunc

CreateResponse godoc

@Summary		Create response
@Description	Create a new response
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.CreateResponseRequest	true	"Request"
@Param			Aiproxy-Channel	header		string						false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.Response
@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/responses [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

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

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 DeleteResponse

func DeleteResponse() []gin.HandlerFunc

DeleteResponse godoc

@Summary		Delete response
@Description	Delete a response by ID
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			response_id		path	string	true	"Response ID"
@Param			Aiproxy-Channel	header	string	false	"Optional Aiproxy-Channel header"
@Success		204
@Router			/v1/responses/{response_id} [delete]

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 Embeddings

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 EnabledModelSets

func EnabledModelSets(c *gin.Context)

EnabledModelSets godoc

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

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 EnabledModelsSet

func EnabledModelsSet(c *gin.Context)

EnabledModelsSet godoc

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

func ErrorWithRequestID

func ErrorWithRequestID(c *gin.Context, relayErr adaptor.Error)

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 GetChannelFromHeader

func GetChannelFromHeader(
	header string,
	mc *model.ModelCaches,
	availableSet []string,
	model string,
	m mode.Mode,
) (*model.Channel, error)

func GetChannelFromRequest

func GetChannelFromRequest(
	c *gin.Context,
	mc *model.ModelCaches,
	availableSet []string,
	modelName string,
	m mode.Mode,
) (*model.Channel, error)

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			channel			query		int		false	"Channel ID"
@Param			model			query		string	false	"Model name"
@Param			start_timestamp	query		int64	false	"Start second timestamp"
@Param			end_timestamp	query		int64	false	"End second timestamp"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Param			timespan		query		string	false	"Time span type (minute, hour, day, month)"
@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			token_name		query		string	false	"Token name"
@Param			model			query		string	false	"Model or *"
@Param			start_timestamp	query		int64	false	"Start second timestamp"
@Param			end_timestamp	query		int64	false	"End second timestamp"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Param			timespan		query		string	false	"Time span type (minute, hour, day, month)"
@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=[]GroupModel}
@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	"Status code type"
@Param			code			query		int		false	"Status code"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			user			query		string	false	"User"
@Success		200				{object}	middleware.APIResponse{data=model.GetGroupLogsResult}
@Router			/api/log/{group} [get]

func GetGroupModelConfig

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

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 GetGroupTimeSeriesModelData

func GetGroupTimeSeriesModelData(c *gin.Context)

GetGroupTimeSeriesModelData 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"
@Param			token_name		query		string	false	"Token name"
@Param			model			query		string	false	"Model name"
@Param			start_timestamp	query		int64	false	"Start timestamp"
@Param			end_timestamp	query		int64	false	"End timestamp"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Param			timespan		query		string	false	"Time span type (minute, hour, day, month)"
@Success		200				{object}	middleware.APIResponse{data=[]model.TimeSummaryDataV2}
@Router			/api/dashboardv2/{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 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

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			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			model_name		query		string	false	"Model name"
@Param			channel			query		int		false	"Channel ID"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Status code type"
@Param			code			query		int		false	"Status code"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			user			query		string	false	"User"
@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 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/option/{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/option/ [get]

func GetQuota

func GetQuota(c *gin.Context)

GetQuota godoc

@Summary		Get quota
@Description	Get quota
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Success		200	{object}	balance.GroupQuota
@Router			/v1/dashboard/billing/quota [get]

func GetRandomChannel

func GetRandomChannel(
	mc *model.ModelCaches,
	availableSet []string,
	modelName string,
	mode mode.Mode,
	errorRates map[int64]float64,
	ignoreChannelMap map[int64]struct{},
) (*model.Channel, []*model.Channel, error)

func GetResponse

func GetResponse() []gin.HandlerFunc

GetResponse godoc

@Summary		Get response
@Description	Get a response by ID
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			response_id		path		string	true	"Response ID"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.Response
@Router			/v1/responses/{response_id} [get]

func GetResponseInputItems

func GetResponseInputItems() []gin.HandlerFunc

GetResponseInputItems godoc

@Summary		Get response input items
@Description	Get input items for a response
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			response_id		path		string	true	"Response ID"
@Param			Aiproxy-Channel	header		string	false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.InputItemList
@Router			/v1/responses/{response_id}/input_items [get]

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/billing/subscription [get]

func GetTimeSeriesModelData

func GetTimeSeriesModelData(c *gin.Context)

GetTimeSeriesModelData godoc

@Summary		Get model usage data for a specific channel
@Description	Returns model-specific metrics and usage data for the given channel
@Tags			dashboard
@Produce		json
@Security		ApiKeyAuth
@Param			channel			query		int		false	"Channel ID"
@Param			model			query		string	false	"Model name"
@Param			start_timestamp	query		int64	false	"Start timestamp"
@Param			end_timestamp	query		int64	false	"End timestamp"
@Param			timezone		query		string	false	"Timezone, default is Local"
@Param			timespan		query		string	false	"Time span type (minute, hour, day, month)"
@Success		200				{object}	middleware.APIResponse{data=[]model.TimeSummaryDataV2}
@Router			/api/dashboardv2/ [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/billing/usage [get]

func ImagesEdits

func ImagesEdits() []gin.HandlerFunc

ImagesEdits godoc

@Summary		ImagesEdits
@Description	ImagesEdits
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			prompt			formData	string	true	"Prompt"
@Param			model			formData	string	true	"Model"
@Param			image			formData	file	true	"Images"
@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/images/edits [post]

func ImagesGenerations

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

func Moderations() []gin.HandlerFunc

func NewMetaByContext

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

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(
	c *gin.Context,
	meta *meta.Meta,
	handel RelayHandler,
) (*controller.HandleResult, bool)

func RelayNotImplemented

func RelayNotImplemented(c *gin.Context)

func Rerank

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

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/{model} [post]

func SaveGroupModelConfigs

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/{model} [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	false	"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			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	"Status code type"
@Param			code			query		int		false	"Status code"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			user			query		string	false	"User"
@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			keyword			query		string	false	"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			model_name		query		string	false	"Filter by model name"
@Param			channel			query		int		false	"Filter by channel"
@Param			group			query		string	true	"Group name"
@Param			token_id		query		int		false	"Filter by token id"
@Param			token_name		query		string	false	"Filter by token name"
@Param			order			query		string	false	"Order"
@Param			request_id		query		string	false	"Request ID"
@Param			code_type		query		string	false	"Status code type"
@Param			code			query		int		false	"Status code"
@Param			with_body		query		bool	false	"With body"
@Param			ip				query		string	false	"IP"
@Param			user			query		string	false	"User"
@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}/test [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		model.UpdateGroupRequest	true	"Updated group information"
@Success		200		{object}	middleware.APIResponse{data=model.Group}
@Router			/api/group/{group} [put]

func UpdateGroupModelConfig

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

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		model.UpdateTokenRequest	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

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/option/ [put]
@Router			/api/option/ [post]

func UpdateOptionByKey

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/option/{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/option/batch [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		model.UpdateTokenRequest	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]

func VideoGenerationsContent

func VideoGenerationsContent() []gin.HandlerFunc

VideoGenerationsContent godoc

@Summary		VideoGenerationsContent
@Description	VideoGenerationsContent
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.VideoGenerationJobRequest	true	"Request"
@Param			Aiproxy-Channel	header		string							false	"Optional Aiproxy-Channel header"
@Success		200				{file}		file							"video 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/video/generations/{id}/content/video [get]

func VideoGenerationsGetJobs

func VideoGenerationsGetJobs() []gin.HandlerFunc

VideoGenerationsGetJobs godoc

@Summary		VideoGenerationsGetJobs
@Description	VideoGenerationsGetJobs
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.VideoGenerationJobRequest	true	"Request"
@Param			Aiproxy-Channel	header		string							false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.VideoGenerationJob
@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/video/generations/jobs/{id} [get]

func VideoGenerationsJobs

func VideoGenerationsJobs() []gin.HandlerFunc

VideoGenerationsJobs godoc

@Summary		VideoGenerationsJobs
@Description	VideoGenerationsJobs
@Tags			relay
@Produce		json
@Security		ApiKeyAuth
@Param			request			body		model.VideoGenerationJobRequest	true	"Request"
@Param			Aiproxy-Channel	header		string							false	"Optional Aiproxy-Channel header"
@Success		200				{object}	model.VideoGenerationJob
@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/video/generations/jobs [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         model.ChannelType    `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"`
	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"`
	AvailableSets []string `json:"available_sets"`

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

func (*CreateGroupRequest) ToGroup

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

type EnabledModelChannel

type EnabledModelChannel struct {
	ID   int               `json:"id"`
	Type model.ChannelType `json:"type"`
	Name string            `json:"name"`
}

type GetModelConfigsByModelsContainsRequest

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

type GetRequestPrice

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

type GetRequestUsage

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

type GroupModel

type GroupModel struct {
	CreatedAt int64                        `json:"created_at,omitempty"`
	UpdatedAt int64                        `json:"updated_at,omitempty"`
	Config    map[model.ModelConfigKey]any `json:"config,omitempty"`
	Model     string                       `json:"model"`
	Owner     model.ModelOwner             `json:"owner"`
	Type      mode.Mode                    `json:"type"`
	RPM       int64                        `json:"rpm,omitempty"`
	TPM       int64                        `json:"tpm,omitempty"`
	// map[size]map[quality]price_per_image
	ImageQualityPrices map[string]map[string]float64 `json:"image_quality_prices,omitempty"`
	// map[size]price_per_image
	ImagePrices    map[string]float64 `json:"image_prices,omitempty"`
	Price          model.Price        `json:"price,omitempty"`
	EnabledPlugins []string           `json:"enabled_plugins,omitempty"`
}

func NewGroupModel

func NewGroupModel(mc model.ModelConfig) GroupModel

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

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

type SaveGroupModelConfigRequest

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"`

	OverrideRetryTimes bool  `json:"override_retry_times"`
	RetryTimes         int64 `json:"retry_times"`

	OverrideForceSaveDetail bool `json:"override_force_save_detail"`
	ForceSaveDetail         bool `json:"force_save_detail"`
}

func (*SaveGroupModelConfigRequest) ToGroupModelConfig

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

type SaveModelConfigsRequest

type SaveModelConfigsRequest = model.ModelConfig

type StatusData

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

type TestResult

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

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"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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