api

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2025 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidModelSpec = errors.New("invalid model specification")
)

Sentinel errors for proper HTTP status code mapping

Functions

This section is empty.

Types

type APIKeyHandler

type APIKeyHandler struct {
	// contains filtered or unexported fields
}

func NewAPIKeyHandler

func NewAPIKeyHandler(service *usage.APIKeyService, budgetService *usage.Service, creditsEnabled bool, authProvider auth.AuthProvider) *APIKeyHandler

func (*APIKeyHandler) CreateAPIKey

func (h *APIKeyHandler) CreateAPIKey(c *fiber.Ctx) error

func (*APIKeyHandler) DeleteAPIKey

func (h *APIKeyHandler) DeleteAPIKey(c *fiber.Ctx) error

func (*APIKeyHandler) GetAPIKey

func (h *APIKeyHandler) GetAPIKey(c *fiber.Ctx) error

func (*APIKeyHandler) GetStats

func (h *APIKeyHandler) GetStats(c *fiber.Ctx) error

func (*APIKeyHandler) GetUsage

func (h *APIKeyHandler) GetUsage(c *fiber.Ctx) error

func (*APIKeyHandler) ListAPIKeysByProjectID

func (h *APIKeyHandler) ListAPIKeysByProjectID(c *fiber.Ctx) error

func (*APIKeyHandler) ListAPIKeysByUserID

func (h *APIKeyHandler) ListAPIKeysByUserID(c *fiber.Ctx) error

func (*APIKeyHandler) RegisterRoutes

func (h *APIKeyHandler) RegisterRoutes(app *fiber.App, prefix string)

func (*APIKeyHandler) ResetBudget

func (h *APIKeyHandler) ResetBudget(c *fiber.Ctx) error

func (*APIKeyHandler) RevokeAPIKey

func (h *APIKeyHandler) RevokeAPIKey(c *fiber.Ctx) error

func (*APIKeyHandler) UpdateAPIKey

func (h *APIKeyHandler) UpdateAPIKey(c *fiber.Ctx) error

func (*APIKeyHandler) VerifyAPIKey

func (h *APIKeyHandler) VerifyAPIKey(c *fiber.Ctx) error

type AdminHandler

type AdminHandler struct {
	// contains filtered or unexported fields
}

func NewAdminHandler

func NewAdminHandler(adminService *admin.Service) *AdminHandler

func (*AdminHandler) AddOrganizationMember

func (h *AdminHandler) AddOrganizationMember(c *fiber.Ctx) error

func (*AdminHandler) CreateOrganization

func (h *AdminHandler) CreateOrganization(c *fiber.Ctx) error

func (*AdminHandler) CreateUser

func (h *AdminHandler) CreateUser(c *fiber.Ctx) error

func (*AdminHandler) DeleteOrganization

func (h *AdminHandler) DeleteOrganization(c *fiber.Ctx) error

func (*AdminHandler) DeleteUser

func (h *AdminHandler) DeleteUser(c *fiber.Ctx) error

func (*AdminHandler) GetOrganization

func (h *AdminHandler) GetOrganization(c *fiber.Ctx) error

func (*AdminHandler) GetUser

func (h *AdminHandler) GetUser(c *fiber.Ctx) error

func (*AdminHandler) ListOrganizationMembers

func (h *AdminHandler) ListOrganizationMembers(c *fiber.Ctx) error

func (*AdminHandler) ListOrganizations

func (h *AdminHandler) ListOrganizations(c *fiber.Ctx) error

func (*AdminHandler) RemoveOrganizationMember

func (h *AdminHandler) RemoveOrganizationMember(c *fiber.Ctx) error

func (*AdminHandler) UpdateOrganization

func (h *AdminHandler) UpdateOrganization(c *fiber.Ctx) error

func (*AdminHandler) UpdateUser

func (h *AdminHandler) UpdateUser(c *fiber.Ctx) error

type CheckCreditsRequest

type CheckCreditsRequest struct {
	OrganizationID string  `json:"organization_id" binding:"required"`
	Amount         float64 `json:"amount" binding:"required,min=0"`
}

CheckCreditsRequest represents the request body for checking credits

type CheckCreditsResponse

type CheckCreditsResponse struct {
	HasEnoughCredits bool    `json:"has_enough_credits"`
	CurrentBalance   float64 `json:"current_balance"`
	RequiredAmount   float64 `json:"required_amount"`
	Shortfall        float64 `json:"shortfall,omitempty"`
}

CheckCreditsResponse represents the response for credit checks

type ClerkOrganizationData

type ClerkOrganizationData struct {
	ID        string `json:"id"`
	Name      string `json:"name"`
	CreatedBy string `json:"created_by"`
}

type ClerkOrganizationInfo

type ClerkOrganizationInfo struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

type ClerkOrganizationMembershipData

type ClerkOrganizationMembershipData struct {
	ID             string                `json:"id"`
	Organization   ClerkOrganizationInfo `json:"organization"`
	PublicUserData ClerkPublicUserData   `json:"public_user_data"`
	Role           string                `json:"role"`
}

type ClerkPublicUserData

type ClerkPublicUserData struct {
	UserID string `json:"user_id"`
}

type ClerkWebhookEvent

type ClerkWebhookEvent struct {
	Type string          `json:"type"`
	Data json.RawMessage `json:"data"`
}

type ClerkWebhookHandler

type ClerkWebhookHandler struct {
	// contains filtered or unexported fields
}

func NewClerkWebhookHandler

func NewClerkWebhookHandler(webhookSecret string, creditsService *usage.CreditsService, organizationsService *organizations.Service, projectsService *projects.Service) *ClerkWebhookHandler

func (*ClerkWebhookHandler) DeleteOrganizationData

func (h *ClerkWebhookHandler) DeleteOrganizationData(c *fiber.Ctx) error

func (*ClerkWebhookHandler) HandleWebhook

func (h *ClerkWebhookHandler) HandleWebhook(c *fiber.Ctx) error

type CompletionHandler

type CompletionHandler struct {
	// contains filtered or unexported fields
}

CompletionHandler handles chat completions end-to-end. It manages the lifecycle of chat completion requests, including provider selection, fallback handling, and response processing.

func NewCompletionHandler

func NewCompletionHandler(
	cfg *config.Config,
	reqSvc *completions.RequestService,
	respSvc *completions.ResponseService,
	completionSvc *completions.CompletionService,
	modelRouter *model_router.ModelRouter,
	circuitBreakers map[string]*circuitbreaker.CircuitBreaker,
	providerConfigSvc *provider_config.Service,
) *CompletionHandler

NewCompletionHandler wires up dependencies and initializes the completion handler.

func (*CompletionHandler) ChatCompletion

func (h *CompletionHandler) ChatCompletion(c *fiber.Ctx) error

ChatCompletion handles the chat completion HTTP request. It processes the request through provider selection, parameter configuration, and response handling with circuit breaking for reliability.

type CreateCheckoutSessionRequest

type CreateCheckoutSessionRequest struct {
	OrganizationID string  `json:"organization_id" binding:"required"`
	UserID         string  `json:"user_id" binding:"required"`
	StripePriceID  string  `json:"stripe_price_id" binding:"required"`
	CreditAmount   float64 `json:"credit_amount" binding:"required,min=0"`
	SuccessURL     string  `json:"success_url" binding:"required"`
	CancelURL      string  `json:"cancel_url" binding:"required"`
	CustomerEmail  string  `json:"customer_email,omitempty"`
}

CreateCheckoutSessionRequest represents the request body for creating a checkout session

type CreateCheckoutSessionResponse

type CreateCheckoutSessionResponse struct {
	SessionID   string  `json:"session_id"`
	CheckoutURL string  `json:"checkout_url"`
	Amount      float64 `json:"amount"`
}

CreateCheckoutSessionResponse represents the response for checkout session creation

type CreditsHandler

type CreditsHandler struct {
	// contains filtered or unexported fields
}

func NewCreditsHandler

func NewCreditsHandler(creditsService *usage.CreditsService, authProvider auth.AuthProvider) *CreditsHandler

func (*CreditsHandler) CheckCredits

func (h *CreditsHandler) CheckCredits(c *fiber.Ctx) error

CheckCredits checks if an organization has sufficient credits

func (*CreditsHandler) GetBalance

func (h *CreditsHandler) GetBalance(c *fiber.Ctx) error

GetBalance retrieves the current credit balance for an organization

func (*CreditsHandler) GetTransactionHistory

func (h *CreditsHandler) GetTransactionHistory(c *fiber.Ctx) error

GetTransactionHistory retrieves transaction history for an organization

type GetBalanceResponse

type GetBalanceResponse struct {
	OrganizationID string  `json:"organization_id"`
	Balance        float64 `json:"balance"`
	TotalPurchased float64 `json:"total_purchased"`
	TotalUsed      float64 `json:"total_used"`
}

GetBalanceResponse represents the response for balance queries

type GetTransactionHistoryResponse

type GetTransactionHistoryResponse struct {
	Transactions []TransactionItem `json:"transactions"`
	Total        int               `json:"total"`
	Limit        int               `json:"limit"`
	Offset       int               `json:"offset"`
}

GetTransactionHistoryResponse represents a transaction in the history

type HealthHandler

type HealthHandler struct {
	// contains filtered or unexported fields
}

func NewHealthHandler

func NewHealthHandler(cfg *config.Config, redisClient *redis.Client, db *database.DB) *HealthHandler

func (*HealthHandler) HealthCheck

func (h *HealthHandler) HealthCheck(c *fiber.Ctx) error

type MessagesHandler

type MessagesHandler struct {
	// contains filtered or unexported fields
}

MessagesHandler handles Anthropic Messages API requests using dedicated Anthropic services

func NewMessagesHandler

func NewMessagesHandler(
	cfg *config.Config,
	modelRouter *model_router.ModelRouter,
	circuitBreakers map[string]*circuitbreaker.CircuitBreaker,
	usageService *usage.Service,
	usageWorker *usage.Worker,
	providerConfigSvc *provider_config.Service,
) *MessagesHandler

NewMessagesHandler creates a new MessagesHandler with Anthropic-specific services

func (*MessagesHandler) Messages

func (h *MessagesHandler) Messages(c *fiber.Ctx) error

Messages handles the Anthropic Messages API HTTP request

type ProjectsHandler

type ProjectsHandler struct {
	// contains filtered or unexported fields
}

func NewProjectsHandler

func NewProjectsHandler(projectsService *projects.Service) *ProjectsHandler

func (*ProjectsHandler) AddMember

func (h *ProjectsHandler) AddMember(c *fiber.Ctx) error

func (*ProjectsHandler) CreateProject

func (h *ProjectsHandler) CreateProject(c *fiber.Ctx) error

func (*ProjectsHandler) DeleteProject

func (h *ProjectsHandler) DeleteProject(c *fiber.Ctx) error

func (*ProjectsHandler) GetProject

func (h *ProjectsHandler) GetProject(c *fiber.Ctx) error

func (*ProjectsHandler) ListMembers

func (h *ProjectsHandler) ListMembers(c *fiber.Ctx) error

func (*ProjectsHandler) ListProjects

func (h *ProjectsHandler) ListProjects(c *fiber.Ctx) error

func (*ProjectsHandler) RemoveMember

func (h *ProjectsHandler) RemoveMember(c *fiber.Ctx) error

func (*ProjectsHandler) UpdateMemberRole

func (h *ProjectsHandler) UpdateMemberRole(c *fiber.Ctx) error

func (*ProjectsHandler) UpdateProject

func (h *ProjectsHandler) UpdateProject(c *fiber.Ctx) error

type ProviderConfigHandler

type ProviderConfigHandler struct {
	// contains filtered or unexported fields
}

ProviderConfigHandler handles provider configuration API requests

func NewProviderConfigHandler

func NewProviderConfigHandler(service *provider_config.Service) *ProviderConfigHandler

NewProviderConfigHandler creates a new provider config handler

func (*ProviderConfigHandler) CreateOrganizationProvider

func (h *ProviderConfigHandler) CreateOrganizationProvider(c *fiber.Ctx) error

CreateOrganizationProvider creates a provider config for an organization POST /v1/organizations/:id/providers/:provider

func (*ProviderConfigHandler) CreateProjectProvider

func (h *ProviderConfigHandler) CreateProjectProvider(c *fiber.Ctx) error

CreateProjectProvider creates or updates a provider config for a project POST /v1/projects/:id/providers/:provider

func (*ProviderConfigHandler) DeleteOrganizationProvider

func (h *ProviderConfigHandler) DeleteOrganizationProvider(c *fiber.Ctx) error

DeleteOrganizationProvider deletes a provider config for an organization DELETE /v1/organizations/:id/providers/:provider

func (*ProviderConfigHandler) DeleteProjectProvider

func (h *ProviderConfigHandler) DeleteProjectProvider(c *fiber.Ctx) error

DeleteProjectProvider deletes a provider config for a project DELETE /v1/projects/:id/providers/:provider

func (*ProviderConfigHandler) GetOrganizationProviders

func (h *ProviderConfigHandler) GetOrganizationProviders(c *fiber.Ctx) error

GetOrganizationProviders returns all database provider configs for an organization GET /v1/organizations/:id/providers

func (*ProviderConfigHandler) GetProjectProvider

func (h *ProviderConfigHandler) GetProjectProvider(c *fiber.Ctx) error

GetProjectProvider returns a specific provider config for a project GET /v1/projects/:id/providers/:provider

func (*ProviderConfigHandler) GetProjectProviders

func (h *ProviderConfigHandler) GetProjectProviders(c *fiber.Ctx) error

GetProjectProviders returns all database provider configs for a project GET /v1/projects/:id/providers

func (*ProviderConfigHandler) GetProviderConfigHistory

func (h *ProviderConfigHandler) GetProviderConfigHistory(c *fiber.Ctx) error

GetProviderConfigHistory retrieves audit history for a provider config GET /v1/provider-configs/:id/history

func (*ProviderConfigHandler) ToggleOrganizationProvider

func (h *ProviderConfigHandler) ToggleOrganizationProvider(c *fiber.Ctx) error

ToggleOrganizationProvider toggles the enabled status of an organization provider config PATCH /v1/organizations/:id/providers/:provider/toggle

func (*ProviderConfigHandler) ToggleProjectProvider

func (h *ProviderConfigHandler) ToggleProjectProvider(c *fiber.Ctx) error

ToggleProjectProvider toggles the enabled status of a project provider config PATCH /v1/projects/:id/providers/:provider/toggle

func (*ProviderConfigHandler) UpdateOrganizationProvider

func (h *ProviderConfigHandler) UpdateOrganizationProvider(c *fiber.Ctx) error

UpdateOrganizationProvider updates a provider config for an organization PATCH /v1/organizations/:id/providers/:provider

func (*ProviderConfigHandler) UpdateProjectProvider

func (h *ProviderConfigHandler) UpdateProjectProvider(c *fiber.Ctx) error

UpdateProjectProvider updates a provider config for a project PATCH /v1/projects/:id/providers/:provider

type SelectModelHandler

type SelectModelHandler struct {
	// contains filtered or unexported fields
}

SelectModelHandler handles model selection requests. It determines which model/provider would be selected for a given provider-agnostic request without actually executing the completion.

func NewSelectModelHandler

func NewSelectModelHandler(
	cfg *config.Config,
	requestSvc *select_model.RequestService,
	selectModelSvc *select_model.Service,
	responseSvc *select_model.ResponseService,
	circuitBreakers map[string]*circuitbreaker.CircuitBreaker,
) *SelectModelHandler

NewSelectModelHandler initializes the select model handler with injected dependencies.

func (*SelectModelHandler) SelectModel

func (h *SelectModelHandler) SelectModel(c *fiber.Ctx) error

SelectModel handles the model selection HTTP request. It processes a provider-agnostic model selection request and returns the selected model/provider without actually executing the completion.

type StripeHandler

type StripeHandler struct {
	// contains filtered or unexported fields
}

func NewStripeHandler

func NewStripeHandler(stripeService *usage.StripeService) *StripeHandler

func (*StripeHandler) CreateCheckoutSession

func (h *StripeHandler) CreateCheckoutSession(c *fiber.Ctx) error

CreateCheckoutSession creates a Stripe checkout session for purchasing credits

func (*StripeHandler) HandleWebhook

func (h *StripeHandler) HandleWebhook(c *fiber.Ctx) error

HandleWebhook processes Stripe webhook events

type TransactionItem

type TransactionItem struct {
	ID             uint           `json:"id"`
	OrganizationID string         `json:"organization_id"`
	UserID         string         `json:"user_id"`
	Type           string         `json:"type"`
	Amount         float64        `json:"amount"`
	BalanceAfter   float64        `json:"balance_after"`
	Description    string         `json:"description"`
	Metadata       map[string]any `json:"metadata,omitempty"`
	CreatedAt      string         `json:"created_at"`
}

TransactionItem represents a single transaction

type UsageHandler

type UsageHandler struct {
	// contains filtered or unexported fields
}

func NewUsageHandler

func NewUsageHandler(usageService *usage.Service) *UsageHandler

func (*UsageHandler) GetUsageByAPIKey

func (h *UsageHandler) GetUsageByAPIKey(c *fiber.Ctx) error

func (*UsageHandler) GetUsageByPeriod

func (h *UsageHandler) GetUsageByPeriod(c *fiber.Ctx) error

func (*UsageHandler) GetUsageStats

func (h *UsageHandler) GetUsageStats(c *fiber.Ctx) error

func (*UsageHandler) RecordUsage

func (h *UsageHandler) RecordUsage(c *fiber.Ctx) error

func (*UsageHandler) RegisterRoutes

func (h *UsageHandler) RegisterRoutes(app *fiber.App, basePath string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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