luarmor/models/v3/keys/
stats.rs1use api_builder::{Endpoint, api_endpoint};
2use serde::Deserialize;
3use time::OffsetDateTime;
4use typed_builder::TypedBuilder;
5
6#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, TypedBuilder)]
24#[builder(field_defaults(setter(into)))]
25pub struct ApiKeyStats<'a> {
26 pub api_key: &'a str,
27
28 #[builder(default = false)]
30 pub no_users: bool,
31}
32#[api_endpoint(method = GET, path = format!("/v3/keys/{}/stats?noUsers={}", self.api_key, self.no_users))]
33impl Endpoint for ApiKeyStats<'_> {}
34
35#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize)]
36pub struct ExecutionData {
37 pub frequency: u32,
38 pub executions: Vec<u32>,
39}
40
41#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize)]
42pub struct ScriptDefaultStats {
43 pub scripts: u8,
44 pub users: u32,
45 pub obfuscations: u32,
46}
47
48#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
49pub struct ScriptStats {
50 pub obfuscations: u32,
51 pub scripts: u8,
52 pub users: u32,
53 pub attacks_blocked: u32,
54 pub default: ScriptDefaultStats,
55 #[serde(with = "time::serde::timestamp")]
56 pub reset_at: OffsetDateTime,
57}
58
59#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
60pub struct ScriptStatsNoUsers {
61 pub obfuscations: u32,
62 pub scripts: u8,
63 pub attacks_blocked: u32,
64 pub default: ScriptDefaultStats,
65 #[serde(with = "time::serde::timestamp")]
66 pub reset_at: OffsetDateTime,
67}
68
69#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
71pub struct ApiKeyStatsResponse {
72 pub execution_data: ExecutionData,
73 pub stats: ScriptStats,
74}
75
76#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Deserialize)]
78pub struct ApiKeyStatsNoUsersResponse {
79 pub execution_data: ExecutionData,
80 pub stats: ScriptStatsNoUsers,
81}