Help us shape the future of Go! Take the 2026 Go Developer Survey

usage

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 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"`
	SigningKeyID     string            `json:"signing_key_id,omitempty"`
	SignerKeyID      string            `json:"signer_key_id,omitempty"`
	AuthMethod       string            `json:"auth_method,omitempty"`
	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"`
	SigningKeyID     string            `json:"signing_key_id,omitempty"`
	SignerKeyID      string            `json:"signer_key_id,omitempty"`
	AuthMethod       string            `json:"auth_method,omitempty"`
	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