Providers

API documentation for the different providers.

class notifiers.providers.email.SMTP[source]

Send emails via SMTP

base_url = None
name = 'email'
schema_model

alias of SMTPSchema

site_url = 'https://en.wikipedia.org/wiki/Email'
class notifiers.providers.email.SMTPSchema(**data: Any)[source]
attachments: OneOrMore[FilePath] | None
bcc: OneOrMore[Email] | None
cc: OneOrMore[Email] | None
from_: Email
host: Hostname
html: bool
login: bool
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

password: str | None
port: Port
ssl: bool
subject: str
tls: bool
to: OneOrMore[Email]
username: str | None
notifiers.providers.email.default_from() → str[source]

The default FROM address, notifiers@<this machine's fully qualified domain name>. Computed on first use since the hostname lookup can be slow.

class notifiers.providers.gmail.Gmail[source]

Send email via Gmail

base_url = 'smtp.gmail.com'
name = 'gmail'
schema_model

alias of GmailSchema

site_url = 'https://www.google.com/gmail/about/'
class notifiers.providers.gmail.GmailSchema(*, message: str, subject: str = "New email from 'notifiers'!", to: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)], cc: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, bcc: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, from_: ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)] = <factory>, attachments: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_valid_file)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_valid_file), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, host: str = 'localhost', port: ~typing.Annotated[int, ~annotated_types.Ge(ge=0), ~annotated_types.Le(le=65535)] = 25, username: str | None = None, password: str | None = None, tls: bool = False, ssl: bool = False, html: bool = False, login: bool = True)[source]
host: Hostname
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

port: Port
tls: bool
class notifiers.providers.icloud.iCloud[source]

Send email via iCloud

base_url = 'smtp.mail.me.com'
name = 'icloud'
schema_model

alias of iCloudSchema

site_url = 'https://www.icloud.com/mail'
class notifiers.providers.icloud.iCloudSchema(*, message: str, subject: str = "New email from 'notifiers'!", to: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)], cc: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, bcc: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, from_: ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_email)] = <factory>, attachments: ~typing.Annotated[~typing.Annotated[list[~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_valid_file)]], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1)]), ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._unique), ~pydantic.types.Tag(tag=__many__)] | ~typing.Annotated[str, ~pydantic.functional_validators.AfterValidator(func=~notifiers.models.types._check_valid_file), ~pydantic.types.Tag(tag=__one__)], ~pydantic.types.Discriminator(discriminator=~notifiers.models.types._one_or_many, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, host: str = 'localhost', port: ~typing.Annotated[int, ~annotated_types.Ge(ge=0), ~annotated_types.Le(le=65535)] = 25, username: str | None = None, password: str | None = None, tls: bool = False, ssl: bool = False, html: bool = False, login: bool = True)[source]
host: Hostname
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

password: str
port: Port
required_with_default: ClassVar[frozenset[str]] = frozenset({'from_'})

Field names the service requires, but which have a default so they never need to be passed explicitly

tls: bool
username: str
class notifiers.providers.join.Join[source]

Send Join notifications

push_url = '/sendPush'
schema_model

alias of JoinSchema

site_url = 'https://joaoapps.com/join/api/'
class notifiers.providers.join.JoinDevices[source]

Return a list of Join devices IDs

devices_url = '/listDevices'
resource_name = 'devices'
schema_model

alias of JoinDevicesSchema

class notifiers.providers.join.JoinDevicesSchema(**data: Any)[source]
api_key: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class notifiers.providers.join.JoinMixin[source]

Shared resources between Join and JoinDevices

base_url = 'https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1'
name = 'join'
class notifiers.providers.join.JoinSchema(**data: Any)[source]
alarm_volume: str | None
api_key: str
call_number: str | None
clipboard: str | None
device_id: str
device_ids: OneOrMore[str] | None
device_names: OneOrMore[str] | None
file: Url | None
find: bool | None
group: str | None
icon: Url | None
image: Url | None
interruption_filter: int | None
media_volume: int | None
message: str
mms_file: Url | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

priority: int | None
ring_volume: str | None
small_icon: Url | None
sms_number: str | None
sms_text: str | None
title: str | None
url: Url | None
wallpaper: Url | None
class notifiers.providers.pushbullet.Pushbullet[source]

Send Pushbullet notifications

base_url = 'https://api.pushbullet.com/v2/pushes'
schema_model

alias of PushbulletSchema

site_url = 'https://www.pushbullet.com'
class notifiers.providers.pushbullet.PushbulletDevices[source]

Return a list of Pushbullet devices associated to a token

devices_url = 'https://api.pushbullet.com/v2/devices'
resource_name = 'devices'
schema_model

alias of PushbulletDevicesSchema

class notifiers.providers.pushbullet.PushbulletDevicesSchema(**data: Any)[source]
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

token: str
class notifiers.providers.pushbullet.PushbulletMixin[source]

Shared attributes between PushbulletDevices and Pushbullet

name = 'pushbullet'
path_to_errors = ('error', 'message')
class notifiers.providers.pushbullet.PushbulletSchema(**data: Any)[source]
channel_tag: str | None
client_iden: str | None
device_iden: str | None
email: Email | None
guid: str | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

source_device_iden: str | None
title: str | None
token: str
type_: Literal['note', 'link']
url: str | None
class notifiers.providers.pushover.Pushover[source]

Send Pushover notifications

message_url = 'messages.json'
property metadata: dict

Returns a dict of the provider metadata as declared. Override if needed.

name = 'pushover'
schema_model

alias of PushoverSchema

site_url = 'https://pushover.net/'
class notifiers.providers.pushover.PushoverLimits[source]
limits_url = 'apps/limits.json'
resource_name = 'limits'
class notifiers.providers.pushover.PushoverMixin[source]
base_url = 'https://api.pushover.net/1/'
name = 'pushover'
path_to_errors = ('errors',)
class notifiers.providers.pushover.PushoverResourceMixin[source]
schema_model

alias of PushoverResourceSchema

class notifiers.providers.pushover.PushoverResourceSchema(**data: Any)[source]
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'allow', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

token: str
class notifiers.providers.pushover.PushoverSchema(**data: Any)[source]
attachment: FilePath | None
callback: Url | None
device: OneOrMore[str] | None
expire: int | None
html: bool | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

priority: int | None
retry: int | None
sound: str | None
timestamp: Timestamp | None
title: str | None
token: str
url: Url | None
url_title: str | None
user: OneOrMore[str]
class notifiers.providers.pushover.PushoverSounds[source]
resource_name = 'sounds'
sounds_url = 'sounds.json'
class notifiers.providers.simplepush.SimplePush[source]

Send SimplePush notifications

base_url = 'https://api.simplepush.io/send'
name = 'simplepush'
schema_model

alias of SimplePushSchema

site_url = 'https://simplepush.io/'
class notifiers.providers.simplepush.SimplePushSchema(**data: Any)[source]
event: str | None
key: str
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

title: str | None
class notifiers.providers.slack.Slack[source]

Send Slack webhook notifications

base_url = 'https://hooks.slack.com/services/'
name = 'slack'
schema_model

alias of SlackSchema

site_url = 'https://api.slack.com/incoming-webhooks'
class notifiers.providers.slack.SlackAttachment(**data: Any)[source]
author_icon: str | None
author_name: str | None
color: str | None
fallback: str
fields: list[SlackAttachmentField] | None
footer: str | None
footer_icon: Url | None
image_url: Url | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pretext: str | None
text: str | None
thumb_url: Url | None
title: str | None
ts: Timestamp | None
class notifiers.providers.slack.SlackAttachmentField(**data: Any)[source]
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

short: bool | None
title: str
value: str | None
class notifiers.providers.slack.SlackSchema(**data: Any)[source]
attachments: list[SlackAttachment] | None
channel: str | None
icon_emoji: str | None
icon_url: Url | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

username: str | None
webhook_url: Url
class notifiers.providers.telegram.Telegram[source]

Send Telegram notifications

push_endpoint = '/sendMessage'
schema_model

alias of TelegramSchema

site_url = 'https://core.telegram.org/'
class notifiers.providers.telegram.TelegramMixin[source]

Shared resources between TelegramUpdates and Telegram

base_url = 'https://api.telegram.org/bot{token}'
name = 'telegram'
path_to_errors = ('description',)
class notifiers.providers.telegram.TelegramSchema(**data: Any)[source]
chat_id: str | int
disable_notification: bool | None
disable_web_page_preview: bool | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

parse_mode: Literal['markdown', 'html'] | None
reply_to_message_id: int | None
token: str
class notifiers.providers.telegram.TelegramUpdates[source]

Return Telegram bot updates, correlating to the getUpdates method. Returns chat IDs needed to notifications

resource_name = 'updates'
schema_model

alias of TelegramUpdatesSchema

updates_endpoint = '/getUpdates'
class notifiers.providers.telegram.TelegramUpdatesSchema(**data: Any)[source]
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

token: str
class notifiers.providers.zulip.Zulip[source]

Send Zulip notifications

api_endpoint = '/api/v1/messages'
base_url = 'https://{domain}.zulipchat.com'
name = 'zulip'
path_to_errors = ('msg',)
schema_model

alias of ZulipSchema

site_url = 'https://zulipchat.com/api/'
class notifiers.providers.zulip.ZulipSchema(**data: Any)[source]
api_key: str
domain: str | None
email: Email
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

server: Url | None
subject: str | None
to: str
type_: Literal['stream', 'private']
class notifiers.providers.twilio.Twilio[source]

Send an SMS via a Twilio number

base_url = 'https://api.twilio.com/2010-04-01/Accounts/{}/Messages.json'
name = 'twilio'
path_to_errors = ('message',)
schema_model

alias of TwilioSchema

site_url = 'https://www.twilio.com/'
class notifiers.providers.twilio.TwilioSchema(**data: Any)[source]
account_sid: str
application_sid: str | None
auth_token: str
from_: str | None
max_price: float | None
media_url: Url | None
message: str | None
messaging_service_id: str | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'allow', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

provide_feedback: bool | None
status_callback: Url | None
to: E164
validity_period: int | None
class notifiers.providers.pagerduty.PagerDuty[source]

Send PagerDuty Events

base_url = 'https://events.pagerduty.com/v2/enqueue'
name = 'pagerduty'
path_to_errors = ('errors',)
schema_model

alias of PagerDutySchema

site_url = 'https://v2.developer.pagerduty.com/'
class notifiers.providers.pagerduty.PagerDutyImage(**data: Any)[source]
alt: str | None
href: str | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

src: str
href: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

text: str
class notifiers.providers.pagerduty.PagerDutySchema(**data: Any)[source]
class_: str | None
component: str | None
custom_details: dict[str, Any] | None
dedup_key: str | None
event_action: Literal['trigger', 'acknowledge', 'resolve']
group: str | None
images: list[PagerDutyImage] | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'allow', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

routing_key: str
severity: Literal['critical', 'error', 'warning', 'info']
source: str
timestamp: ISO8601Datetime | None
class notifiers.providers.mailgun.MailGun[source]

Send emails via MailGun

base_url = 'https://api.mailgun.net/v3/{domain}/messages'
name = 'mailgun'
path_to_errors = ('message',)
schema_model

alias of MailGunSchema

site_url = 'https://documentation.mailgun.com/'
class notifiers.providers.mailgun.MailGunSchema(**data: Any)[source]
api_key: str
attachment: OneOrMore[FilePath] | None
base_url: Literal['https://api.mailgun.net', 'https://api.eu.mailgun.net']
bcc: OneOrMore[str] | None
cc: OneOrMore[str] | None
data: dict[str, dict[str, Any]] | None
deliverytime: RFC2822Datetime | None
dkim: bool | None
domain: str
from_: Email | None
headers: dict[str, str] | None
html: str | None
inline: OneOrMore[FilePath] | None
message: str | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

require_tls: bool | None
skip_verification: bool | None
subject: str | None
tag: one_or_more(Annotated[AsciiStr, Field(max_length=128)], max_items=3) | None
testmode: bool | None
to: OneOrMore[str]
tracking: bool | None
tracking_clicks: Literal[True, False, 'htmlonly'] | None
tracking_opens: bool | None
class notifiers.providers.statuspage.Statuspage[source]

Create Statuspage incidents

incidents_url = 'incidents.json'
realtime_statuses = ['investigating', 'identified', 'monitoring', 'resolved']
scheduled_statuses = ['scheduled', 'in_progress', 'verifying', 'completed']
schema_model

alias of StatuspageSchema

class notifiers.providers.statuspage.StatuspageComponents[source]

Return a list of Statuspage components for the page ID

components_url = 'components.json'
resource_name = 'components'
schema_model

alias of StatuspageComponentsSchema

class notifiers.providers.statuspage.StatuspageComponentsSchema(**data: Any)[source]
api_key: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page_id: str
class notifiers.providers.statuspage.StatuspageMixin[source]

Shared resources between Statuspage and StatuspageComponents

base_url = 'https://api.statuspage.io/v1//pages/{page_id}/'
name = 'statuspage'
path_to_errors = ('error',)
site_url = 'https://statuspage.io'
class notifiers.providers.statuspage.StatuspageSchema(**data: Any)[source]
api_key: str
backfill_date: DateString | None
backfilled: bool | None
body: str | None
component_ids: list[str] | None
deliver_notifications: bool | None
impact_override: Literal['none', 'minor', 'major', 'critical'] | None
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

page_id: str
scheduled_auto_completed: bool | None
scheduled_auto_in_progress: bool | None
scheduled_for: ISO8601Datetime | None
scheduled_remind_prior: bool | None
scheduled_until: ISO8601Datetime | None
status: Literal['investigating', 'identified', 'monitoring', 'resolved', 'scheduled', 'in_progress', 'verifying', 'completed'] | None
wants_twitter_update: bool | None
class notifiers.providers.victorops.VictorOps[source]

Send VictorOps webhook notifications

base_url = 'https://portal.victorops.com/ui/{ORGANIZATION_ID}/incidents'
name = 'victorops'
schema_model

alias of VictorOpsSchema

site_url = 'https://portal.victorops.com/dash/{ORGANIZATION_ID}#/advanced/rest'
class notifiers.providers.victorops.VictorOpsSchema(**data: Any)[source]
additional_keys: dict[str, Any] | None
annotations: dict[str, str] | None
entity_display_name: str
entity_id: str
message: str
message_type: Literal['critical', 'warning', 'acknowledgement', 'info', 'recovery', 'ok']
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

rest_url: Url
class notifiers.providers.dingtalk.DingTalk[source]

Send DingTalk notifications via Robot Webhook

base_url = 'https://oapi.dingtalk.com/robot/send'
name = 'dingtalk'
path_to_errors = ('errmsg',)
schema_model

alias of DingTalkSchema

site_url = 'https://open.dingtalk.com/document/'
class notifiers.providers.dingtalk.DingTalkActionCard(**data: Any)[source]
btn_orientation: Literal['0', '1']
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

single_title: str
single_url: Url
text: str
title: str
class notifiers.providers.dingtalk.DingTalkAt(**data: Any)[source]
at_mobiles: list[str] | None
at_user_ids: list[str] | None
is_at_all: bool
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

message_url: Url
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

pic_url: Url
text: str
title: str
class notifiers.providers.dingtalk.DingTalkMarkdown(**data: Any)[source]
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

text: str
title: str
class notifiers.providers.dingtalk.DingTalkMessage(**data: Any)[source]
action_card: DingTalkActionCard | None
markdown: DingTalkMarkdown | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg_type: Literal['text', 'markdown', 'link', 'actionCard']
text: DingTalkText | None
class notifiers.providers.dingtalk.DingTalkSchema(**data: Any)[source]
access_token: str
at: DingTalkAt | None
message: str | None
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg_data: DingTalkMessage | None
sign: str | None
timestamp: str | None
class notifiers.providers.dingtalk.DingTalkText(**data: Any)[source]
content: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class notifiers.providers.notify.Notify[source]

Send Notify notifications

name = 'notify'
schema_model

alias of NotifySchema

site_url = 'https://github.com/K0IN/Notify'
class notifiers.providers.notify.NotifyMixin[source]
base_url = '{base_url}/api/notify'
name = 'notify'
path_to_errors = ('message',)
site_url = 'https://github.com/K0IN/Notify'
class notifiers.providers.notify.NotifySchema(**data: Any)[source]
base_url: str
message: str
model_config: ClassVar[ConfigDict] = {'defer_build': True, 'extra': 'forbid', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tags: list[str] | None
title: str
token: str | None