workos 1.0.0

Official Rust SDK for the WorkOS API
Documentation
// Code generated by oagen. DO NOT EDIT.

use serde::{Deserialize, Serialize};
use std::fmt;
use std::str::FromStr;

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum UpdateWebhookEndpointEvents {
    AuthenticationEmailVerificationSucceeded,
    AuthenticationMagicAuthFailed,
    AuthenticationMagicAuthSucceeded,
    AuthenticationMfaSucceeded,
    AuthenticationOAuthFailed,
    AuthenticationOAuthSucceeded,
    AuthenticationPasswordFailed,
    AuthenticationPasswordSucceeded,
    AuthenticationPasskeyFailed,
    AuthenticationPasskeySucceeded,
    AuthenticationSSOFailed,
    AuthenticationSSOStarted,
    AuthenticationSSOSucceeded,
    AuthenticationSSOTimedOut,
    AuthenticationRadarRiskDetected,
    ApiKeyCreated,
    ApiKeyRevoked,
    ConnectionActivated,
    ConnectionDeactivated,
    ConnectionSAMLCertificateRenewalRequired,
    ConnectionSAMLCertificateRenewed,
    ConnectionDeleted,
    DsyncActivated,
    DsyncDeleted,
    DsyncGroupCreated,
    DsyncGroupDeleted,
    DsyncGroupUpdated,
    DsyncGroupUserAdded,
    DsyncGroupUserRemoved,
    DsyncUserCreated,
    DsyncUserDeleted,
    DsyncUserUpdated,
    EmailVerificationCreated,
    GroupCreated,
    GroupDeleted,
    GroupMemberAdded,
    GroupMemberRemoved,
    GroupUpdated,
    FlagCreated,
    FlagDeleted,
    FlagUpdated,
    FlagRuleUpdated,
    InvitationAccepted,
    InvitationCreated,
    InvitationResent,
    InvitationRevoked,
    MagicAuthCreated,
    OrganizationCreated,
    OrganizationDeleted,
    OrganizationUpdated,
    OrganizationDomainCreated,
    OrganizationDomainDeleted,
    OrganizationDomainUpdated,
    OrganizationDomainVerified,
    OrganizationDomainVerificationFailed,
    PasswordResetCreated,
    PasswordResetSucceeded,
    UserCreated,
    UserUpdated,
    UserDeleted,
    OrganizationMembershipCreated,
    OrganizationMembershipDeleted,
    OrganizationMembershipUpdated,
    RoleCreated,
    RoleDeleted,
    RoleUpdated,
    OrganizationRoleCreated,
    OrganizationRoleDeleted,
    OrganizationRoleUpdated,
    PermissionCreated,
    PermissionDeleted,
    PermissionUpdated,
    SessionCreated,
    SessionRevoked,
    WaitlistUserApproved,
    WaitlistUserCreated,
    WaitlistUserDenied,
    /// Wire value not recognized by this SDK version. The original
    /// string is preserved verbatim. WorkOS may add new enum values
    /// server-side; matching on this variant lets callers handle
    /// forward-compatible values without panicking.
    Unknown(String),
}

impl UpdateWebhookEndpointEvents {
    /// Canonical wire string for this value. For [`Self::Unknown`] returns the
    /// original wire value as received from the API.
    #[allow(deprecated)]
    pub fn as_str(&self) -> &str {
        match self {
            Self::AuthenticationEmailVerificationSucceeded => {
                "authentication.email_verification_succeeded"
            }
            Self::AuthenticationMagicAuthFailed => "authentication.magic_auth_failed",
            Self::AuthenticationMagicAuthSucceeded => "authentication.magic_auth_succeeded",
            Self::AuthenticationMfaSucceeded => "authentication.mfa_succeeded",
            Self::AuthenticationOAuthFailed => "authentication.oauth_failed",
            Self::AuthenticationOAuthSucceeded => "authentication.oauth_succeeded",
            Self::AuthenticationPasswordFailed => "authentication.password_failed",
            Self::AuthenticationPasswordSucceeded => "authentication.password_succeeded",
            Self::AuthenticationPasskeyFailed => "authentication.passkey_failed",
            Self::AuthenticationPasskeySucceeded => "authentication.passkey_succeeded",
            Self::AuthenticationSSOFailed => "authentication.sso_failed",
            Self::AuthenticationSSOStarted => "authentication.sso_started",
            Self::AuthenticationSSOSucceeded => "authentication.sso_succeeded",
            Self::AuthenticationSSOTimedOut => "authentication.sso_timed_out",
            Self::AuthenticationRadarRiskDetected => "authentication.radar_risk_detected",
            Self::ApiKeyCreated => "api_key.created",
            Self::ApiKeyRevoked => "api_key.revoked",
            Self::ConnectionActivated => "connection.activated",
            Self::ConnectionDeactivated => "connection.deactivated",
            Self::ConnectionSAMLCertificateRenewalRequired => {
                "connection.saml_certificate_renewal_required"
            }
            Self::ConnectionSAMLCertificateRenewed => "connection.saml_certificate_renewed",
            Self::ConnectionDeleted => "connection.deleted",
            Self::DsyncActivated => "dsync.activated",
            Self::DsyncDeleted => "dsync.deleted",
            Self::DsyncGroupCreated => "dsync.group.created",
            Self::DsyncGroupDeleted => "dsync.group.deleted",
            Self::DsyncGroupUpdated => "dsync.group.updated",
            Self::DsyncGroupUserAdded => "dsync.group.user_added",
            Self::DsyncGroupUserRemoved => "dsync.group.user_removed",
            Self::DsyncUserCreated => "dsync.user.created",
            Self::DsyncUserDeleted => "dsync.user.deleted",
            Self::DsyncUserUpdated => "dsync.user.updated",
            Self::EmailVerificationCreated => "email_verification.created",
            Self::GroupCreated => "group.created",
            Self::GroupDeleted => "group.deleted",
            Self::GroupMemberAdded => "group.member_added",
            Self::GroupMemberRemoved => "group.member_removed",
            Self::GroupUpdated => "group.updated",
            Self::FlagCreated => "flag.created",
            Self::FlagDeleted => "flag.deleted",
            Self::FlagUpdated => "flag.updated",
            Self::FlagRuleUpdated => "flag.rule_updated",
            Self::InvitationAccepted => "invitation.accepted",
            Self::InvitationCreated => "invitation.created",
            Self::InvitationResent => "invitation.resent",
            Self::InvitationRevoked => "invitation.revoked",
            Self::MagicAuthCreated => "magic_auth.created",
            Self::OrganizationCreated => "organization.created",
            Self::OrganizationDeleted => "organization.deleted",
            Self::OrganizationUpdated => "organization.updated",
            Self::OrganizationDomainCreated => "organization_domain.created",
            Self::OrganizationDomainDeleted => "organization_domain.deleted",
            Self::OrganizationDomainUpdated => "organization_domain.updated",
            Self::OrganizationDomainVerified => "organization_domain.verified",
            Self::OrganizationDomainVerificationFailed => "organization_domain.verification_failed",
            Self::PasswordResetCreated => "password_reset.created",
            Self::PasswordResetSucceeded => "password_reset.succeeded",
            Self::UserCreated => "user.created",
            Self::UserUpdated => "user.updated",
            Self::UserDeleted => "user.deleted",
            Self::OrganizationMembershipCreated => "organization_membership.created",
            Self::OrganizationMembershipDeleted => "organization_membership.deleted",
            Self::OrganizationMembershipUpdated => "organization_membership.updated",
            Self::RoleCreated => "role.created",
            Self::RoleDeleted => "role.deleted",
            Self::RoleUpdated => "role.updated",
            Self::OrganizationRoleCreated => "organization_role.created",
            Self::OrganizationRoleDeleted => "organization_role.deleted",
            Self::OrganizationRoleUpdated => "organization_role.updated",
            Self::PermissionCreated => "permission.created",
            Self::PermissionDeleted => "permission.deleted",
            Self::PermissionUpdated => "permission.updated",
            Self::SessionCreated => "session.created",
            Self::SessionRevoked => "session.revoked",
            Self::WaitlistUserApproved => "waitlist_user.approved",
            Self::WaitlistUserCreated => "waitlist_user.created",
            Self::WaitlistUserDenied => "waitlist_user.denied",
            Self::Unknown(s) => s.as_str(),
        }
    }
}

impl fmt::Display for UpdateWebhookEndpointEvents {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.write_str(self.as_str())
    }
}

impl AsRef<str> for UpdateWebhookEndpointEvents {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

impl FromStr for UpdateWebhookEndpointEvents {
    type Err = std::convert::Infallible;
    #[allow(deprecated)]
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        Ok(match s {
            "authentication.email_verification_succeeded" => {
                Self::AuthenticationEmailVerificationSucceeded
            }
            "authentication.magic_auth_failed" => Self::AuthenticationMagicAuthFailed,
            "authentication.magic_auth_succeeded" => Self::AuthenticationMagicAuthSucceeded,
            "authentication.mfa_succeeded" => Self::AuthenticationMfaSucceeded,
            "authentication.oauth_failed" => Self::AuthenticationOAuthFailed,
            "authentication.oauth_succeeded" => Self::AuthenticationOAuthSucceeded,
            "authentication.password_failed" => Self::AuthenticationPasswordFailed,
            "authentication.password_succeeded" => Self::AuthenticationPasswordSucceeded,
            "authentication.passkey_failed" => Self::AuthenticationPasskeyFailed,
            "authentication.passkey_succeeded" => Self::AuthenticationPasskeySucceeded,
            "authentication.sso_failed" => Self::AuthenticationSSOFailed,
            "authentication.sso_started" => Self::AuthenticationSSOStarted,
            "authentication.sso_succeeded" => Self::AuthenticationSSOSucceeded,
            "authentication.sso_timed_out" => Self::AuthenticationSSOTimedOut,
            "authentication.radar_risk_detected" => Self::AuthenticationRadarRiskDetected,
            "api_key.created" => Self::ApiKeyCreated,
            "api_key.revoked" => Self::ApiKeyRevoked,
            "connection.activated" => Self::ConnectionActivated,
            "connection.deactivated" => Self::ConnectionDeactivated,
            "connection.saml_certificate_renewal_required" => {
                Self::ConnectionSAMLCertificateRenewalRequired
            }
            "connection.saml_certificate_renewed" => Self::ConnectionSAMLCertificateRenewed,
            "connection.deleted" => Self::ConnectionDeleted,
            "dsync.activated" => Self::DsyncActivated,
            "dsync.deleted" => Self::DsyncDeleted,
            "dsync.group.created" => Self::DsyncGroupCreated,
            "dsync.group.deleted" => Self::DsyncGroupDeleted,
            "dsync.group.updated" => Self::DsyncGroupUpdated,
            "dsync.group.user_added" => Self::DsyncGroupUserAdded,
            "dsync.group.user_removed" => Self::DsyncGroupUserRemoved,
            "dsync.user.created" => Self::DsyncUserCreated,
            "dsync.user.deleted" => Self::DsyncUserDeleted,
            "dsync.user.updated" => Self::DsyncUserUpdated,
            "email_verification.created" => Self::EmailVerificationCreated,
            "group.created" => Self::GroupCreated,
            "group.deleted" => Self::GroupDeleted,
            "group.member_added" => Self::GroupMemberAdded,
            "group.member_removed" => Self::GroupMemberRemoved,
            "group.updated" => Self::GroupUpdated,
            "flag.created" => Self::FlagCreated,
            "flag.deleted" => Self::FlagDeleted,
            "flag.updated" => Self::FlagUpdated,
            "flag.rule_updated" => Self::FlagRuleUpdated,
            "invitation.accepted" => Self::InvitationAccepted,
            "invitation.created" => Self::InvitationCreated,
            "invitation.resent" => Self::InvitationResent,
            "invitation.revoked" => Self::InvitationRevoked,
            "magic_auth.created" => Self::MagicAuthCreated,
            "organization.created" => Self::OrganizationCreated,
            "organization.deleted" => Self::OrganizationDeleted,
            "organization.updated" => Self::OrganizationUpdated,
            "organization_domain.created" => Self::OrganizationDomainCreated,
            "organization_domain.deleted" => Self::OrganizationDomainDeleted,
            "organization_domain.updated" => Self::OrganizationDomainUpdated,
            "organization_domain.verified" => Self::OrganizationDomainVerified,
            "organization_domain.verification_failed" => Self::OrganizationDomainVerificationFailed,
            "password_reset.created" => Self::PasswordResetCreated,
            "password_reset.succeeded" => Self::PasswordResetSucceeded,
            "user.created" => Self::UserCreated,
            "user.updated" => Self::UserUpdated,
            "user.deleted" => Self::UserDeleted,
            "organization_membership.created" => Self::OrganizationMembershipCreated,
            "organization_membership.deleted" => Self::OrganizationMembershipDeleted,
            "organization_membership.updated" => Self::OrganizationMembershipUpdated,
            "role.created" => Self::RoleCreated,
            "role.deleted" => Self::RoleDeleted,
            "role.updated" => Self::RoleUpdated,
            "organization_role.created" => Self::OrganizationRoleCreated,
            "organization_role.deleted" => Self::OrganizationRoleDeleted,
            "organization_role.updated" => Self::OrganizationRoleUpdated,
            "permission.created" => Self::PermissionCreated,
            "permission.deleted" => Self::PermissionDeleted,
            "permission.updated" => Self::PermissionUpdated,
            "session.created" => Self::SessionCreated,
            "session.revoked" => Self::SessionRevoked,
            "waitlist_user.approved" => Self::WaitlistUserApproved,
            "waitlist_user.created" => Self::WaitlistUserCreated,
            "waitlist_user.denied" => Self::WaitlistUserDenied,
            other => Self::Unknown(other.to_string()),
        })
    }
}

impl From<String> for UpdateWebhookEndpointEvents {
    fn from(s: String) -> Self {
        // Reuse the original `String` allocation in the fallback branch.
        match Self::from_str(&s) {
            Ok(Self::Unknown(_)) => Self::Unknown(s),
            Ok(other) => other,
        }
    }
}

impl From<&str> for UpdateWebhookEndpointEvents {
    fn from(s: &str) -> Self {
        Self::from_str(s).unwrap_or_else(|_| Self::Unknown(s.to_string()))
    }
}

impl Serialize for UpdateWebhookEndpointEvents {
    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        serializer.serialize_str(self.as_str())
    }
}

impl<'de> Deserialize<'de> for UpdateWebhookEndpointEvents {
    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
        let s = String::deserialize(deserializer)?;
        Ok(Self::from(s))
    }
}