ElasticEmail 4.2.0

Official Rust SDK for the Elastic Email REST API v4
Documentation
/*
 * Elastic Email REST API
 *
 * This API is based on the REST API architecture, allowing the user to easily manage their data with this resource-based approach.    Every API call is established on which specific request type (GET, POST, PUT, DELETE) will be used.    The API has a limit of 20 concurrent connections and a hard timeout of 600 seconds per request.    To start using this API, you will need your Access Token (available <a target='_blank' href='https://app.elasticemail.com/marketing/settings/new/manage-api'>here</a>). Remember to keep it safe. Required access levels are listed in the given request’s description.    Downloadable library clients can be found in our Github repository <a target='_blank' href='https://github.com/ElasticEmail?tab=repositories&q=%22rest+api%22+in%3Areadme'>here</a>
 *
 * The version of the OpenAPI document: 4.0.0
 * Contact: support@elasticemail.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AccessLevel {
    #[serde(rename = "None")]
    None,
    #[serde(rename = "ViewAccount")]
    ViewAccount,
    #[serde(rename = "ViewContacts")]
    ViewContacts,
    #[serde(rename = "ViewForms")]
    ViewForms,
    #[serde(rename = "ViewTemplates")]
    ViewTemplates,
    #[serde(rename = "ViewCampaigns")]
    ViewCampaigns,
    #[serde(rename = "ViewChannels")]
    ViewChannels,
    #[serde(rename = "ViewAutomations")]
    ViewAutomations,
    #[serde(rename = "ViewSurveys")]
    ViewSurveys,
    #[serde(rename = "ViewSettings")]
    ViewSettings,
    #[serde(rename = "ViewBilling")]
    ViewBilling,
    #[serde(rename = "ViewSubAccounts")]
    ViewSubAccounts,
    #[serde(rename = "ViewUsers")]
    ViewUsers,
    #[serde(rename = "ViewFiles")]
    ViewFiles,
    #[serde(rename = "ViewReports")]
    ViewReports,
    #[serde(rename = "ModifyAccount")]
    ModifyAccount,
    #[serde(rename = "ModifyContacts")]
    ModifyContacts,
    #[serde(rename = "ModifyForms")]
    ModifyForms,
    #[serde(rename = "ModifyTemplates")]
    ModifyTemplates,
    #[serde(rename = "ModifyCampaigns")]
    ModifyCampaigns,
    #[serde(rename = "ModifyChannels")]
    ModifyChannels,
    #[serde(rename = "ModifyAutomations")]
    ModifyAutomations,
    #[serde(rename = "ModifySurveys")]
    ModifySurveys,
    #[serde(rename = "ModifyFiles")]
    ModifyFiles,
    #[serde(rename = "Export")]
    Export,
    #[serde(rename = "SendSmtp")]
    SendSmtp,
    #[serde(rename = "SendSMS")]
    SendSms,
    #[serde(rename = "ModifySettings")]
    ModifySettings,
    #[serde(rename = "ModifyBilling")]
    ModifyBilling,
    #[serde(rename = "ModifyProfile")]
    ModifyProfile,
    #[serde(rename = "ModifySubAccounts")]
    ModifySubAccounts,
    #[serde(rename = "ModifyUsers")]
    ModifyUsers,
    #[serde(rename = "Security")]
    Security,
    #[serde(rename = "ModifyLanguage")]
    ModifyLanguage,
    #[serde(rename = "ViewSupport")]
    ViewSupport,
    #[serde(rename = "SendHttp")]
    SendHttp,
    #[serde(rename = "Modify2FAEmail")]
    Modify2FaEmail,
    #[serde(rename = "ModifySupport")]
    ModifySupport,
    #[serde(rename = "ViewCustomFields")]
    ViewCustomFields,
    #[serde(rename = "ModifyCustomFields")]
    ModifyCustomFields,
    #[serde(rename = "ModifyWebNotifications")]
    ModifyWebNotifications,
    #[serde(rename = "ExtendedLogs")]
    ExtendedLogs,
    #[serde(rename = "VerifyEmails")]
    VerifyEmails,
    #[serde(rename = "Modify2FASms")]
    Modify2FaSms,
    #[serde(rename = "ViewVerifyEmails")]
    ViewVerifyEmails,
    #[serde(rename = "ViewAccessTokens")]
    ViewAccessTokens,
    #[serde(rename = "ViewWebNotifications")]
    ViewWebNotifications,
    #[serde(rename = "ModifyLandingPages")]
    ModifyLandingPages,
    #[serde(rename = "ViewLandingPages")]
    ViewLandingPages,
    #[serde(rename = "ModifySuppressions")]
    ModifySuppressions,
    #[serde(rename = "ViewSuppressions")]
    ViewSuppressions,
    #[serde(rename = "ViewDragDropEditor")]
    ViewDragDropEditor,
    #[serde(rename = "ViewTemplateEditor")]
    ViewTemplateEditor,
    #[serde(rename = "ViewAITools")]
    ViewAiTools,
    #[serde(rename = "ModifySubscriptionAntiSpam")]
    ModifySubscriptionAntiSpam,
    #[serde(rename = "ViewLandingPagesCheckout")]
    ViewLandingPagesCheckout,
    #[serde(rename = "ModifyLandingPagesCheckout")]
    ModifyLandingPagesCheckout,
    #[serde(rename = "ViewHTMLEditor")]
    ViewHtmlEditor,
    #[serde(rename = "ModifyAccessTokens")]
    ModifyAccessTokens,
    #[serde(rename = "ViewPaidNewsletters")]
    ViewPaidNewsletters,
    #[serde(rename = "ModifyPaidNewsletters")]
    ModifyPaidNewsletters,

}

impl std::fmt::Display for AccessLevel {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            Self::None => write!(f, "None"),
            Self::ViewAccount => write!(f, "ViewAccount"),
            Self::ViewContacts => write!(f, "ViewContacts"),
            Self::ViewForms => write!(f, "ViewForms"),
            Self::ViewTemplates => write!(f, "ViewTemplates"),
            Self::ViewCampaigns => write!(f, "ViewCampaigns"),
            Self::ViewChannels => write!(f, "ViewChannels"),
            Self::ViewAutomations => write!(f, "ViewAutomations"),
            Self::ViewSurveys => write!(f, "ViewSurveys"),
            Self::ViewSettings => write!(f, "ViewSettings"),
            Self::ViewBilling => write!(f, "ViewBilling"),
            Self::ViewSubAccounts => write!(f, "ViewSubAccounts"),
            Self::ViewUsers => write!(f, "ViewUsers"),
            Self::ViewFiles => write!(f, "ViewFiles"),
            Self::ViewReports => write!(f, "ViewReports"),
            Self::ModifyAccount => write!(f, "ModifyAccount"),
            Self::ModifyContacts => write!(f, "ModifyContacts"),
            Self::ModifyForms => write!(f, "ModifyForms"),
            Self::ModifyTemplates => write!(f, "ModifyTemplates"),
            Self::ModifyCampaigns => write!(f, "ModifyCampaigns"),
            Self::ModifyChannels => write!(f, "ModifyChannels"),
            Self::ModifyAutomations => write!(f, "ModifyAutomations"),
            Self::ModifySurveys => write!(f, "ModifySurveys"),
            Self::ModifyFiles => write!(f, "ModifyFiles"),
            Self::Export => write!(f, "Export"),
            Self::SendSmtp => write!(f, "SendSmtp"),
            Self::SendSms => write!(f, "SendSMS"),
            Self::ModifySettings => write!(f, "ModifySettings"),
            Self::ModifyBilling => write!(f, "ModifyBilling"),
            Self::ModifyProfile => write!(f, "ModifyProfile"),
            Self::ModifySubAccounts => write!(f, "ModifySubAccounts"),
            Self::ModifyUsers => write!(f, "ModifyUsers"),
            Self::Security => write!(f, "Security"),
            Self::ModifyLanguage => write!(f, "ModifyLanguage"),
            Self::ViewSupport => write!(f, "ViewSupport"),
            Self::SendHttp => write!(f, "SendHttp"),
            Self::Modify2FaEmail => write!(f, "Modify2FAEmail"),
            Self::ModifySupport => write!(f, "ModifySupport"),
            Self::ViewCustomFields => write!(f, "ViewCustomFields"),
            Self::ModifyCustomFields => write!(f, "ModifyCustomFields"),
            Self::ModifyWebNotifications => write!(f, "ModifyWebNotifications"),
            Self::ExtendedLogs => write!(f, "ExtendedLogs"),
            Self::VerifyEmails => write!(f, "VerifyEmails"),
            Self::Modify2FaSms => write!(f, "Modify2FASms"),
            Self::ViewVerifyEmails => write!(f, "ViewVerifyEmails"),
            Self::ViewAccessTokens => write!(f, "ViewAccessTokens"),
            Self::ViewWebNotifications => write!(f, "ViewWebNotifications"),
            Self::ModifyLandingPages => write!(f, "ModifyLandingPages"),
            Self::ViewLandingPages => write!(f, "ViewLandingPages"),
            Self::ModifySuppressions => write!(f, "ModifySuppressions"),
            Self::ViewSuppressions => write!(f, "ViewSuppressions"),
            Self::ViewDragDropEditor => write!(f, "ViewDragDropEditor"),
            Self::ViewTemplateEditor => write!(f, "ViewTemplateEditor"),
            Self::ViewAiTools => write!(f, "ViewAITools"),
            Self::ModifySubscriptionAntiSpam => write!(f, "ModifySubscriptionAntiSpam"),
            Self::ViewLandingPagesCheckout => write!(f, "ViewLandingPagesCheckout"),
            Self::ModifyLandingPagesCheckout => write!(f, "ModifyLandingPagesCheckout"),
            Self::ViewHtmlEditor => write!(f, "ViewHTMLEditor"),
            Self::ModifyAccessTokens => write!(f, "ModifyAccessTokens"),
            Self::ViewPaidNewsletters => write!(f, "ViewPaidNewsletters"),
            Self::ModifyPaidNewsletters => write!(f, "ModifyPaidNewsletters"),
        }
    }
}

impl Default for AccessLevel {
    fn default() -> AccessLevel {
        Self::None
    }
}