pub struct ApiKey {
pub key: String,
pub name: String,
pub permissions: Vec<Permission>,
pub rate_limit_per_minute: Option<u64>,
pub rate_limit_per_hour: Option<u64>,
pub rate_limit_per_day: Option<u64>,
pub total_quota: Option<u64>,
pub bytes_quota: Option<u64>,
pub active: bool,
pub created_at: u64,
pub expires_at: Option<u64>,
pub metadata: HashMap<String, String>,
}Expand description
API key with associated permissions and quotas
Fields§
§key: StringUnique key identifier
name: StringHuman-readable name
permissions: Vec<Permission>Permissions granted to this key
rate_limit_per_minute: Option<u64>Rate limit (requests per minute)
rate_limit_per_hour: Option<u64>Rate limit (requests per hour)
rate_limit_per_day: Option<u64>Rate limit (requests per day)
total_quota: Option<u64>Total quota (maximum total requests)
bytes_quota: Option<u64>Bytes quota (maximum bytes processed)
active: boolWhether the key is active
created_at: u64Creation timestamp (Unix timestamp in seconds)
expires_at: Option<u64>Expiration timestamp (Unix timestamp in seconds, None = never expires)
metadata: HashMap<String, String>Optional metadata
Implementations§
Source§impl ApiKey
impl ApiKey
Sourcepub fn with_permissions(self, permissions: Vec<Permission>) -> Self
pub fn with_permissions(self, permissions: Vec<Permission>) -> Self
Set permissions
Sourcepub fn with_rate_limit_per_minute(self, limit: u64) -> Self
pub fn with_rate_limit_per_minute(self, limit: u64) -> Self
Set rate limit per minute
Sourcepub fn with_rate_limit_per_hour(self, limit: u64) -> Self
pub fn with_rate_limit_per_hour(self, limit: u64) -> Self
Set rate limit per hour
Sourcepub fn with_rate_limit_per_day(self, limit: u64) -> Self
pub fn with_rate_limit_per_day(self, limit: u64) -> Self
Set rate limit per day
Sourcepub fn with_total_quota(self, quota: u64) -> Self
pub fn with_total_quota(self, quota: u64) -> Self
Set total quota
Sourcepub fn with_bytes_quota(self, quota: u64) -> Self
pub fn with_bytes_quota(self, quota: u64) -> Self
Set bytes quota
Sourcepub fn with_expiration(self, expires_at: u64) -> Self
pub fn with_expiration(self, expires_at: u64) -> Self
Set expiration time
Sourcepub fn with_metadata(
self,
key: impl Into<String>,
value: impl Into<String>,
) -> Self
pub fn with_metadata( self, key: impl Into<String>, value: impl Into<String>, ) -> Self
Add metadata
Sourcepub fn has_permission(&self, permission: Permission) -> bool
pub fn has_permission(&self, permission: Permission) -> bool
Check if the key has a specific permission
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Check if the key is expired
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ApiKey
impl<'de> Deserialize<'de> for ApiKey
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ApiKey
impl RefUnwindSafe for ApiKey
impl Send for ApiKey
impl Sync for ApiKey
impl Unpin for ApiKey
impl UnwindSafe for ApiKey
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.