Versions in this module Expand all Collapse all v0 v0.3.0 Mar 15, 2026 Changes in this version + var EnterprisePolicy = &RateLimitPolicy + var ErrBindingNotFound = errors.New("client binding not found") + var ErrPolicyExists = errors.New("policy already exists") + var ErrPolicyNotFound = errors.New("policy not found") + var FreePolicy = &RateLimitPolicy + var InternalPolicy = &RateLimitPolicy + var PremiumPolicy = &RateLimitPolicy + var StandardPolicy = &RateLimitPolicy + var UnlimitedPolicy = &RateLimitPolicy + type ClientPolicyBinding struct + ClientID string + CreatedAt time.Time + Enabled bool + PolicyID string + type MemoryPolicyStore struct + func NewMemoryPolicyStore() *MemoryPolicyStore + func NewMemoryPolicyStoreWithPolicies(policies []*RateLimitPolicy, defaultPolicyID string) *MemoryPolicyStore + func (s *MemoryPolicyStore) BindClientToPolicy(ctx context.Context, clientID, policyID string) error + func (s *MemoryPolicyStore) CreatePolicy(ctx context.Context, policy *RateLimitPolicy) error + func (s *MemoryPolicyStore) DeletePolicy(ctx context.Context, policyID string) error + func (s *MemoryPolicyStore) GetDefaultPolicy(ctx context.Context) (*RateLimitPolicy, error) + func (s *MemoryPolicyStore) GetPolicy(ctx context.Context, policyID string) (*RateLimitPolicy, error) + func (s *MemoryPolicyStore) GetPolicyForClient(ctx context.Context, clientID string) (*RateLimitPolicy, error) + func (s *MemoryPolicyStore) ListClientBindings(ctx context.Context) ([]*ClientPolicyBinding, error) + func (s *MemoryPolicyStore) ListClientsForPolicy(ctx context.Context, policyID string) ([]string, error) + func (s *MemoryPolicyStore) ListPolicies(ctx context.Context) ([]*RateLimitPolicy, error) + func (s *MemoryPolicyStore) SetDefaultPolicy(ctx context.Context, policyID string) error + func (s *MemoryPolicyStore) UnbindClient(ctx context.Context, clientID string) error + func (s *MemoryPolicyStore) UpdatePolicy(ctx context.Context, policy *RateLimitPolicy) error + type PolicyStore interface + BindClientToPolicy func(ctx context.Context, clientID, policyID string) error + CreatePolicy func(ctx context.Context, policy *RateLimitPolicy) error + DeletePolicy func(ctx context.Context, policyID string) error + GetDefaultPolicy func(ctx context.Context) (*RateLimitPolicy, error) + GetPolicy func(ctx context.Context, policyID string) (*RateLimitPolicy, error) + GetPolicyForClient func(ctx context.Context, clientID string) (*RateLimitPolicy, error) + ListClientBindings func(ctx context.Context) ([]*ClientPolicyBinding, error) + ListClientsForPolicy func(ctx context.Context, policyID string) ([]string, error) + ListPolicies func(ctx context.Context) ([]*RateLimitPolicy, error) + SetDefaultPolicy func(ctx context.Context, policyID string) error + UnbindClient func(ctx context.Context, clientID string) error + UpdatePolicy func(ctx context.Context, policy *RateLimitPolicy) error + type RateLimitPolicy struct + CreatedAt time.Time + Description string + Enabled bool + EndpointOverrides map[string]RateLimits + ID string + Limits RateLimits + Metadata map[string]string + Name string + Priority int + UpdatedAt time.Time + func DefaultPolicies() []*RateLimitPolicy + func (p *RateLimitPolicy) WithEndpointOverride(pathPrefix string, limits RateLimits) *RateLimitPolicy + type RateLimits struct + BurstSize int + PerDay int + PerHour int + PerMinute int + PerSecond int + func (r RateLimits) IsUnlimited() bool + func (r RateLimits) MostGranularLimit() (rate int, period time.Duration, burst int) + type UsageRecord struct + ClientID string + Endpoint string + Period time.Time + PeriodType string + PrincipalID string + RateLimitedCount int64 + RequestCount int64 + type UsageStore interface + GetUsage func(ctx context.Context, clientID string, from, to time.Time) ([]*UsageRecord, error) + GetUsageSummary func(ctx context.Context, clientID string, periodType string, from, to time.Time) (*UsageSummary, error) + RecordRequest func(ctx context.Context, clientID, principalID, endpoint string, rateLimited bool) error + type UsageSummary struct + ClientID string + PeriodEnd time.Time + PeriodStart time.Time + RateLimitedCount int64 + TotalRequests int64 + UniqueEndpoints int + UniquePrincipals int