From 81f4256c5e7fe1125ea6f1ca77c30ba2e579bc94 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Mon, 12 Oct 2026 19:00:34 +0100 Subject: [PATCH 1/2] fix: add the passkey auth method and policy for version 0.17.1 --- Cargo.toml | 2 +- README.md | 2 +- src/client.rs | 4 +- src/enums/project_auth_method_id.rs | 3 ++ src/enums/project_policy_id.rs | 3 ++ src/lib.rs | 4 +- src/models/mod.rs | 3 ++ src/models/policy_passkey.rs | 59 +++++++++++++++++++++++++++++ 8 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 src/models/policy_passkey.rs diff --git a/Cargo.toml b/Cargo.toml index 10d0783..bbdf80d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "appwrite" -version = "0.17.0" +version = "0.17.1" edition = "2021" rust-version = "1.83" authors = ["appwrite"] diff --git a/README.md b/README.md index 859c159..d74c740 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -appwrite = "0.17.0" +appwrite = "0.17.1" tokio = { version = "1.48", features = ["full"] } ``` diff --git a/src/client.rs b/src/client.rs index b3fabe6..9fbba5b 100644 --- a/src/client.rs +++ b/src/client.rs @@ -95,7 +95,7 @@ impl Client { headers.insert( "user-agent", format!( - "AppwriteRustSDK/0.17.0 ({}; {})", + "AppwriteRustSDK/0.17.1 ({}; {})", std::env::consts::OS, std::env::consts::ARCH ) @@ -105,7 +105,7 @@ impl Client { headers.insert("x-sdk-name", "Rust".parse().unwrap()); headers.insert("x-sdk-platform", "server".parse().unwrap()); headers.insert("x-sdk-language", "rust".parse().unwrap()); - headers.insert("x-sdk-version", "0.17.0".parse().unwrap()); + headers.insert("x-sdk-version", "0.17.1".parse().unwrap()); let config = Config { endpoint: "https://cloud.appwrite.io/v1".to_string(), diff --git a/src/enums/project_auth_method_id.rs b/src/enums/project_auth_method_id.rs index e5d2b90..5c6584a 100644 --- a/src/enums/project_auth_method_id.rs +++ b/src/enums/project_auth_method_id.rs @@ -17,6 +17,8 @@ pub enum ProjectAuthMethodId { Jwt, #[serde(rename = "phone")] Phone, + #[serde(rename = "passkey")] + Passkey, } impl ProjectAuthMethodId { @@ -30,6 +32,7 @@ impl ProjectAuthMethodId { ProjectAuthMethodId::Invites => "invites", ProjectAuthMethodId::Jwt => "jwt", ProjectAuthMethodId::Phone => "phone", + ProjectAuthMethodId::Passkey => "passkey", } } } diff --git a/src/enums/project_policy_id.rs b/src/enums/project_policy_id.rs index fa47a38..04b819e 100644 --- a/src/enums/project_policy_id.rs +++ b/src/enums/project_policy_id.rs @@ -33,6 +33,8 @@ pub enum ProjectPolicyId { DenyFreeEmail, #[serde(rename = "deny-corporate-email")] DenyCorporateEmail, + #[serde(rename = "passkey")] + Passkey, } impl ProjectPolicyId { @@ -54,6 +56,7 @@ impl ProjectPolicyId { ProjectPolicyId::DenyDisposableEmail => "deny-disposable-email", ProjectPolicyId::DenyFreeEmail => "deny-free-email", ProjectPolicyId::DenyCorporateEmail => "deny-corporate-email", + ProjectPolicyId::Passkey => "passkey", } } } diff --git a/src/lib.rs b/src/lib.rs index cd01ed8..71a93cb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,7 @@ //! //! ```toml //! [dependencies] -//! appwrite = "0.17.0" +//! appwrite = "0.17.1" //! ``` //! //! ## Usage @@ -51,7 +51,7 @@ pub use input_file::InputFile; pub type Result = std::result::Result; /// SDK version -pub const VERSION: &str = "0.17.0"; +pub const VERSION: &str = "0.17.1"; /// SDK name pub const SDK_NAME: &str = "Rust"; diff --git a/src/models/mod.rs b/src/models/mod.rs index 4e6ae90..2a0de42 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -382,6 +382,8 @@ pub mod policy_membership_privacy; pub use policy_membership_privacy::PolicyMembershipPrivacy; pub mod policy_mfa_factors; pub use policy_mfa_factors::PolicyMfaFactors; +pub mod policy_passkey; +pub use policy_passkey::PolicyPasskey; pub mod platform_web; pub use platform_web::PlatformWeb; pub mod platform_apple; @@ -807,6 +809,7 @@ impl Model for PolicySessionLimit {} impl Model for PolicyUserLimit {} impl Model for PolicyMembershipPrivacy {} impl Model for PolicyMfaFactors {} +impl Model for PolicyPasskey {} impl Model for PlatformWeb {} impl Model for PlatformApple {} impl Model for PlatformAndroid {} diff --git a/src/models/policy_passkey.rs b/src/models/policy_passkey.rs new file mode 100644 index 0000000..3306d5e --- /dev/null +++ b/src/models/policy_passkey.rs @@ -0,0 +1,59 @@ +//! PolicyPasskey model for Appwrite SDK + +use serde::{Deserialize, Serialize}; + +/// Policy Passkey +#[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(test, derive(Default))] +pub struct PolicyPasskey { + /// Policy ID. + #[serde(rename = "$id")] + pub id: String, + /// Relying party ID passkeys are bound to. Empty until configured. + #[serde(rename = "rpId")] + pub rp_id: String, + /// Web origins passkeys work on, from the project's platforms on the relying + /// party ID and a localhost web platform. Read-only. + #[serde(rename = "origins")] + pub origins: Vec, +} + +impl PolicyPasskey { + /// Get id + pub fn id(&self) -> &String { + &self.id + } + + /// Get rp_id + pub fn rp_id(&self) -> &String { + &self.rp_id + } + + /// Get origins + pub fn origins(&self) -> &Vec { + &self.origins + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_policy_passkey_creation() { + let _model = ::default(); + let _ = _model.id(); + let _ = _model.rp_id(); + let _ = _model.origins(); + } + + #[test] + fn test_policy_passkey_serialization() { + let model = ::default(); + let json = serde_json::to_string(&model); + assert!(json.is_ok()); + + let deserialized: Result = serde_json::from_str(&json.unwrap()); + assert!(deserialized.is_ok()); + } +} From c7e1c53892fb204401d0b1ef9aa60be29e56f2a4 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Mon, 12 Oct 2026 19:43:15 +0100 Subject: [PATCH 2/2] fix: release as 0.18.0, since new enum variants break exhaustive matches --- Cargo.toml | 2 +- README.md | 2 +- src/client.rs | 4 ++-- src/lib.rs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bbdf80d..824f1fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "appwrite" -version = "0.17.1" +version = "0.18.0" edition = "2021" rust-version = "1.83" authors = ["appwrite"] diff --git a/README.md b/README.md index d74c740..1fa162f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -appwrite = "0.17.1" +appwrite = "0.18.0" tokio = { version = "1.48", features = ["full"] } ``` diff --git a/src/client.rs b/src/client.rs index 9fbba5b..14e1ca1 100644 --- a/src/client.rs +++ b/src/client.rs @@ -95,7 +95,7 @@ impl Client { headers.insert( "user-agent", format!( - "AppwriteRustSDK/0.17.1 ({}; {})", + "AppwriteRustSDK/0.18.0 ({}; {})", std::env::consts::OS, std::env::consts::ARCH ) @@ -105,7 +105,7 @@ impl Client { headers.insert("x-sdk-name", "Rust".parse().unwrap()); headers.insert("x-sdk-platform", "server".parse().unwrap()); headers.insert("x-sdk-language", "rust".parse().unwrap()); - headers.insert("x-sdk-version", "0.17.1".parse().unwrap()); + headers.insert("x-sdk-version", "0.18.0".parse().unwrap()); let config = Config { endpoint: "https://cloud.appwrite.io/v1".to_string(), diff --git a/src/lib.rs b/src/lib.rs index 71a93cb..c28f974 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,7 @@ //! //! ```toml //! [dependencies] -//! appwrite = "0.17.1" +//! appwrite = "0.18.0" //! ``` //! //! ## Usage @@ -51,7 +51,7 @@ pub use input_file::InputFile; pub type Result = std::result::Result; /// SDK version -pub const VERSION: &str = "0.17.1"; +pub const VERSION: &str = "0.18.0"; /// SDK name pub const SDK_NAME: &str = "Rust";