created_at2022-03-13 17:14:23.119154
updated_at2024-04-11 14:50:11.206349
descriptionStytch Rust client



# Stytch Rust Library The Stytch Rust library makes it easy to use the Stytch user infrastructure API in server-side Rust applications. It pairs well with the Stytch [Web SDK]( or your own custom authentication flow. The minimum supported Rust version (MSRV) of this library is Rust 1.70. ## Install Use `cargo add stytch` to add this to your `Cargo.toml`: ```toml stytch = "2.0.0" ``` ## Usage You can find your API credentials in the [Stytch Dashboard]( This client library supports all of Stytch's live products: **B2C** - [x] [Email Magic Links]( - [x] [Embeddable Magic Links]( - [x] [OAuth logins]( - [x] [SMS passcodes]( - [x] [WhatsApp passcodes]( - [x] [Email passcodes]( - [x] [Session Management]( - [x] [WebAuthn]( - [x] [User Management]( - [x] [Time-based one-time passcodes (TOTPs)]( - [x] [Crypto wallets]( - [x] [Passwords]( **B2B** - [x] [Organizations]( - [x] [Members]( - [x] [Email Magic Links]( - [x] [OAuth logins]( - [x] [Session Management]( - [x] [Single-Sign On]( - [x] [Discovery]( - [x] [Passwords]( **Shared** - [x] [M2M]( ### Example B2C usage Create an API client: ```rust let client = stytch::consumer::client::Client::new( String::from("project-live-c60c0abe-c25a-4472-a9ed-320c6667d317"), String::from("secret-live-80JASucyk7z_G8Z-7dVwZVGXL5NT_qGAQ2I="), )?; ``` Send a magic link by email: ```rust use stytch::consumer::magic_links_email::LoginOrCreateRequest; let resp ={ email: String::from(""), login_magic_link_url: Some(String::from("")), signup_magic_link_url: Some(String::from("")), ..Default::default() }).await?; ``` Authenticate the token from the magic link: ```rust use stytch::consumer::magic_links::AuthenticateRequest; let resp = client.magic_links.authenticate(AuthenticateRequest { token: String::from("DOYoip3rvIMMW5lgItikFK-Ak1CfMsgjuiCyI7uuU94="), ..Default::default() }) .await?; ``` ### Example B2B usage Create an API client: ```rust let client = stytch::b2b::client::Client::new( project_id: "project-live-c60c0abe-c25a-4472-a9ed-320c6667d317", secret: "secret-live-80JASucyk7z_G8Z-7dVwZVGXL5NT_qGAQ2I=", )?; ``` Create an organization ```rust use stytch::b2b::organizations::CreateRequest; let resp = client.organizations.create(CreateRequest{ organization_name: String::from("Acme Co"), organization_slug: Some(String::from("acme-co")), email_allowed_domains: Some(vec![String::from("")]), ..Default::default() }) .await?; ``` Log the first user into the organization ```rust use stytch::b2b::magic_links_email::LoginOrSignupRequest; let resp ={ organization_id: String::from("organization-id-from-create-response-..."), email_address: String::from(""), ..Default::default() }) .await?; ``` ## Handling Errors The error type for all `Result` values is `stytch::Error`. If the error is from the Stytch API, this will be the `stytch::Error::Response` variant, which always includes an `error_type` field you can use to identify it: ```rust let resp = client.magic_links.authenticate(AuthenticateRequest{ token: String::from("not-a-token!"), ..Default::default() }) .await; match resp { Err(stytch::Error::Response(err)) => { if &err.error_type == "invalid_token" { println!("Whoops! Try again?"); } else { println!("Unexpected error type: {}", err.error_type); } } Err(err) => println!("Other error: {:?}", err), Ok(resp) => println!("Unexpected success: {:?}", resp), } ``` Learn more about errors in the [docs]( ## Cargo Features - `reqwest-rustls-tls`: Enable reqwest's `rustls-tls` feature for the rustls implementation. - `reqwest-native-tls`: Enable reqwest's `native-tls` feature for the native TLS implementation. (This is enabled by default.) ## Documentation See example requests and responses for all the endpoints in the [Stytch API Reference]( Follow one of the [integration guides]( or start with one of our [example apps]( ## Support If you've found a bug, [open an issue](! If you have questions or want help troubleshooting, join us in [Slack]( or email If you've found a security vulnerability, please follow our [responsible disclosure instructions]( ## Development See []( ## Code of Conduct Everyone interacting in the Stytch project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct]( ## Acknowledgements Special thanks to @itsyaasir for donating the `stytch` package name to this project and starting us on our Rust journey!
Commit count: 39

cargo fmt