Documentation
¶
Overview ¶
Package management provides the management API handlers and middleware for configuring the server and managing auth files.
Index ¶
- func CompleteOAuthSession(state string)
- func CompleteOAuthSessionsByProvider(provider string) int
- func GetOAuthSession(state string) (provider string, status string, ok bool)
- func IsOAuthSessionPending(state, provider string) bool
- func NormalizeOAuthProvider(provider string) (string, error)
- func PopulateAuthContext(ctx context.Context, c *gin.Context) context.Context
- func RegisterOAuthSession(state, provider string)
- func SetOAuthSessionError(state, message string)
- func ValidateOAuthState(state string) error
- func WriteConfig(path string, data []byte) error
- func WriteOAuthCallbackFile(authDir, provider, state, code, errorMessage string) (string, error)
- func WriteOAuthCallbackFileForPendingSession(authDir, provider, state, code, errorMessage string) (string, error)
- type Handler
- func (h *Handler) APICall(c *gin.Context)
- func (h *Handler) DeleteAPIKeys(c *gin.Context)
- func (h *Handler) DeleteAmpModelMappings(c *gin.Context)
- func (h *Handler) DeleteAmpUpstreamAPIKey(c *gin.Context)
- func (h *Handler) DeleteAmpUpstreamAPIKeys(c *gin.Context)
- func (h *Handler) DeleteAmpUpstreamURL(c *gin.Context)
- func (h *Handler) DeleteAuthFile(c *gin.Context)
- func (h *Handler) DeleteClaudeKey(c *gin.Context)
- func (h *Handler) DeleteCodexKey(c *gin.Context)
- func (h *Handler) DeleteGeminiKey(c *gin.Context)
- func (h *Handler) DeleteLogs(c *gin.Context)
- func (h *Handler) DeleteOAuthExcludedModels(c *gin.Context)
- func (h *Handler) DeleteOAuthModelAlias(c *gin.Context)
- func (h *Handler) DeleteOpenAICompat(c *gin.Context)
- func (h *Handler) DeleteProxyURL(c *gin.Context)
- func (h *Handler) DeleteVertexCompatKey(c *gin.Context)
- func (h *Handler) DownloadAuthFile(c *gin.Context)
- func (h *Handler) DownloadRequestErrorLog(c *gin.Context)
- func (h *Handler) ExportUsageStatistics(c *gin.Context)
- func (h *Handler) GetAPIKeys(c *gin.Context)
- func (h *Handler) GetAmpCode(c *gin.Context)
- func (h *Handler) GetAmpForceModelMappings(c *gin.Context)
- func (h *Handler) GetAmpModelMappings(c *gin.Context)
- func (h *Handler) GetAmpRestrictManagementToLocalhost(c *gin.Context)
- func (h *Handler) GetAmpUpstreamAPIKey(c *gin.Context)
- func (h *Handler) GetAmpUpstreamAPIKeys(c *gin.Context)
- func (h *Handler) GetAmpUpstreamURL(c *gin.Context)
- func (h *Handler) GetAuthFileModels(c *gin.Context)
- func (h *Handler) GetAuthStatus(c *gin.Context)
- func (h *Handler) GetClaudeKeys(c *gin.Context)
- func (h *Handler) GetCodexKeys(c *gin.Context)
- func (h *Handler) GetConfig(c *gin.Context)
- func (h *Handler) GetConfigYAML(c *gin.Context)
- func (h *Handler) GetDebug(c *gin.Context)
- func (h *Handler) GetErrorLogsMaxFiles(c *gin.Context)
- func (h *Handler) GetForceModelPrefix(c *gin.Context)
- func (h *Handler) GetGeminiKeys(c *gin.Context)
- func (h *Handler) GetLatestVersion(c *gin.Context)
- func (h *Handler) GetLoggingToFile(c *gin.Context)
- func (h *Handler) GetLogs(c *gin.Context)
- func (h *Handler) GetLogsMaxTotalSizeMB(c *gin.Context)
- func (h *Handler) GetMaxRetryInterval(c *gin.Context)
- func (h *Handler) GetOAuthExcludedModels(c *gin.Context)
- func (h *Handler) GetOAuthModelAlias(c *gin.Context)
- func (h *Handler) GetOpenAICompat(c *gin.Context)
- func (h *Handler) GetProxyURL(c *gin.Context)
- func (h *Handler) GetRequestErrorLogs(c *gin.Context)
- func (h *Handler) GetRequestLog(c *gin.Context)
- func (h *Handler) GetRequestLogByID(c *gin.Context)
- func (h *Handler) GetRequestRetry(c *gin.Context)
- func (h *Handler) GetRoutingStrategy(c *gin.Context)
- func (h *Handler) GetStaticModelDefinitions(c *gin.Context)
- func (h *Handler) GetSwitchPreviewModel(c *gin.Context)
- func (h *Handler) GetSwitchProject(c *gin.Context)
- func (h *Handler) GetUsageStatistics(c *gin.Context)
- func (h *Handler) GetUsageStatisticsEnabled(c *gin.Context)
- func (h *Handler) GetVertexCompatKeys(c *gin.Context)
- func (h *Handler) GetWebsocketAuth(c *gin.Context)
- func (h *Handler) ImportUsageStatistics(c *gin.Context)
- func (h *Handler) ImportVertexCredential(c *gin.Context)
- func (h *Handler) ListAuthFiles(c *gin.Context)
- func (h *Handler) Middleware() gin.HandlerFunc
- func (h *Handler) PatchAPIKeys(c *gin.Context)
- func (h *Handler) PatchAmpModelMappings(c *gin.Context)
- func (h *Handler) PatchAmpUpstreamAPIKeys(c *gin.Context)
- func (h *Handler) PatchAuthFileFields(c *gin.Context)
- func (h *Handler) PatchAuthFileStatus(c *gin.Context)
- func (h *Handler) PatchClaudeKey(c *gin.Context)
- func (h *Handler) PatchCodexKey(c *gin.Context)
- func (h *Handler) PatchGeminiKey(c *gin.Context)
- func (h *Handler) PatchOAuthExcludedModels(c *gin.Context)
- func (h *Handler) PatchOAuthModelAlias(c *gin.Context)
- func (h *Handler) PatchOpenAICompat(c *gin.Context)
- func (h *Handler) PatchVertexCompatKey(c *gin.Context)
- func (h *Handler) PostOAuthCallback(c *gin.Context)
- func (h *Handler) PutAPIKeys(c *gin.Context)
- func (h *Handler) PutAmpForceModelMappings(c *gin.Context)
- func (h *Handler) PutAmpModelMappings(c *gin.Context)
- func (h *Handler) PutAmpRestrictManagementToLocalhost(c *gin.Context)
- func (h *Handler) PutAmpUpstreamAPIKey(c *gin.Context)
- func (h *Handler) PutAmpUpstreamAPIKeys(c *gin.Context)
- func (h *Handler) PutAmpUpstreamURL(c *gin.Context)
- func (h *Handler) PutClaudeKeys(c *gin.Context)
- func (h *Handler) PutCodexKeys(c *gin.Context)
- func (h *Handler) PutConfigYAML(c *gin.Context)
- func (h *Handler) PutDebug(c *gin.Context)
- func (h *Handler) PutErrorLogsMaxFiles(c *gin.Context)
- func (h *Handler) PutForceModelPrefix(c *gin.Context)
- func (h *Handler) PutGeminiKeys(c *gin.Context)
- func (h *Handler) PutLoggingToFile(c *gin.Context)
- func (h *Handler) PutLogsMaxTotalSizeMB(c *gin.Context)
- func (h *Handler) PutMaxRetryInterval(c *gin.Context)
- func (h *Handler) PutOAuthExcludedModels(c *gin.Context)
- func (h *Handler) PutOAuthModelAlias(c *gin.Context)
- func (h *Handler) PutOpenAICompat(c *gin.Context)
- func (h *Handler) PutProxyURL(c *gin.Context)
- func (h *Handler) PutRequestLog(c *gin.Context)
- func (h *Handler) PutRequestRetry(c *gin.Context)
- func (h *Handler) PutRoutingStrategy(c *gin.Context)
- func (h *Handler) PutSwitchPreviewModel(c *gin.Context)
- func (h *Handler) PutSwitchProject(c *gin.Context)
- func (h *Handler) PutUsageStatisticsEnabled(c *gin.Context)
- func (h *Handler) PutVertexCompatKeys(c *gin.Context)
- func (h *Handler) PutWebsocketAuth(c *gin.Context)
- func (h *Handler) RequestAnthropicToken(c *gin.Context)
- func (h *Handler) RequestAntigravityToken(c *gin.Context)
- func (h *Handler) RequestCodexToken(c *gin.Context)
- func (h *Handler) RequestGeminiCLIToken(c *gin.Context)
- func (h *Handler) RequestIFlowCookieToken(c *gin.Context)
- func (h *Handler) RequestIFlowToken(c *gin.Context)
- func (h *Handler) RequestKimiToken(c *gin.Context)
- func (h *Handler) RequestQwenToken(c *gin.Context)
- func (h *Handler) SetAuthManager(manager *coreauth.Manager)
- func (h *Handler) SetConfig(cfg *config.Config)
- func (h *Handler) SetLocalPassword(password string)
- func (h *Handler) SetLogDirectory(dir string)
- func (h *Handler) SetPostAuthHook(hook coreauth.PostAuthHook)
- func (h *Handler) SetUsageStatistics(stats *usage.RequestStatistics)
- func (h *Handler) UploadAuthFile(c *gin.Context)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CompleteOAuthSession ¶
func CompleteOAuthSession(state string)
func IsOAuthSessionPending ¶
func NormalizeOAuthProvider ¶
func PopulateAuthContext ¶
PopulateAuthContext extracts request info and adds it to the context
func RegisterOAuthSession ¶
func RegisterOAuthSession(state, provider string)
func SetOAuthSessionError ¶
func SetOAuthSessionError(state, message string)
func ValidateOAuthState ¶
func WriteConfig ¶
func WriteOAuthCallbackFile ¶
Types ¶
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler aggregates config reference, persistence path and helpers.
func NewHandler ¶
NewHandler creates a new management handler instance.
func NewHandlerWithoutConfigFilePath ¶
NewHandler creates a new management handler instance.
func (*Handler) APICall ¶
APICall makes a generic HTTP request on behalf of the management API caller. It is protected by the management middleware.
Endpoint:
POST /v0/management/api-call
Authentication:
Same as other management APIs (requires a management key and remote-management rules). You can provide the key via: - Authorization: Bearer <key> - X-Management-Key: <key>
Request JSON:
- auth_index / authIndex / AuthIndex (optional): The credential "auth_index" from GET /v0/management/auth-files (or other endpoints returning it). If omitted or not found, credential-specific proxy/token substitution is skipped.
- method (required): HTTP method, e.g. GET, POST, PUT, PATCH, DELETE.
- url (required): Absolute URL including scheme and host, e.g. "https://api.example.com/v1/ping".
- header (optional): Request headers map. Supports magic variable "$TOKEN$" which is replaced using the selected credential: 1) metadata.access_token 2) attributes.api_key 3) metadata.token / metadata.id_token / metadata.cookie Example: {"Authorization":"Bearer $TOKEN$"}. Note: if you need to override the HTTP Host header, set header["Host"].
- data (optional): Raw request body as string (useful for POST/PUT/PATCH).
Proxy selection (highest priority first):
- Selected credential proxy_url
- Global config proxy-url
- Direct connect (environment proxies are not used)
Response JSON (returned with HTTP 200 when the APICall itself succeeds):
- status_code: Upstream HTTP status code.
- header: Upstream response headers.
- body: Upstream response body as string.
Example:
curl -sS -X POST "http://127.0.0.1:8317/v0/management/api-call" \
-H "Authorization: Bearer <MANAGEMENT_KEY>" \
-H "Content-Type: application/json" \
-d '{"auth_index":"<AUTH_INDEX>","method":"GET","url":"https://api.example.com/v1/ping","header":{"Authorization":"Bearer $TOKEN$"}}'
curl -sS -X POST "http://127.0.0.1:8317/v0/management/api-call" \
-H "Authorization: Bearer 831227" \
-H "Content-Type: application/json" \
-d '{"auth_index":"<AUTH_INDEX>","method":"POST","url":"https://api.example.com/v1/fetchAvailableModels","header":{"Authorization":"Bearer $TOKEN$","Content-Type":"application/json","User-Agent":"cliproxyapi"},"data":"{}"}'
func (*Handler) DeleteAPIKeys ¶
func (*Handler) DeleteAmpModelMappings ¶
DeleteAmpModelMappings removes specified model mappings by "from" field.
func (*Handler) DeleteAmpUpstreamAPIKey ¶
DeleteAmpUpstreamAPIKey clears the ampcode upstream API key.
func (*Handler) DeleteAmpUpstreamAPIKeys ¶
DeleteAmpUpstreamAPIKeys removes specified upstream API keys entries. Body must be JSON: {"value": ["<upstream-api-key>", ...]}. If "value" is an empty array, clears all entries. If JSON is invalid or "value" is missing/null, returns 400 and does not persist any change.
func (*Handler) DeleteAmpUpstreamURL ¶
DeleteAmpUpstreamURL clears the ampcode upstream URL.
func (*Handler) DeleteAuthFile ¶
Delete auth files: single by name or all
func (*Handler) DeleteClaudeKey ¶
func (*Handler) DeleteCodexKey ¶
func (*Handler) DeleteGeminiKey ¶
func (*Handler) DeleteLogs ¶
DeleteLogs removes all rotated log files and truncates the active log.
func (*Handler) DeleteOAuthExcludedModels ¶
func (*Handler) DeleteOAuthModelAlias ¶
func (*Handler) DeleteOpenAICompat ¶
func (*Handler) DeleteProxyURL ¶
func (*Handler) DeleteVertexCompatKey ¶
func (*Handler) DownloadAuthFile ¶
Download single auth file by name
func (*Handler) DownloadRequestErrorLog ¶
DownloadRequestErrorLog downloads a specific error request log file by name.
func (*Handler) ExportUsageStatistics ¶
ExportUsageStatistics returns a complete usage snapshot for backup/migration.
func (*Handler) GetAmpCode ¶
GetAmpCode returns the complete ampcode configuration.
func (*Handler) GetAmpForceModelMappings ¶
GetAmpForceModelMappings returns whether model mappings are forced.
func (*Handler) GetAmpModelMappings ¶
GetAmpModelMappings returns the ampcode model mappings.
func (*Handler) GetAmpRestrictManagementToLocalhost ¶
GetAmpRestrictManagementToLocalhost returns the localhost restriction setting.
func (*Handler) GetAmpUpstreamAPIKey ¶
GetAmpUpstreamAPIKey returns the ampcode upstream API key.
func (*Handler) GetAmpUpstreamAPIKeys ¶
GetAmpUpstreamAPIKeys returns the ampcode upstream API keys mapping.
func (*Handler) GetAmpUpstreamURL ¶
GetAmpUpstreamURL returns the ampcode upstream URL.
func (*Handler) GetAuthFileModels ¶
GetAuthFileModels returns the models supported by a specific auth file
func (*Handler) GetAuthStatus ¶
func (*Handler) GetClaudeKeys ¶
claude-api-key: []ClaudeKey
func (*Handler) GetCodexKeys ¶
codex-api-key: []CodexKey
func (*Handler) GetConfigYAML ¶
GetConfigYAML returns the raw config.yaml file bytes without re-encoding. It preserves comments and original formatting/styles.
func (*Handler) GetErrorLogsMaxFiles ¶
ErrorLogsMaxFiles
func (*Handler) GetForceModelPrefix ¶
ForceModelPrefix
func (*Handler) GetGeminiKeys ¶
gemini-api-key: []GeminiKey
func (*Handler) GetLatestVersion ¶
GetLatestVersion returns the latest release version from GitHub without downloading assets.
func (*Handler) GetLoggingToFile ¶
UsageStatisticsEnabled
func (*Handler) GetLogsMaxTotalSizeMB ¶
LogsMaxTotalSizeMB
func (*Handler) GetMaxRetryInterval ¶
Max retry interval
func (*Handler) GetOAuthExcludedModels ¶
oauth-excluded-models: map[string][]string
func (*Handler) GetOAuthModelAlias ¶
oauth-model-alias: map[string][]OAuthModelAlias
func (*Handler) GetOpenAICompat ¶
openai-compatibility: []OpenAICompatibility
func (*Handler) GetRequestErrorLogs ¶
GetRequestErrorLogs lists error request log files when RequestLog is disabled. It returns an empty list when RequestLog is enabled.
func (*Handler) GetRequestLogByID ¶
GetRequestLogByID finds and downloads a request log file by its request ID. The ID is matched against the suffix of log file names (format: *-{requestID}.log).
func (*Handler) GetRoutingStrategy ¶
RoutingStrategy
func (*Handler) GetStaticModelDefinitions ¶
GetStaticModelDefinitions returns static model metadata for a given channel. Channel is provided via path param (:channel) or query param (?channel=...).
func (*Handler) GetSwitchPreviewModel ¶
func (*Handler) GetSwitchProject ¶
Quota exceeded toggles
func (*Handler) GetUsageStatistics ¶
GetUsageStatistics returns the in-memory request statistics snapshot.
func (*Handler) GetUsageStatisticsEnabled ¶
UsageStatisticsEnabled
func (*Handler) GetVertexCompatKeys ¶
vertex-api-key: []VertexCompatKey
func (*Handler) GetWebsocketAuth ¶
Websocket auth
func (*Handler) ImportUsageStatistics ¶
ImportUsageStatistics merges a previously exported usage snapshot into memory.
func (*Handler) ImportVertexCredential ¶
ImportVertexCredential handles uploading a Vertex service account JSON and saving it as an auth record.
func (*Handler) ListAuthFiles ¶
func (*Handler) Middleware ¶
func (h *Handler) Middleware() gin.HandlerFunc
Middleware enforces access control for management endpoints. All requests (local and remote) require a valid management key. Additionally, remote access requires allow-remote-management=true.
func (*Handler) PatchAPIKeys ¶
func (*Handler) PatchAmpModelMappings ¶
PatchAmpModelMappings adds or updates model mappings.
func (*Handler) PatchAmpUpstreamAPIKeys ¶
PatchAmpUpstreamAPIKeys adds or updates upstream API keys entries. Matching is done by upstream-api-key value.
func (*Handler) PatchAuthFileFields ¶
PatchAuthFileFields updates editable fields (prefix, proxy_url, priority, note) of an auth file.
func (*Handler) PatchAuthFileStatus ¶
PatchAuthFileStatus toggles the disabled state of an auth file
func (*Handler) PatchClaudeKey ¶
func (*Handler) PatchCodexKey ¶
func (*Handler) PatchGeminiKey ¶
func (*Handler) PatchOAuthExcludedModels ¶
func (*Handler) PatchOAuthModelAlias ¶
func (*Handler) PatchOpenAICompat ¶
func (*Handler) PatchVertexCompatKey ¶
func (*Handler) PostOAuthCallback ¶
func (*Handler) PutAPIKeys ¶
func (*Handler) PutAmpForceModelMappings ¶
PutAmpForceModelMappings updates the force model mappings setting.
func (*Handler) PutAmpModelMappings ¶
PutAmpModelMappings replaces all ampcode model mappings.
func (*Handler) PutAmpRestrictManagementToLocalhost ¶
PutAmpRestrictManagementToLocalhost updates the localhost restriction setting.
func (*Handler) PutAmpUpstreamAPIKey ¶
PutAmpUpstreamAPIKey updates the ampcode upstream API key.
func (*Handler) PutAmpUpstreamAPIKeys ¶
PutAmpUpstreamAPIKeys replaces all ampcode upstream API keys mappings.
func (*Handler) PutAmpUpstreamURL ¶
PutAmpUpstreamURL updates the ampcode upstream URL.
func (*Handler) PutClaudeKeys ¶
func (*Handler) PutCodexKeys ¶
func (*Handler) PutConfigYAML ¶
func (*Handler) PutErrorLogsMaxFiles ¶
func (*Handler) PutForceModelPrefix ¶
func (*Handler) PutGeminiKeys ¶
func (*Handler) PutLoggingToFile ¶
func (*Handler) PutLogsMaxTotalSizeMB ¶
func (*Handler) PutMaxRetryInterval ¶
func (*Handler) PutOAuthExcludedModels ¶
func (*Handler) PutOAuthModelAlias ¶
func (*Handler) PutOpenAICompat ¶
func (*Handler) PutProxyURL ¶
func (*Handler) PutRequestLog ¶
func (*Handler) PutRequestRetry ¶
func (*Handler) PutRoutingStrategy ¶
func (*Handler) PutSwitchPreviewModel ¶
func (*Handler) PutSwitchProject ¶
func (*Handler) PutUsageStatisticsEnabled ¶
func (*Handler) PutVertexCompatKeys ¶
func (*Handler) PutWebsocketAuth ¶
func (*Handler) RequestAnthropicToken ¶
func (*Handler) RequestAntigravityToken ¶
func (*Handler) RequestCodexToken ¶
func (*Handler) RequestGeminiCLIToken ¶
func (*Handler) RequestIFlowCookieToken ¶
func (*Handler) RequestIFlowToken ¶
func (*Handler) RequestKimiToken ¶
func (*Handler) RequestQwenToken ¶
func (*Handler) SetAuthManager ¶
SetAuthManager updates the auth manager reference used by management endpoints.
func (*Handler) SetConfig ¶
SetConfig updates the in-memory config reference when the server hot-reloads.
func (*Handler) SetLocalPassword ¶
SetLocalPassword configures the runtime-local password accepted for localhost requests.
func (*Handler) SetLogDirectory ¶
SetLogDirectory updates the directory where main.log should be looked up.
func (*Handler) SetPostAuthHook ¶
func (h *Handler) SetPostAuthHook(hook coreauth.PostAuthHook)
SetPostAuthHook registers a hook to be called after auth record creation but before persistence.
func (*Handler) SetUsageStatistics ¶
func (h *Handler) SetUsageStatistics(stats *usage.RequestStatistics)
SetUsageStatistics allows replacing the usage statistics reference.
func (*Handler) UploadAuthFile ¶
Upload auth file: multipart or raw JSON with ?name=