pub struct UsageSnapshot {Show 14 fields
pub schema_version: u32,
pub provider: String,
pub account: String,
pub observed_at: u64,
pub plan: Option<String>,
pub limit_reached: Option<bool>,
pub spend_control_reached: Option<bool>,
pub windows: Vec<UsageWindow>,
pub model_availability: Vec<ModelAvailability>,
pub credits: Option<CreditBalance>,
pub banked_resets: Option<BankedResets>,
pub identity_prefix: Option<String>,
pub seat_fingerprint: Option<String>,
pub notes: Vec<String>,
}Expand description
Normalized, secret-free usage observation for one (provider, account).
Fields§
§schema_version: u32§provider: StringCanonical OAuth provider id (anthropic, openai-codex, kimi-code, xai-auth).
account: Stringdefault or the account label.
observed_at: u64Epoch ms when the body was received; authoritative for staleness.
plan: Option<String>§limit_reached: Option<bool>Provider-asserted overall exhaustion flag (Codex rate_limit.limit_reached).
spend_control_reached: Option<bool>Workspace/account spend control tripped (Codex spend_control.reached).
Some(true) blocks subscribed availability exactly like limit_reached.
windows: Vec<UsageWindow>§model_availability: Vec<ModelAvailability>§credits: Option<CreditBalance>§banked_resets: Option<BankedResets>§identity_prefix: Option<String>First 8 chars of a provider account id when the response carries one.
seat_fingerprint: Option<String>Opaque full seat identity paired with the bearer used for this reading. Currently supplied by the Codex adapter; absent on older brokers.
notes: Vec<String>Fixed-vocabulary parse notes (never raw keys or values).
Implementations§
Source§impl UsageSnapshot
impl UsageSnapshot
Sourcepub fn is_stale(&self, now_ms: u64, max_age_ms: u64) -> bool
pub fn is_stale(&self, now_ms: u64, max_age_ms: u64) -> bool
Observation older than max_age_ms (or from the future) is stale.
Stale readings are never capacity.
pub fn window(&self, id: &str) -> Option<&UsageWindow>
pub fn account_windows(&self) -> impl Iterator<Item = &UsageWindow>
Sourcepub fn longest_account_window(&self) -> Option<&UsageWindow>
pub fn longest_account_window(&self) -> Option<&UsageWindow>
The account window with the longest known duration (e.g. weekly). Windows with unknown duration sort last.
Sourcepub fn has_proven_capacity(&self, now_ms: u64, max_age_ms: u64) -> bool
pub fn has_proven_capacity(&self, now_ms: u64, max_age_ms: u64) -> bool
Fresh, provider did not flag exhaustion or a tripped spend control, at least one account window, and every account window has a valid percent below 100.
Sourcepub fn model_availability_for(&self, model: &str) -> Option<&ModelAvailability>
pub fn model_availability_for(&self, model: &str) -> Option<&ModelAvailability>
Availability entry for a requested model id, if the provider reported one.
Sourcepub fn has_proven_capacity_for_model(
&self,
model: &str,
now_ms: u64,
max_age_ms: u64,
) -> bool
pub fn has_proven_capacity_for_model( &self, model: &str, now_ms: u64, max_age_ms: u64, ) -> bool
Model-aware capacity: account capacity AND, when the provider reported
anything about this model, that entry must be Available. A gated
model (model_usage.available == false, Astra-style) or an exhausted
model window rejects even when the generic quota is nearly unused.
Models the provider did not mention fall back to account capacity.
Sourcepub fn earliest_reset_at(&self) -> Option<u64>
pub fn earliest_reset_at(&self) -> Option<u64>
Earliest reset across all windows and model availability entries.