diff --git a/Cargo.lock b/Cargo.lock index 8de9478463..07cbcc00ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,6 +219,7 @@ name = "authentik-client" version = "2026.8.0-rc1" dependencies = [ "aws-lc-rs", + "chrono", "reqwest", "reqwest-middleware", "rustls", @@ -567,13 +568,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", + "js-sys", "num-traits", "serde", + "wasm-bindgen", "windows-link", ] diff --git a/Cargo.toml b/Cargo.toml index e06b178f10..ba9ead158e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ aws-lc-rs = { version = "= 1.17.0", features = ["fips"] } axum = { version = "= 0.8.9", features = ["http2", "macros", "ws"] } clap = { version = "= 4.6.1", features = ["derive", "env"] } client-ip = { version = "0.2.1", features = ["forwarded-header"] } +chrono = { version = "0.4.45", features = ["serde"] } color-eyre = "= 0.6.5" colored = "= 3.1.1" config-rs = { package = "config", version = "= 0.15.22", default-features = false, features = [ diff --git a/packages/client-rust/Cargo.toml b/packages/client-rust/Cargo.toml index 7fb8527bed..c31f2012fd 100644 --- a/packages/client-rust/Cargo.toml +++ b/packages/client-rust/Cargo.toml @@ -12,6 +12,7 @@ publish = false [dependencies] aws-lc-rs.workspace = true +chrono.workspace = true serde.workspace = true serde_with.workspace = true serde_json.workspace = true diff --git a/packages/client-rust/compose.yml b/packages/client-rust/compose.yml index c155090cd5..9364f89ee3 100644 --- a/packages/client-rust/compose.yml +++ b/packages/client-rust/compose.yml @@ -1,7 +1,7 @@ --- services: gen: - image: docker.io/openapitools/openapi-generator-cli:v7.20.0 + image: docker.io/openapitools/openapi-generator-cli:v7.23.0 restart: never network_mode: none volumes: diff --git a/packages/client-rust/src/apis/core_api.rs b/packages/client-rust/src/apis/core_api.rs index b87e2f4962..b2669c68d3 100644 --- a/packages/client-rust/src/apis/core_api.rs +++ b/packages/client-rust/src/apis/core_api.rs @@ -385,9 +385,9 @@ pub async fn core_groups_list( pub async fn core_users_list( configuration: &configuration::Configuration, attributes: Option<&str>, - date_joined: Option, - date_joined__gt: Option, - date_joined__lt: Option, + date_joined: Option>, + date_joined__gt: Option>, + date_joined__lt: Option>, email: Option<&str>, groups_by_name: Option>, groups_by_pk: Option>, @@ -395,13 +395,13 @@ pub async fn core_users_list( include_roles: Option, is_active: Option, is_superuser: Option, - last_login: Option, - last_login__gt: Option, + last_login: Option>, + last_login__gt: Option>, last_login__isnull: Option, - last_login__lt: Option, - last_updated: Option, - last_updated__gt: Option, - last_updated__lt: Option, + last_login__lt: Option>, + last_updated: Option>, + last_updated__gt: Option>, + last_updated__lt: Option>, name: Option<&str>, ordering: Option<&str>, page: Option, diff --git a/packages/client-rust/src/models/certificate_key_pair.rs b/packages/client-rust/src/models/certificate_key_pair.rs index 909ac31dc6..36a7c3eef8 100644 --- a/packages/client-rust/src/models/certificate_key_pair.rs +++ b/packages/client-rust/src/models/certificate_key_pair.rs @@ -28,7 +28,7 @@ pub struct CertificateKeyPair { pub fingerprint_sha1: Option, /// Certificate expiry date #[serde(rename = "cert_expiry", deserialize_with = "Option::deserialize")] - pub cert_expiry: Option, + pub cert_expiry: Option>, /// Certificate subject as RFC4514 string #[serde(rename = "cert_subject", deserialize_with = "Option::deserialize")] pub cert_subject: Option, @@ -58,7 +58,7 @@ impl CertificateKeyPair { name: String, fingerprint_sha256: Option, fingerprint_sha1: Option, - cert_expiry: Option, + cert_expiry: Option>, cert_subject: Option, private_key_available: bool, key_type: Option, diff --git a/packages/client-rust/src/models/device_challenge.rs b/packages/client-rust/src/models/device_challenge.rs index 80a2fba48c..8ef4dc8f9a 100644 --- a/packages/client-rust/src/models/device_challenge.rs +++ b/packages/client-rust/src/models/device_challenge.rs @@ -20,7 +20,7 @@ pub struct DeviceChallenge { #[serde(rename = "challenge")] pub challenge: std::collections::HashMap, #[serde(rename = "last_used", deserialize_with = "Option::deserialize")] - pub last_used: Option, + pub last_used: Option>, } impl DeviceChallenge { @@ -29,7 +29,7 @@ impl DeviceChallenge { device_class: models::DeviceClassesEnum, device_uid: String, challenge: std::collections::HashMap, - last_used: Option, + last_used: Option>, ) -> DeviceChallenge { DeviceChallenge { device_class, diff --git a/packages/client-rust/src/models/device_challenge_request.rs b/packages/client-rust/src/models/device_challenge_request.rs index ea565caf81..ccec019694 100644 --- a/packages/client-rust/src/models/device_challenge_request.rs +++ b/packages/client-rust/src/models/device_challenge_request.rs @@ -20,7 +20,7 @@ pub struct DeviceChallengeRequest { #[serde(rename = "challenge")] pub challenge: std::collections::HashMap, #[serde(rename = "last_used", deserialize_with = "Option::deserialize")] - pub last_used: Option, + pub last_used: Option>, } impl DeviceChallengeRequest { @@ -29,7 +29,7 @@ impl DeviceChallengeRequest { device_class: models::DeviceClassesEnum, device_uid: String, challenge: std::collections::HashMap, - last_used: Option, + last_used: Option>, ) -> DeviceChallengeRequest { DeviceChallengeRequest { device_class, diff --git a/packages/client-rust/src/models/event.rs b/packages/client-rust/src/models/event.rs index 9940524622..d093d1630b 100644 --- a/packages/client-rust/src/models/event.rs +++ b/packages/client-rust/src/models/event.rs @@ -31,9 +31,9 @@ pub struct Event { )] pub client_ip: Option>, #[serde(rename = "created")] - pub created: String, + pub created: chrono::DateTime, #[serde(rename = "expires", skip_serializing_if = "Option::is_none")] - pub expires: Option, + pub expires: Option>, #[serde(rename = "brand", skip_serializing_if = "Option::is_none")] pub brand: Option>, } @@ -44,7 +44,7 @@ impl Event { pk: uuid::Uuid, action: models::EventActions, app: String, - created: String, + created: chrono::DateTime, ) -> Event { Event { pk, diff --git a/packages/client-rust/src/models/event_request.rs b/packages/client-rust/src/models/event_request.rs index 452780a5cc..cec17a50e2 100644 --- a/packages/client-rust/src/models/event_request.rs +++ b/packages/client-rust/src/models/event_request.rs @@ -29,7 +29,7 @@ pub struct EventRequest { )] pub client_ip: Option>, #[serde(rename = "expires", skip_serializing_if = "Option::is_none")] - pub expires: Option, + pub expires: Option>, #[serde(rename = "brand", skip_serializing_if = "Option::is_none")] pub brand: Option>, } diff --git a/packages/client-rust/src/models/log_event.rs b/packages/client-rust/src/models/log_event.rs index c43f23ffac..7aff3fb7a4 100644 --- a/packages/client-rust/src/models/log_event.rs +++ b/packages/client-rust/src/models/log_event.rs @@ -14,7 +14,7 @@ use crate::models; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct LogEvent { #[serde(rename = "timestamp")] - pub timestamp: String, + pub timestamp: chrono::DateTime, #[serde(rename = "log_level")] pub log_level: models::LogLevelEnum, #[serde(rename = "logger")] @@ -28,7 +28,7 @@ pub struct LogEvent { impl LogEvent { /// Single log message with all context logged. pub fn new( - timestamp: String, + timestamp: chrono::DateTime, log_level: models::LogLevelEnum, logger: String, event: String, diff --git a/packages/client-rust/src/models/partial_user.rs b/packages/client-rust/src/models/partial_user.rs index 266594f0ec..3127edd33f 100644 --- a/packages/client-rust/src/models/partial_user.rs +++ b/packages/client-rust/src/models/partial_user.rs @@ -31,7 +31,7 @@ pub struct PartialUser { with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none" )] - pub last_login: Option>, + pub last_login: Option>>, #[serde(rename = "email", skip_serializing_if = "Option::is_none")] pub email: Option, #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] diff --git a/packages/client-rust/src/models/user.rs b/packages/client-rust/src/models/user.rs index 700365a266..cd9daa99aa 100644 --- a/packages/client-rust/src/models/user.rs +++ b/packages/client-rust/src/models/user.rs @@ -30,9 +30,9 @@ pub struct User { with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none" )] - pub last_login: Option>, + pub last_login: Option>>, #[serde(rename = "date_joined")] - pub date_joined: String, + pub date_joined: chrono::DateTime, #[serde(rename = "is_superuser")] pub is_superuser: bool, #[serde(rename = "groups", skip_serializing_if = "Option::is_none")] @@ -59,9 +59,9 @@ pub struct User { #[serde(rename = "uuid")] pub uuid: uuid::Uuid, #[serde(rename = "password_change_date")] - pub password_change_date: String, + pub password_change_date: chrono::DateTime, #[serde(rename = "last_updated")] - pub last_updated: String, + pub last_updated: chrono::DateTime, } impl User { @@ -70,15 +70,15 @@ impl User { pk: i32, username: String, name: String, - date_joined: String, + date_joined: chrono::DateTime, is_superuser: bool, groups_obj: Option>, roles_obj: Option>, avatar: String, uid: String, uuid: uuid::Uuid, - password_change_date: String, - last_updated: String, + password_change_date: chrono::DateTime, + last_updated: chrono::DateTime, ) -> User { User { pk,