usage

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClassifyProviderHealth

func ClassifyProviderHealth(requests, errors int64, errorRate float64) string

ClassifyProviderHealth maps request/error stats to a status label.

func NormalizeModality

func NormalizeModality(m string) string

NormalizeModality defaults empty modality to chat.

Types

type Event

type Event struct {
	OrganizationID   string            `json:"organization_id"`
	ProjectID        string            `json:"project_id"`
	TeamID           string            `json:"team_id,omitempty"`
	EnvironmentID    string            `json:"environment_id,omitempty"`
	APIKeyID         string            `json:"api_key_id"`
	CredentialID     string            `json:"credential_id,omitempty"`
	UsedBYOK         bool              `json:"used_byok"`
	Model            string            `json:"model"`
	ProviderType     string            `json:"provider_type"`
	TargetModel      string            `json:"target_model"`
	Status           string            `json:"status"`
	LatencyMs        int64             `json:"latency_ms"`
	PromptTokens     int64             `json:"prompt_tokens"`
	CompletionTokens int64             `json:"completion_tokens"`
	Modality         string            `json:"modality"`
	Metrics          map[string]any    `json:"metrics,omitempty"`
	Tags             map[string]string `json:"tags,omitempty"`
}

Event is the canonical usage record emitted by the gateway and drained by workers. Control-plane list/summary responses may enrich this with IDs, cost, and join fields.

func (*Event) MarkBYOK

func (e *Event) MarkBYOK()

MarkBYOK sets UsedBYOK from whether a stored credential was used (vs platform api_key_env).

type Filter

type Filter struct {
	Limit        int
	ProjectID    string
	APIKeyID     string
	CredentialID string
	Model        string
	Modality     string
	ExcludeBYOK  bool // when true, only rows where used_byok=false
	BYOKOnly     bool // when true, only rows where used_byok=true
	From         *time.Time
	To           *time.Time
	GroupBy      string // day | model | key | modality | byok (summary only)
}

Filter constrains usage list and summary queries.

type Modality

type Modality string

Modality identifies the request surface that produced usage.

const (
	ModalityChat            Modality = "chat"
	ModalityMessages        Modality = "messages"
	ModalityGenerateContent Modality = "generate_content"
	ModalityTTS             Modality = "tts"
	ModalitySTT             Modality = "stt"
	ModalityEmbedding       Modality = "embedding"
	ModalityImage           Modality = "image"
	ModalityMCP             Modality = "mcp"
	ModalityA2A             Modality = "a2a"
)

func (Modality) String

func (m Modality) String() string

type ModelPrice

type ModelPrice struct {
	ProviderType  string
	Model         string
	InputPerMTok  float64
	OutputPerMTok float64
}

ModelPrice is a pricing row used for cost estimation.

type ProviderHealth

type ProviderHealth struct {
	ProviderID   string  `json:"provider_id"`
	Name         string  `json:"name"`
	Type         string  `json:"type"`
	Requests     int64   `json:"requests"`
	Errors       int64   `json:"errors"`
	ErrorRate    float64 `json:"error_rate"`
	AvgLatencyMs float64 `json:"avg_latency_ms"`
	Status       string  `json:"status"` // healthy | degraded | down | unknown
}

ProviderHealth aggregates request outcomes for a provider.

type Record

type Record struct {
	ID               int64             `json:"id"`
	OrganizationID   string            `json:"organization_id"`
	ProjectID        string            `json:"project_id"`
	ProjectName      string            `json:"project_name,omitempty"`
	APIKeyID         string            `json:"api_key_id"`
	CredentialID     string            `json:"credential_id,omitempty"`
	CredentialName   string            `json:"credential_name,omitempty"`
	UsedBYOK         bool              `json:"used_byok"`
	Model            string            `json:"model"`
	ProviderType     string            `json:"provider_type,omitempty"`
	Status           string            `json:"status"`
	LatencyMs        int64             `json:"latency_ms"`
	PromptTokens     int64             `json:"prompt_tokens"`
	CompletionTokens int64             `json:"completion_tokens"`
	Modality         string            `json:"modality"`
	Metrics          map[string]any    `json:"metrics"`
	Tags             map[string]string `json:"tags,omitempty"`
	CostUSD          *float64          `json:"cost_usd,omitempty"`
	CreatedAt        time.Time         `json:"created_at"`
	KeyName          string            `json:"key_name,omitempty"`
	KeyKind          string            `json:"key_kind,omitempty"`
	OwnerUserID      string            `json:"owner_user_id,omitempty"`
	OwnerEmail       string            `json:"owner_email,omitempty"`
	OwnerName        string            `json:"owner_name,omitempty"`
}

Record is a persisted usage row enriched for control-plane list APIs.

type SummaryBucket

type SummaryBucket struct {
	Bucket           string             `json:"bucket"`
	Label            string             `json:"label"`
	Requests         int64              `json:"requests"`
	CostUSD          float64            `json:"cost_usd"`
	PromptTokens     int64              `json:"prompt_tokens"`
	CompletionTokens int64              `json:"completion_tokens"`
	MetricsTotals    map[string]float64 `json:"metrics_totals,omitempty"`
	KeyKind          string             `json:"key_kind,omitempty"`
	OwnerEmail       string             `json:"owner_email,omitempty"`
	OwnerName        string             `json:"owner_name,omitempty"`
}

SummaryBucket is one row of a usage summary aggregation.

Jump to

Keyboard shortcuts

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