from enum import Enum class NotificationType(str, Enum): """Enumerate notification types.""" ALERTA = "alerta" """Alerta""" ALERTNOW = "AlertNow" """AlertNow""" ALIYUNSMS = "AliyunSMS" """AliyunSMS""" APPRISE = "apprise" """Apprise (Support 50+ Notification services)""" BARK = "Bark" """Bark""" CLICKSENDSMS = "clicksendsms" """ClickSend SMS""" DINGDING = "DingDing" """DingDing""" DISCORD = "discord" """Discord""" FEISHU = "Feishu" """Feishu""" FLASHDUTY = "FlashDuty" """FlashDuty""" FREEMOBILE = "FreeMobile" """FreeMobile (mobile.free.fr)""" GOALERT = "GoAlert" """GoAlert""" GOOGLECHAT = "GoogleChat" """Google Chat (Google Workspace)""" GORUSH = "gorush" """Gorush""" GOTIFY = "gotify" """Gotify""" HOMEASSISTANT = "HomeAssistant" """Home Assistant""" KOOK = "Kook" """Kook""" LINE = "line" """LINE Messenger""" LINENOTIFY = "LineNotify" """LINE Notify""" LUNASEA = "lunasea" """LunaSea""" MATRIX = "matrix" """Matrix""" MATTERMOST = "mattermost" """Mattermost""" NOSTR = "nostr" """Nostr""" NTFY = "ntfy" """Ntfy""" OCTOPUSH = "octopush" """Octopush""" ONEBOT = "OneBot" """OneBot""" OPSGENIE = "Opsgenie" """Opsgenie""" PAGERDUTY = "PagerDuty" """PagerDuty""" PAGERTREE = "PagerTree" """PagerTree""" PROMOSMS = "promosms" """PromoSMS""" PUSHBULLET = "pushbullet" """Pushbullet""" PUSHDEER = "PushDeer" """PushDeer""" PUSHOVER = "pushover" """Pushover""" PUSHY = "pushy" """Pushy""" ROCKET_CHAT = "rocket.chat" """Rocket.Chat""" SERVERCHAN = "ServerChan" """ServerChan""" SERWERSMS = "serwersms" """SerwerSMS.pl""" SIGNAL = "signal" """Signal""" SLACK = "slack" """Slack""" SMSC = "smsc" """SMSC""" SMSEAGLE = "SMSEagle" """SMSEagle""" SMSMANAGER = "SMSManager" """SmsManager (smsmanager.cz)""" SMTP = "smtp" """Email (SMTP)""" SPLUNK = "Splunk" """Splunk""" SQUADCAST = "squadcast" """SquadCast""" STACKFIELD = "stackfield" """Stackfield""" TEAMS = "teams" """Microsoft Teams""" PUSHBYTECHULUS = "PushByTechulus" """Push by Techulus""" TELEGRAM = "telegram" """Telegram""" TWILIO = "twilio" """Twilio""" WEBHOOK = "webhook" """Webhook""" WECOM = "WeCom" """WeCom""" ZOHOCLIQ = "ZohoCliq" """ZohoCliq""" notification_provider_options = { NotificationType.ALERTA: dict( alertaApiEndpoint=dict(type="str", required=True), alertaApiKey=dict(type="str", required=True), alertaEnvironment=dict(type="str", required=True), alertaAlertState=dict(type="str", required=True), alertaRecoverState=dict(type="str", required=True), ), NotificationType.ALERTNOW: dict( alertNowWebhookURL=dict(type="str", required=True), ), NotificationType.ALIYUNSMS: dict( phonenumber=dict(type="str", required=True), templateCode=dict(type="str", required=True), signName=dict(type="str", required=True), accessKeyId=dict(type="str", required=True), secretAccessKey=dict(type="str", required=True), ), NotificationType.APPRISE: dict( appriseURL=dict(type="str", required=True), title=dict(type="str", required=False), ), NotificationType.BARK: dict( barkEndpoint=dict(type="str", required=True), barkGroup=dict(type="str", required=True), barkSound=dict(type="str", required=True), ), NotificationType.CLICKSENDSMS: dict( clicksendsmsLogin=dict(type="str", required=True), clicksendsmsPassword=dict(type="str", required=True), clicksendsmsToNumber=dict(type="str", required=True), clicksendsmsSenderName=dict(type="str", required=False), ), NotificationType.DINGDING: dict( webHookUrl=dict(type="str", required=True), secretKey=dict(type="str", required=True), ), NotificationType.DISCORD: dict( discordUsername=dict(type="str", required=False), discordWebhookUrl=dict(type="str", required=True), discordPrefixMessage=dict(type="str", required=False), ), NotificationType.FEISHU: dict( feishuWebHookUrl=dict(type="str", required=True), ), NotificationType.FLASHDUTY: dict( flashdutySeverity=dict(type="str", required=True), flashdutyIntegrationKey=dict(type="str", required=False), ), NotificationType.FREEMOBILE: dict( freemobileUser=dict(type="str", required=True), freemobilePass=dict(type="str", required=True), ), NotificationType.GOALERT: dict( goAlertBaseURL=dict(type="str", required=True), goAlertToken=dict(type="str", required=True), ), NotificationType.GOOGLECHAT: dict( googleChatWebhookURL=dict(type="str", required=True), ), NotificationType.GORUSH: dict( gorushDeviceToken=dict(type="str", required=True), gorushPlatform=dict(type="str", required=False), gorushTitle=dict(type="str", required=False), gorushPriority=dict(type="str", required=False), gorushRetry=dict(type="int", required=False), gorushTopic=dict(type="str", required=False), gorushServerURL=dict(type="str", required=True), ), NotificationType.GOTIFY: dict( gotifyserverurl=dict(type="str", required=True), gotifyapplicationToken=dict(type="str", required=True), gotifyPriority=dict(type="int", required=True), ), NotificationType.HOMEASSISTANT: dict( notificationService=dict(type="str", required=False), homeAssistantUrl=dict(type="str", required=True), longLivedAccessToken=dict(type="str", required=True), ), NotificationType.KOOK: dict( kookGuildID=dict(type="str", required=True), kookBotToken=dict(type="str", required=True), ), NotificationType.LINE: dict( lineChannelAccessToken=dict(type="str", required=True), lineUserID=dict(type="str", required=True), ), NotificationType.LINENOTIFY: dict( lineNotifyAccessToken=dict(type="str", required=True), ), NotificationType.LUNASEA: dict( lunaseaTarget=dict(type="str", required=True), lunaseaUserID=dict(type="str", required=False), lunaseaDevice=dict(type="str", required=False), ), NotificationType.MATRIX: dict( internalRoomId=dict(type="str", required=True), accessToken=dict(type="str", required=True), homeserverUrl=dict(type="str", required=True), ), NotificationType.MATTERMOST: dict( mattermostusername=dict(type="str", required=False), mattermostWebhookUrl=dict(type="str", required=True), mattermostchannel=dict(type="str", required=False), mattermosticonemo=dict(type="str", required=False), mattermosticonurl=dict(type="str", required=False), ), NotificationType.NOSTR: dict( sender=dict(type="str", required=True), recipients=dict(type="str", required=True), relays=dict(type="str", required=True), ), NotificationType.NTFY: dict( ntfyAuthenticationMethod=dict(type="str", required=False), ntfyusername=dict(type="str", required=False), ntfypassword=dict(type="str", required=False), ntfyaccesstoken=dict(type="str", required=False), ntfytopic=dict(type="str", required=True), ntfyPriority=dict(type="int", required=True), ntfyserverurl=dict(type="str", required=True), ntfyIcon=dict(type="str", required=False), ), NotificationType.OCTOPUSH: dict( octopushVersion=dict(type="str", required=False), octopushAPIKey=dict(type="str", required=True), octopushLogin=dict(type="str", required=True), octopushPhoneNumber=dict(type="str", required=True), octopushSMSType=dict(type="str", required=False), octopushSenderName=dict(type="str", required=False), ), NotificationType.ONEBOT: dict( httpAddr=dict(type="str", required=True), accessToken=dict(type="str", required=True), msgType=dict(type="str", required=False), recieverId=dict(type="str", required=True), ), NotificationType.OPSGENIE: dict( opsgeniePriority=dict(type="int", required=False), opsgenieRegion=dict(type="str", required=True), opsgenieApiKey=dict(type="str", required=True), ), NotificationType.PAGERDUTY: dict( pagerdutyAutoResolve=dict(type="str", required=False), pagerdutyIntegrationUrl=dict(type="str", required=False), pagerdutyPriority=dict(type="str", required=False), pagerdutyIntegrationKey=dict(type="str", required=True), ), NotificationType.PAGERTREE: dict( pagertreeAutoResolve=dict(type="str", required=False), pagertreeIntegrationUrl=dict(type="str", required=False), pagertreeUrgency=dict(type="str", required=False), ), NotificationType.PROMOSMS: dict( promosmsAllowLongSMS=dict(type="bool", required=False), promosmsLogin=dict(type="str", required=True), promosmsPassword=dict(type="str", required=True), promosmsPhoneNumber=dict(type="str", required=True), promosmsSMSType=dict(type="str", required=False), promosmsSenderName=dict(type="str", required=False), ), NotificationType.PUSHBULLET: dict( pushbulletAccessToken=dict(type="str", required=True), ), NotificationType.PUSHDEER: dict( pushdeerServer=dict(type="str", required=False), pushdeerKey=dict(type="str", required=True), ), NotificationType.PUSHOVER: dict( pushoveruserkey=dict(type="str", required=True), pushoverapptoken=dict(type="str", required=True), pushoversounds=dict(type="str", required=False), pushoverpriority=dict(type="str", required=False), pushovertitle=dict(type="str", required=False), pushoverdevice=dict(type="str", required=False), pushoverttl=dict(type="int", required=False), ), NotificationType.PUSHY: dict( pushyAPIKey=dict(type="str", required=True), pushyToken=dict(type="str", required=True), ), NotificationType.ROCKET_CHAT: dict( rocketchannel=dict(type="str", required=False), rocketusername=dict(type="str", required=False), rocketiconemo=dict(type="str", required=False), rocketwebhookURL=dict(type="str", required=True), ), NotificationType.SERVERCHAN: dict( serverChanSendKey=dict(type="str", required=True), ), NotificationType.SERWERSMS: dict( serwersmsUsername=dict(type="str", required=True), serwersmsPassword=dict(type="str", required=True), serwersmsPhoneNumber=dict(type="str", required=True), serwersmsSenderName=dict(type="str", required=False), ), NotificationType.SIGNAL: dict( signalNumber=dict(type="str", required=True), signalRecipients=dict(type="str", required=True), signalURL=dict(type="str", required=True), ), NotificationType.SLACK: dict( slackchannelnotify=dict(type="bool", required=False), slackchannel=dict(type="str", required=False), slackusername=dict(type="str", required=False), slackiconemo=dict(type="str", required=False), slackwebhookURL=dict(type="str", required=True), ), NotificationType.SMSC: dict( smscTranslit=dict(type="str", required=False), smscLogin=dict(type="str", required=True), smscPassword=dict(type="str", required=True), smscToNumber=dict(type="str", required=True), smscSenderName=dict(type="str", required=False), ), NotificationType.SMSEAGLE: dict( smseagleEncoding=dict(type="bool", required=False), smseaglePriority=dict(type="int", required=False), smseagleRecipientType=dict(type="str", required=False), smseagleToken=dict(type="str", required=True), smseagleRecipient=dict(type="str", required=True), smseagleUrl=dict(type="str", required=True), ), NotificationType.SMSMANAGER: dict( smsmanagerApiKey=dict(type="str", required=False), numbers=dict(type="str", required=False), messageType=dict(type="str", required=False), ), NotificationType.SMTP: dict( smtpHost=dict(type="str", required=True), smtpPort=dict(type="int", required=True), smtpSecure=dict(type="str", required=False), smtpIgnoreTLSError=dict(type="bool", required=False), smtpDkimDomain=dict(type="str", required=False), smtpDkimKeySelector=dict(type="str", required=False), smtpDkimPrivateKey=dict(type="str", required=False), smtpDkimHashAlgo=dict(type="str", required=False), smtpDkimheaderFieldNames=dict(type="str", required=False), smtpDkimskipFields=dict(type="str", required=False), smtpUsername=dict(type="str", required=False), smtpPassword=dict(type="str", required=False), customSubject=dict(type="str", required=False), smtpFrom=dict(type="str", required=True), smtpCC=dict(type="str", required=False), smtpBCC=dict(type="str", required=False), smtpTo=dict(type="str", required=False), ), NotificationType.SPLUNK: dict( splunkAutoResolve=dict(type="str", required=False), splunkSeverity=dict(type="str", required=False), splunkRestURL=dict(type="str", required=True), ), NotificationType.SQUADCAST: dict( squadcastWebhookURL=dict(type="str", required=True), ), NotificationType.STACKFIELD: dict( stackfieldwebhookURL=dict(type="str", required=True), ), NotificationType.TEAMS: dict( webhookUrl=dict(type="str", required=True), ), NotificationType.PUSHBYTECHULUS: dict( pushAPIKey=dict(type="str", required=True), ), NotificationType.TELEGRAM: dict( telegramChatID=dict(type="str", required=True), telegramSendSilently=dict(type="bool", required=False), telegramProtectContent=dict(type="bool", required=False), telegramMessageThreadID=dict(type="str", required=False), telegramBotToken=dict(type="str", required=True), ), NotificationType.TWILIO: dict( twilioAccountSID=dict(type="str", required=True), twilioApiKey=dict(type="str", required=False), twilioAuthToken=dict(type="str", required=True), twilioToNumber=dict(type="str", required=True), twilioFromNumber=dict(type="str", required=True), ), NotificationType.WEBHOOK: dict( webhookContentType=dict(type="str", required=True), webhookCustomBody=dict(type="str", required=False), webhookAdditionalHeaders=dict(type="str", required=False), webhookURL=dict(type="str", required=True), ), NotificationType.WECOM: dict( weComBotKey=dict(type="str", required=True), ), NotificationType.ZOHOCLIQ: dict( webhookUrl=dict(type="str", required=True), ), } notification_provider_conditions = dict( gotifyPriority=dict( min=0, max=10, ), ntfyPriority=dict( min=1, max=5, ), opsgeniePriority=dict( min=1, max=5, ), pushoverttl=dict( min=0, ), smseaglePriority=dict( min=0, max=9, ), smtpPort=dict( min=0, max=65535, ), )