Compare commits
No commits in common. "master" and "0.7.1" have entirely different histories.
46 changed files with 1134 additions and 2801 deletions
94
CHANGELOG.md
94
CHANGELOG.md
|
@ -1,99 +1,5 @@
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### Release 1.2.1
|
|
||||||
|
|
||||||
#### Bugfixes
|
|
||||||
- drop first info event without a version
|
|
||||||
|
|
||||||
### Release 1.2.0
|
|
||||||
|
|
||||||
#### Features
|
|
||||||
- add support for uptime kuma 1.23.0 and 1.23.1
|
|
||||||
|
|
||||||
#### Bugfixes
|
|
||||||
- remove `name` from maintenance monitors and status pages
|
|
||||||
- rstip url globally
|
|
||||||
- convert sendUrl from bool to int
|
|
||||||
- validate accepted status codes types
|
|
||||||
|
|
||||||
### Release 1.1.0
|
|
||||||
|
|
||||||
#### Features
|
|
||||||
- add support for uptime kuma 1.22.0 and 1.22.1
|
|
||||||
|
|
||||||
### Release 1.0.1
|
|
||||||
|
|
||||||
#### Bugfixes
|
|
||||||
- fix ValueError if monitor authMethod is None
|
|
||||||
|
|
||||||
### Release 1.0.0
|
|
||||||
|
|
||||||
#### Features
|
|
||||||
- add `ssl_verify` parameter
|
|
||||||
- add `wait_events` parameter
|
|
||||||
- implement context manager for UptimeKumaApi class
|
|
||||||
- drop Python 3.6 support
|
|
||||||
- implement `get_monitor_status` helper method
|
|
||||||
- implement timeouts for all methods (`timeout` parameter)
|
|
||||||
- add support for uptime kuma 1.21.3
|
|
||||||
- drop support for Uptime Kuma versions < 1.21.3
|
|
||||||
- check for required notification arguments
|
|
||||||
- raise exception when deleting an element that does not exist
|
|
||||||
- replace raw return values with enum values
|
|
||||||
|
|
||||||
#### Bugfixes
|
|
||||||
- adjust monitor `status` type to allow all used values
|
|
||||||
- fix memory leak
|
|
||||||
|
|
||||||
#### BREAKING CHANGES
|
|
||||||
- Python 3.7+ required
|
|
||||||
- maintenance parameter `timezone` renamed to `timezoneOption`
|
|
||||||
- Removed the `wait_timeout` parameter. Use the new `timeout` parameter instead. The `timeout` parameter specifies how many seconds the client should wait for the connection, an expected event or a server response.
|
|
||||||
- changed return values of methods `get_heartbeats`, `get_important_heartbeats`, `avg_ping`, `uptime`, `cert_info`
|
|
||||||
- Uptime Kuma versions < 1.21.3 are not supported in uptime-kuma-api 1.0.0+
|
|
||||||
- Removed the `get_heartbeat` method. This method was never intended to retrieve information. Use `get_heartbeats` or `get_important_heartbeats` instead.
|
|
||||||
- Types of return values changed to enum values:
|
|
||||||
- monitor: `type` (str -> MonitorType), `status` (bool -> MonitorStatus), `authMethod` (str -> AuthMethod)
|
|
||||||
- notification: `type` (str -> NotificationType)
|
|
||||||
- docker host: `dockerType` (str -> DockerType)
|
|
||||||
- status page: `style` (str -> IncidentStyle)
|
|
||||||
- maintenance: `strategy` (str -> MaintenanceStrategy)
|
|
||||||
- proxy: `protocol` (str -> ProxyProtocol)
|
|
||||||
|
|
||||||
### Release 0.13.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.21.2
|
|
||||||
- implement custom socketio headers
|
|
||||||
|
|
||||||
#### Bugfix
|
|
||||||
- do not wait for events that have already arrived
|
|
||||||
|
|
||||||
### Release 0.12.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.21.1
|
|
||||||
|
|
||||||
### Release 0.11.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.21.0
|
|
||||||
|
|
||||||
### Release 0.10.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.20.0
|
|
||||||
|
|
||||||
### Release 0.9.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.19.5
|
|
||||||
|
|
||||||
### Release 0.8.0
|
|
||||||
|
|
||||||
#### Feature
|
|
||||||
- add support for uptime kuma 1.19.3
|
|
||||||
|
|
||||||
### Release 0.7.1
|
### Release 0.7.1
|
||||||
|
|
||||||
#### Bugfix
|
#### Bugfix
|
||||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2023 Lucas Held
|
Copyright (c) 2022 Lucas Held
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
25
README.md
25
README.md
|
@ -6,14 +6,9 @@ uptime-kuma-api is a Python wrapper for the [Uptime Kuma](https://github.com/lou
|
||||||
|
|
||||||
This package was developed to configure Uptime Kuma with Ansible. The Ansible collection can be found at https://github.com/lucasheld/ansible-uptime-kuma.
|
This package was developed to configure Uptime Kuma with Ansible. The Ansible collection can be found at https://github.com/lucasheld/ansible-uptime-kuma.
|
||||||
|
|
||||||
Python version 3.7+ is required.
|
Python version 3.6+ is required.
|
||||||
|
|
||||||
Supported Uptime Kuma versions:
|
Supported Uptime Kuma versions: 1.17.0 - 1.19.2
|
||||||
|
|
||||||
| Uptime Kuma | uptime-kuma-api |
|
|
||||||
|-----------------|-----------------|
|
|
||||||
| 1.21.3 - 1.23.2 | 1.0.0 - 1.2.1 |
|
|
||||||
| 1.17.0 - 1.21.2 | 0.1.0 - 0.13.0 |
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
---
|
---
|
||||||
|
@ -29,7 +24,7 @@ Documentation
|
||||||
---
|
---
|
||||||
The API Reference is available on [Read the Docs](https://uptime-kuma-api.readthedocs.io).
|
The API Reference is available on [Read the Docs](https://uptime-kuma-api.readthedocs.io).
|
||||||
|
|
||||||
Example
|
Examples
|
||||||
---
|
---
|
||||||
Once you have installed the python package, you can use it to communicate with an Uptime Kuma instance.
|
Once you have installed the python package, you can use it to communicate with an Uptime Kuma instance.
|
||||||
|
|
||||||
|
@ -54,17 +49,3 @@ At the end, the connection to the API must be disconnected so that the program d
|
||||||
```python
|
```python
|
||||||
>>> api.disconnect()
|
>>> api.disconnect()
|
||||||
```
|
```
|
||||||
|
|
||||||
With a context manager, the disconnect method is called automatically:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from uptime_kuma_api import UptimeKumaApi
|
|
||||||
|
|
||||||
with UptimeKumaApi('INSERT_URL') as api:
|
|
||||||
api.login('INSERT_USERNAME', 'INSERT_PASSWORD')
|
|
||||||
api.add_monitor(
|
|
||||||
type=MonitorType.HTTP,
|
|
||||||
name="Google",
|
|
||||||
url="https://google.com"
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
Sphinx==5.3.0
|
|
||||||
pyotp==2.8.0
|
|
||||||
Jinja2==3.1.2
|
|
||||||
BeautifulSoup4==4.12.2
|
|
|
@ -19,9 +19,6 @@ Enums
|
||||||
.. autoclass:: MonitorType
|
.. autoclass:: MonitorType
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
.. autoclass:: MonitorStatus
|
|
||||||
:members:
|
|
||||||
|
|
||||||
.. autoclass:: NotificationType
|
.. autoclass:: NotificationType
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
@ -42,5 +39,3 @@ Exceptions
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. autoexception:: UptimeKumaException
|
.. autoexception:: UptimeKumaException
|
||||||
|
|
||||||
.. autoexception:: Timeout
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import uptime_kuma_api
|
||||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
||||||
|
|
||||||
project = 'uptime-kuma-api'
|
project = 'uptime-kuma-api'
|
||||||
copyright = '2023, Lucas Held'
|
copyright = '2022, Lucas Held'
|
||||||
author = 'Lucas Held'
|
author = 'Lucas Held'
|
||||||
|
|
||||||
version = uptime_kuma_api.__version__
|
version = uptime_kuma_api.__version__
|
||||||
|
|
1
docs/requirements.txt
Normal file
1
docs/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Sphinx==5.3.0
|
|
@ -5,7 +5,7 @@ if [ $version ]
|
||||||
then
|
then
|
||||||
versions=("$version")
|
versions=("$version")
|
||||||
else
|
else
|
||||||
versions=(1.23.2 1.23.0 1.22.1 1.22.0 1.21.3)
|
versions=(1.19.2 1.18.5 1.17.1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for version in ${versions[*]}
|
for version in ${versions[*]}
|
||||||
|
@ -23,7 +23,6 @@ do
|
||||||
|
|
||||||
echo "Stopping uptime kuma..."
|
echo "Stopping uptime kuma..."
|
||||||
docker stop uptimekuma > /dev/null
|
docker stop uptimekuma > /dev/null
|
||||||
sleep 1
|
|
||||||
|
|
||||||
echo ''
|
echo ''
|
||||||
done
|
done
|
||||||
|
|
|
@ -1,57 +1,37 @@
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
|
|
||||||
from utils import deduplicate_list, parse_vue_template, diff, type_html_to_py
|
from utils import deduplicate_list, parse_vue_template
|
||||||
|
|
||||||
|
|
||||||
input_ignores = {
|
ROOT = "uptime-kuma"
|
||||||
"settings": [
|
|
||||||
"$root.styleElapsedTime"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def parse_model_keys(content, object_name):
|
def parse_model_keys(content, object_name):
|
||||||
soup = BeautifulSoup(content, "html.parser")
|
match = re.findall(object_name + r"\.[0-9a-zA-Z_$]+", content)
|
||||||
|
keys = []
|
||||||
soup_inputs = soup.find_all(attrs={"v-model": True})
|
for m in match:
|
||||||
inputs = []
|
key = m.replace(object_name + ".", "")
|
||||||
for soup_input in soup_inputs:
|
keys.append(key)
|
||||||
key = soup_input["v-model"]
|
keys = deduplicate_list(keys)
|
||||||
if key in input_ignores.get(object_name, []):
|
return keys
|
||||||
continue
|
|
||||||
else:
|
|
||||||
key = re.sub(r'^' + object_name + r'\.', "", key)
|
|
||||||
type_ = soup_input.get("type", "text")
|
|
||||||
type_ = type_html_to_py(type_)
|
|
||||||
if type_ == "bool":
|
|
||||||
value = True if soup_input.get("checked") else False
|
|
||||||
else:
|
|
||||||
value = soup_input.get("value")
|
|
||||||
inputs.append({
|
|
||||||
"key": key,
|
|
||||||
"type": type_,
|
|
||||||
"default": value,
|
|
||||||
})
|
|
||||||
return inputs
|
|
||||||
|
|
||||||
|
|
||||||
def parse_proxy_keys(root):
|
def parse_proxy_keys():
|
||||||
content = parse_vue_template(f"{root}/src/components/ProxyDialog.vue")
|
content = parse_vue_template(f"{ROOT}/src/components/ProxyDialog.vue")
|
||||||
keys = parse_model_keys(content, "proxy")
|
keys = parse_model_keys(content, "proxy")
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_notification_keys(root):
|
def parse_notification_keys():
|
||||||
content = parse_vue_template(f"{root}/src/components/NotificationDialog.vue")
|
content = parse_vue_template(f"{ROOT}/src/components/NotificationDialog.vue")
|
||||||
keys = parse_model_keys(content, "notification")
|
keys = parse_model_keys(content, "notification")
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_settings_keys(root):
|
def parse_settings_keys():
|
||||||
all_keys = []
|
all_keys = []
|
||||||
for path in glob.glob(f'{root}/src/components/settings/*'):
|
for path in glob.glob('uptime-kuma/src/components/settings/*'):
|
||||||
content = parse_vue_template(path)
|
content = parse_vue_template(path)
|
||||||
keys = parse_model_keys(content, "settings")
|
keys = parse_model_keys(content, "settings")
|
||||||
all_keys.extend(keys)
|
all_keys.extend(keys)
|
||||||
|
@ -59,20 +39,20 @@ def parse_settings_keys(root):
|
||||||
return all_keys
|
return all_keys
|
||||||
|
|
||||||
|
|
||||||
def parse_monitor_keys(root):
|
def parse_monitor_keys():
|
||||||
content = parse_vue_template(f"{root}/src/pages/EditMonitor.vue")
|
content = parse_vue_template(f"{ROOT}/src/pages/EditMonitor.vue")
|
||||||
keys = parse_model_keys(content, "monitor")
|
keys = parse_model_keys(content, "monitor")
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_status_page_keys(root):
|
def parse_status_page_keys():
|
||||||
all_keys = ["id"]
|
all_keys = ["id"]
|
||||||
|
|
||||||
content = parse_vue_template(f"{root}/src/pages/StatusPage.vue")
|
content = parse_vue_template(f"{ROOT}/src/pages/StatusPage.vue")
|
||||||
keys = parse_model_keys(content, "config")
|
keys = parse_model_keys(content, "config")
|
||||||
all_keys.extend(keys)
|
all_keys.extend(keys)
|
||||||
|
|
||||||
content = parse_vue_template(f"{root}/src/pages/ManageStatusPage.vue")
|
content = parse_vue_template(f"{ROOT}/src/pages/ManageStatusPage.vue")
|
||||||
keys = parse_model_keys(content, "statusPage")
|
keys = parse_model_keys(content, "statusPage")
|
||||||
all_keys.extend(keys)
|
all_keys.extend(keys)
|
||||||
|
|
||||||
|
@ -80,28 +60,30 @@ def parse_status_page_keys(root):
|
||||||
return all_keys
|
return all_keys
|
||||||
|
|
||||||
|
|
||||||
def parse_maintenance_keys(root):
|
def parse_maintenance_keys():
|
||||||
content = parse_vue_template(f"{root}/src/pages/EditMaintenance.vue")
|
content = parse_vue_template(f"{ROOT}/src/pages/EditMaintenance.vue")
|
||||||
keys = parse_model_keys(content, "maintenance")
|
keys = parse_model_keys(content, "maintenance")
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
root_old = "uptime-kuma-old"
|
proxy_keys = parse_proxy_keys()
|
||||||
root_new = "uptime-kuma"
|
print("proxy:", proxy_keys)
|
||||||
|
|
||||||
for name, func in [
|
notification_keys = parse_notification_keys()
|
||||||
["proxy", parse_proxy_keys],
|
print("notification:", notification_keys)
|
||||||
["notification", parse_notification_keys],
|
|
||||||
["settings", parse_settings_keys],
|
settings_keys = parse_settings_keys()
|
||||||
["monitor", parse_monitor_keys],
|
print("settings:", settings_keys)
|
||||||
["status_page", parse_status_page_keys],
|
|
||||||
["maintenance", parse_maintenance_keys],
|
monitor_keys = parse_monitor_keys()
|
||||||
]:
|
print("monitor:", monitor_keys)
|
||||||
keys_old = func(root_old)
|
|
||||||
keys_new = func(root_new)
|
status_page_keys = parse_status_page_keys()
|
||||||
print(f"{name}:")
|
print("status_page:", status_page_keys)
|
||||||
diff(keys_old, keys_new)
|
|
||||||
|
maintenance_keys = parse_maintenance_keys()
|
||||||
|
print("maintenance:", maintenance_keys)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import re
|
import re
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
from utils import deduplicate_list, diff
|
from utils import deduplicate_list
|
||||||
|
|
||||||
|
|
||||||
def parse_json_keys(data):
|
def parse_json_keys(data):
|
||||||
|
@ -18,8 +19,17 @@ def parse_json_keys(data):
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_heartbeat(root):
|
# def parse_object_keys(code, object_name):
|
||||||
with open(f'{root}/server/model/heartbeat.js') as f:
|
# match = re.findall(object_name + r'\.[0-9a-zA-Z_$]+', code)
|
||||||
|
# keys = []
|
||||||
|
# for m in match:
|
||||||
|
# key = m.replace(object_name + ".", "")
|
||||||
|
# keys.append(key)
|
||||||
|
# return list(set(keys))
|
||||||
|
|
||||||
|
|
||||||
|
def parse_heartbeat():
|
||||||
|
with open('uptime-kuma/server/model/heartbeat.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
all_keys = []
|
all_keys = []
|
||||||
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
||||||
|
@ -34,8 +44,8 @@ def parse_heartbeat(root):
|
||||||
return all_keys
|
return all_keys
|
||||||
|
|
||||||
|
|
||||||
def parse_incident(root):
|
def parse_incident():
|
||||||
with open(f'{root}/server/model/incident.js') as f:
|
with open('uptime-kuma/server/model/incident.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
match = re.search(r'toPublicJSON\(\) {\s+return.*{([^}]+)}', content)
|
match = re.search(r'toPublicJSON\(\) {\s+return.*{([^}]+)}', content)
|
||||||
data = match.group(1)
|
data = match.group(1)
|
||||||
|
@ -43,9 +53,9 @@ def parse_incident(root):
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_monitor(root):
|
def parse_monitor():
|
||||||
# todo: toPublicJSON ???
|
# todo: toPublicJSON ???
|
||||||
with open(f'{root}/server/model/monitor.js') as f:
|
with open('uptime-kuma/server/model/monitor.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
matches = re.findall(r'data = {([^}]+)}', content)
|
matches = re.findall(r'data = {([^}]+)}', content)
|
||||||
all_keys = []
|
all_keys = []
|
||||||
|
@ -57,8 +67,8 @@ def parse_monitor(root):
|
||||||
return all_keys
|
return all_keys
|
||||||
|
|
||||||
|
|
||||||
def parse_proxy(root):
|
def parse_proxy():
|
||||||
with open(f'{root}/server/model/proxy.js') as f:
|
with open('uptime-kuma/server/model/proxy.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
||||||
data = match.group(1)
|
data = match.group(1)
|
||||||
|
@ -89,7 +99,7 @@ def parse_proxy(root):
|
||||||
|
|
||||||
# # input (add, edit proxy)
|
# # input (add, edit proxy)
|
||||||
# def parse_proxy2():
|
# def parse_proxy2():
|
||||||
# with open(f'{root}/server/proxy.js') as f:
|
# with open('uptime-kuma/server/proxy.js') as f:
|
||||||
# content = f.read()
|
# content = f.read()
|
||||||
#
|
#
|
||||||
# code = parse_function(r'async save\([^)]+\) ', content)
|
# code = parse_function(r'async save\([^)]+\) ', content)
|
||||||
|
@ -97,8 +107,8 @@ def parse_proxy(root):
|
||||||
# return keys
|
# return keys
|
||||||
|
|
||||||
|
|
||||||
def parse_status_page(root):
|
def parse_status_page():
|
||||||
with open(f'{root}/server/model/status_page.js') as f:
|
with open('uptime-kuma/server/model/status_page.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
all_keys = []
|
all_keys = []
|
||||||
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
||||||
|
@ -113,8 +123,8 @@ def parse_status_page(root):
|
||||||
return all_keys
|
return all_keys
|
||||||
|
|
||||||
|
|
||||||
def parse_tag(root):
|
def parse_tag():
|
||||||
with open(f'{root}/server/model/tag.js') as f:
|
with open('uptime-kuma/server/model/tag.js') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
match = re.search(r'toJSON\(\) {\s+return.*{([^}]+)}', content)
|
||||||
data = match.group(1)
|
data = match.group(1)
|
||||||
|
@ -122,22 +132,33 @@ def parse_tag(root):
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
print("heartbeat")
|
||||||
root_old = "uptime-kuma-old"
|
pprint(parse_heartbeat())
|
||||||
root_new = "uptime-kuma"
|
print("")
|
||||||
|
|
||||||
for name, func in [
|
print("incident")
|
||||||
["heartbeat", parse_heartbeat],
|
pprint(parse_incident())
|
||||||
["incident", parse_incident],
|
print("")
|
||||||
["monitor", parse_monitor],
|
|
||||||
["proxy", parse_proxy],
|
print("monitor")
|
||||||
["status page", parse_status_page],
|
pprint(parse_monitor())
|
||||||
["tag", parse_tag],
|
print("")
|
||||||
]:
|
|
||||||
keys_old = func(root_old)
|
print("proxy")
|
||||||
keys_new = func(root_new)
|
pprint(parse_proxy())
|
||||||
print(f"{name}:")
|
print("")
|
||||||
diff(keys_old, keys_new)
|
|
||||||
|
# print("prox2")
|
||||||
|
# pprint(parse_proxy2())
|
||||||
|
# print("")
|
||||||
|
|
||||||
|
print("status page")
|
||||||
|
pprint(parse_status_page())
|
||||||
|
print("")
|
||||||
|
|
||||||
|
print("tag")
|
||||||
|
pprint(parse_tag())
|
||||||
|
print("")
|
||||||
|
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
|
|
|
@ -3,32 +3,6 @@ from bs4 import BeautifulSoup
|
||||||
from utils import parse_vue_template, write_to_file
|
from utils import parse_vue_template, write_to_file
|
||||||
|
|
||||||
|
|
||||||
titles = {
|
|
||||||
"http": "HTTP(s)",
|
|
||||||
"port": "TCP Port",
|
|
||||||
"ping": "Ping",
|
|
||||||
"keyword": "HTTP(s) - Keyword",
|
|
||||||
"grpc-keyword": "gRPC(s) - Keyword",
|
|
||||||
"dns": "DNS",
|
|
||||||
"docker": "Docker Container",
|
|
||||||
"push": "Push",
|
|
||||||
"steam": "Steam Game Server",
|
|
||||||
"gamedig": "GameDig",
|
|
||||||
"mqtt": "MQTT",
|
|
||||||
"sqlserver": "Microsoft SQL Server",
|
|
||||||
"postgres": "PostgreSQL",
|
|
||||||
"mysql": "MySQL/MariaDB",
|
|
||||||
"mongodb": "MongoDB",
|
|
||||||
"radius": "Radius",
|
|
||||||
"redis": "Redis",
|
|
||||||
"group": "Group",
|
|
||||||
"json-query": "HTTP(s) - Json Query",
|
|
||||||
"real-browser": "HTTP(s) - Browser Engine (Chrome/Chromium)",
|
|
||||||
"kafka-producer": "Kafka Producer",
|
|
||||||
"tailscale-ping": "Tailscale Ping"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def parse_monitor_types():
|
def parse_monitor_types():
|
||||||
content = parse_vue_template("uptime-kuma/src/pages/EditMonitor.vue")
|
content = parse_vue_template("uptime-kuma/src/pages/EditMonitor.vue")
|
||||||
|
|
||||||
|
@ -36,13 +10,10 @@ def parse_monitor_types():
|
||||||
select = soup.find("select", id="type")
|
select = soup.find("select", id="type")
|
||||||
options = select.find_all("option")
|
options = select.find_all("option")
|
||||||
|
|
||||||
types = {}
|
types = []
|
||||||
for o in options:
|
for o in options:
|
||||||
type_ = o.attrs["value"]
|
type_ = o.attrs["value"]
|
||||||
types[type_] = {
|
types.append(type_)
|
||||||
"value": type_,
|
|
||||||
"title": titles[type_]
|
|
||||||
}
|
|
||||||
return types
|
return types
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,109 +1,7 @@
|
||||||
from uptime_kuma_api import notification_provider_options
|
from uptime_kuma_api import notification_provider_options
|
||||||
|
|
||||||
data = {
|
|
||||||
"lunaseaTarget": """Allowed values: "device", "user".""",
|
|
||||||
|
|
||||||
"lunaseaUserID": """User ID.""",
|
|
||||||
|
|
||||||
"lunaseaDevice": """Device ID.""",
|
|
||||||
|
|
||||||
"pagertreeAutoResolve": """
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``0``: Do Nothing
|
|
||||||
- ``resolve``: Auto Resolve""",
|
|
||||||
|
|
||||||
"pagertreeUrgency": """
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``silent``: Silent
|
|
||||||
- ``low``: Low
|
|
||||||
- ``medium``: Medium
|
|
||||||
- ``high``: High
|
|
||||||
- ``critical``: Critical""",
|
|
||||||
|
|
||||||
"promosmsAllowLongSMS": "Allow long SMS.",
|
|
||||||
|
|
||||||
"promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes).",
|
|
||||||
|
|
||||||
"promosmsSMSType": """
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``0``: SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.
|
|
||||||
- ``1``: SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.
|
|
||||||
- ``3``: SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.
|
|
||||||
- ``4``: SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).""",
|
|
||||||
|
|
||||||
"smseagleEncoding": "True to send messages in unicode.",
|
|
||||||
|
|
||||||
"smseaglePriority": "Message priority (0-9, default = 0).",
|
|
||||||
|
|
||||||
"smseagleRecipientType": """Recipient type.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``smseagle-to``: Phone number(s)
|
|
||||||
- ``smseagle-group``: Phonebook group name(s)
|
|
||||||
- ``smseagle-contact``: Phonebook contact name(s)""",
|
|
||||||
|
|
||||||
"smseagleToken": "API Access token.",
|
|
||||||
|
|
||||||
"smseagleRecipient": "Recipient(s) (multiple must be separated with comma).",
|
|
||||||
|
|
||||||
"smseagleUrl": "Your SMSEagle device URL.",
|
|
||||||
|
|
||||||
"splunkAutoResolve": """Auto resolve or acknowledged.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``0``: do nothing
|
|
||||||
- ``ACKNOWLEDGEMENT``: auto acknowledged
|
|
||||||
- ``RECOVERY``: auto resolve""",
|
|
||||||
|
|
||||||
"splunkSeverity": """Severity.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``INFO``
|
|
||||||
- ``WARNING``
|
|
||||||
- ``CRITICAL``""",
|
|
||||||
|
|
||||||
"splunkRestURL": "Splunk Rest URL.",
|
|
||||||
|
|
||||||
"opsgeniePriority": "Priority. Available values are numbers between ``1`` and ``5``.",
|
|
||||||
|
|
||||||
"opsgenieRegion": """Region. Available values are:
|
|
||||||
|
|
||||||
- ``us``: US (Default)
|
|
||||||
- ``eu``: EU""",
|
|
||||||
|
|
||||||
"opsgenieApiKey": "API Key.",
|
|
||||||
|
|
||||||
"twilioAccountSID": "Account SID.",
|
|
||||||
|
|
||||||
"twilioAuthToken": "Auth Token.",
|
|
||||||
|
|
||||||
"twilioToNumber": "To Number.",
|
|
||||||
|
|
||||||
"twilioFromNumber": "From Number.",
|
|
||||||
|
|
||||||
"pushoverttl": "Message TTL (Seconds).",
|
|
||||||
|
|
||||||
"ntfyaccesstoken": "Access Token.",
|
|
||||||
|
|
||||||
"ntfyAuthenticationMethod": "Authentication Method.",
|
|
||||||
}
|
|
||||||
|
|
||||||
for provider in notification_provider_options:
|
for provider in notification_provider_options:
|
||||||
provider_options = notification_provider_options[provider]
|
provider_options = notification_provider_options[provider]
|
||||||
for option in provider_options:
|
for option in provider_options:
|
||||||
type_ = provider_options[option]["type"]
|
type_ = provider_options[option]["type"]
|
||||||
required = provider_options[option]["required"]
|
print(f":param {type_} {option}: (optional) Notification option for ``type`` :attr:`~.NotificationType.{provider.name}`")
|
||||||
text = data.get(option)
|
|
||||||
line = f":param {type_}{', optional' if required else ''} {option}: Notification option for ``type`` :attr:`~.NotificationType.{provider.name}`."
|
|
||||||
if text:
|
|
||||||
line += f" {text}"
|
|
||||||
print(line)
|
|
||||||
|
|
|
@ -3,96 +3,12 @@ import re
|
||||||
|
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
from utils import deduplicate_list, write_to_file, type_html_to_py
|
from utils import deduplicate_list, write_to_file
|
||||||
|
|
||||||
|
|
||||||
# deprecated or wrong inputs
|
def build_notification_providers(root):
|
||||||
ignored_inputs = {
|
providers = []
|
||||||
"slack": [
|
for path in glob.glob(f'{root}/server/notification-providers/*'):
|
||||||
"slackbutton"
|
|
||||||
],
|
|
||||||
"rocket.chat": [
|
|
||||||
"rocketbutton"
|
|
||||||
],
|
|
||||||
"octopush": [
|
|
||||||
"octopushDMLogin",
|
|
||||||
"octopushDMAPIKey",
|
|
||||||
"octopushDMPhoneNumber",
|
|
||||||
"octopushDMSenderName",
|
|
||||||
"octopushDMSMSType"
|
|
||||||
],
|
|
||||||
"Splunk": [
|
|
||||||
"pagerdutyIntegrationKey"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
input_overwrites = {
|
|
||||||
"showAdditionalHeadersField": "webhookAdditionalHeaders"
|
|
||||||
}
|
|
||||||
|
|
||||||
titles = {
|
|
||||||
"alerta": "Alerta",
|
|
||||||
"AlertNow": "AlertNow",
|
|
||||||
"apprise": "Apprise (Support 50+ Notification services)",
|
|
||||||
"Bark": "Bark",
|
|
||||||
"clicksendsms": "ClickSend SMS",
|
|
||||||
"discord": "Discord",
|
|
||||||
"GoogleChat": "Google Chat (Google Workspace)",
|
|
||||||
"gorush": "Gorush",
|
|
||||||
"gotify": "Gotify",
|
|
||||||
"HomeAssistant": "Home Assistant",
|
|
||||||
"Kook": "Kook",
|
|
||||||
"line": "LINE Messenger",
|
|
||||||
"LineNotify": "LINE Notify",
|
|
||||||
"lunasea": "LunaSea",
|
|
||||||
"matrix": "Matrix",
|
|
||||||
"mattermost": "Mattermost",
|
|
||||||
"ntfy": "Ntfy",
|
|
||||||
"octopush": "Octopush",
|
|
||||||
"OneBot": "OneBot",
|
|
||||||
"Opsgenie": "Opsgenie",
|
|
||||||
"PagerDuty": "PagerDuty",
|
|
||||||
"PagerTree": "PagerTree",
|
|
||||||
"pushbullet": "Pushbullet",
|
|
||||||
"PushByTechulus": "Push by Techulus",
|
|
||||||
"pushover": "Pushover",
|
|
||||||
"pushy": "Pushy",
|
|
||||||
"rocket.chat": "Rocket.Chat",
|
|
||||||
"signal": "Signal",
|
|
||||||
"slack": "Slack",
|
|
||||||
"squadcast": "SquadCast",
|
|
||||||
"SMSEagle": "SMSEagle",
|
|
||||||
"smtp": "Email (SMTP)",
|
|
||||||
"stackfield": "Stackfield",
|
|
||||||
"teams": "Microsoft Teams",
|
|
||||||
"telegram": "Telegram",
|
|
||||||
"twilio": "Twilio",
|
|
||||||
"Splunk": "Splunk",
|
|
||||||
"webhook": "Webhook",
|
|
||||||
"GoAlert": "GoAlert",
|
|
||||||
"ZohoCliq": "ZohoCliq",
|
|
||||||
"AliyunSMS": "AliyunSMS",
|
|
||||||
"DingDing": "DingDing",
|
|
||||||
"Feishu": "Feishu",
|
|
||||||
"FreeMobile": "FreeMobile (mobile.free.fr)",
|
|
||||||
"PushDeer": "PushDeer",
|
|
||||||
"promosms": "PromoSMS",
|
|
||||||
"serwersms": "SerwerSMS.pl",
|
|
||||||
"SMSManager": "SmsManager (smsmanager.cz)",
|
|
||||||
"WeCom": "WeCom",
|
|
||||||
"ServerChan": "ServerChan",
|
|
||||||
"nostr": "Nostr",
|
|
||||||
"FlashDuty": "FlashDuty",
|
|
||||||
"smsc": "SMSC",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def build_notification_providers():
|
|
||||||
root = "uptime-kuma"
|
|
||||||
providers = {}
|
|
||||||
|
|
||||||
# get providers and input names
|
|
||||||
for path in sorted(glob.glob(f'{root}/server/notification-providers/*')):
|
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
match = re.search(r'class [^ ]+ extends NotificationProvider {', content)
|
match = re.search(r'class [^ ]+ extends NotificationProvider {', content)
|
||||||
|
@ -100,19 +16,19 @@ def build_notification_providers():
|
||||||
match = re.search(r'name = "([^"]+)";', content)
|
match = re.search(r'name = "([^"]+)";', content)
|
||||||
name = match.group(1)
|
name = match.group(1)
|
||||||
|
|
||||||
inputs = re.findall(r'notification\??\.([^ ,.;})\]]+)', content)
|
inputs = re.findall(r'notification\.([^ ,.;})\]]+)', content)
|
||||||
inputs = deduplicate_list(inputs)
|
inputs = deduplicate_list(inputs)
|
||||||
inputs = [i.strip() for i in inputs]
|
inputs = [i.strip() for i in inputs]
|
||||||
|
|
||||||
providers[name] = {
|
providers.append({
|
||||||
"title": titles[name],
|
"name": name,
|
||||||
"inputs": {},
|
"inputs": inputs,
|
||||||
}
|
})
|
||||||
for input_ in inputs:
|
return providers
|
||||||
if input_ not in ignored_inputs.get(name, []):
|
|
||||||
providers[name]["inputs"][input_] = {}
|
|
||||||
|
|
||||||
# get inputs
|
|
||||||
|
def build_notification_provider_conditions(root):
|
||||||
|
conditions = {}
|
||||||
for path in glob.glob(f'{root}/src/components/notifications/*'):
|
for path in glob.glob(f'{root}/src/components/notifications/*'):
|
||||||
if path.endswith("index.js"):
|
if path.endswith("index.js"):
|
||||||
continue
|
continue
|
||||||
|
@ -121,62 +37,43 @@ def build_notification_providers():
|
||||||
match = re.search(r'<template>[\s\S]+</template>', content, re.MULTILINE)
|
match = re.search(r'<template>[\s\S]+</template>', content, re.MULTILINE)
|
||||||
html = match.group(0)
|
html = match.group(0)
|
||||||
soup = BeautifulSoup(html, "html.parser")
|
soup = BeautifulSoup(html, "html.parser")
|
||||||
inputs = soup.find_all(attrs={"v-model": True})
|
inputs = soup.find_all("input")
|
||||||
for input_ in inputs:
|
for input in inputs:
|
||||||
conditions = {}
|
condition = {}
|
||||||
attrs = input_.attrs
|
attrs = input.attrs
|
||||||
v_model = attrs.get("v-model")
|
v_model = attrs.get("v-model")
|
||||||
|
|
||||||
v_model_overwrite = input_overwrites.get(v_model)
|
|
||||||
if v_model_overwrite:
|
|
||||||
param_name = v_model_overwrite
|
|
||||||
else:
|
|
||||||
param_name = re.match(r'\$parent.notification.(.*)$', v_model).group(1)
|
|
||||||
|
|
||||||
type_ = attrs.get("type")
|
|
||||||
type_ = type_html_to_py(type_)
|
|
||||||
|
|
||||||
required_true_values = ['', 'true']
|
|
||||||
if attrs.get("required") in required_true_values or attrs.get(":required") in required_true_values:
|
|
||||||
required = True
|
|
||||||
else:
|
|
||||||
required = False
|
|
||||||
|
|
||||||
min_ = attrs.get("min")
|
min_ = attrs.get("min")
|
||||||
if min_:
|
|
||||||
conditions["min"] = int(min_)
|
|
||||||
|
|
||||||
max_ = attrs.get("max")
|
max_ = attrs.get("max")
|
||||||
|
if min_:
|
||||||
|
condition["min"] = int(min_)
|
||||||
if max_:
|
if max_:
|
||||||
conditions["max"] = int(max_)
|
condition["max"] = int(max_)
|
||||||
|
param_name = re.match(r'\$parent.notification.(.*)$', v_model).group(1)
|
||||||
# find provider inputs dict
|
if condition:
|
||||||
input_found = False
|
conditions[param_name] = condition
|
||||||
for name in list(providers.keys()):
|
return conditions
|
||||||
inputs = providers[name]["inputs"]
|
|
||||||
for provider_input in inputs:
|
|
||||||
if provider_input == param_name:
|
|
||||||
input_found = True
|
|
||||||
providers[name]["inputs"][provider_input] = {
|
|
||||||
"conditions": conditions,
|
|
||||||
"type": type_,
|
|
||||||
"required": required
|
|
||||||
}
|
|
||||||
assert input_found
|
|
||||||
return providers
|
|
||||||
|
|
||||||
|
|
||||||
notification_providers = build_notification_providers()
|
def diff(old, new):
|
||||||
|
for i in new:
|
||||||
|
if i not in old:
|
||||||
|
print("+", i)
|
||||||
|
for i in old:
|
||||||
|
if i not in new:
|
||||||
|
print("-", i)
|
||||||
|
print("")
|
||||||
|
|
||||||
notification_provider_conditions = {}
|
|
||||||
for notification_provider in notification_providers:
|
|
||||||
for notification_provider_input_name in notification_providers[notification_provider]["inputs"]:
|
|
||||||
notification_provider_input = notification_providers[notification_provider]["inputs"][notification_provider_input_name]
|
|
||||||
if notification_provider_input["conditions"]:
|
|
||||||
notification_provider_conditions[notification_provider_input_name] = notification_provider_input["conditions"]
|
|
||||||
|
|
||||||
write_to_file(
|
# write_to_file(
|
||||||
"notification_providers.py.j2", "./../uptime_kuma_api/notification_providers.py",
|
# "notification_providers.py.j2", "./../uptime_kuma_api/notification_providers.py",
|
||||||
notification_providers=notification_providers,
|
# notification_providers=notification_providers,
|
||||||
notification_provider_conditions=notification_provider_conditions
|
# notification_provider_conditions=notification_provider_conditions
|
||||||
)
|
# )
|
||||||
|
|
||||||
|
notification_providers_old = build_notification_providers("uptime-kuma-old")
|
||||||
|
notification_providers_new = build_notification_providers("uptime-kuma")
|
||||||
|
diff(notification_providers_old, notification_providers_new)
|
||||||
|
|
||||||
|
notification_provider_conditions_old = build_notification_provider_conditions("uptime-kuma-old")
|
||||||
|
notification_provider_conditions_new = build_notification_provider_conditions("uptime-kuma")
|
||||||
|
diff(notification_provider_conditions_old, notification_provider_conditions_new)
|
||||||
|
|
6
scripts/models/notification.py
Normal file
6
scripts/models/notification.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
notification = [
|
||||||
|
"type",
|
||||||
|
"isDefault",
|
||||||
|
"userId",
|
||||||
|
"applyExisting",
|
||||||
|
]
|
|
@ -2,10 +2,7 @@ from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
class MonitorType(str, Enum):
|
class MonitorType(str, Enum):
|
||||||
"""Enumerate monitor types."""
|
{%- for name in monitor_types %}
|
||||||
{{""}}
|
{{ name.upper() }} = "{{ name }}"
|
||||||
{%- for type_ in monitor_types.values() %}
|
{%- endfor %}
|
||||||
{{ type_["value"].upper().replace("-", "_") }} = "{{ type_["value"] }}"
|
|
||||||
"""{{ type_["title"] }}"""
|
|
||||||
{% endfor -%}
|
|
||||||
|
|
||||||
|
|
|
@ -2,30 +2,30 @@ from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
class NotificationType(str, Enum):
|
class NotificationType(str, Enum):
|
||||||
"""Enumerate notification types."""
|
{%- for notification_provider in notification_providers %}
|
||||||
{% for provider in notification_providers %}
|
{%- set name = notification_provider["name"] %}
|
||||||
{{ provider.upper().replace(".", "_") }} = "{{ provider }}"
|
{{ name.upper().replace(".", "_") }} = "{{ name }}"
|
||||||
"""{{ notification_providers[provider]["title"] }}"""
|
{%- endfor %}
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
notification_provider_options = {
|
notification_provider_options = {
|
||||||
{%- for provider in notification_providers %}
|
{%- for notification_provider in notification_providers %}
|
||||||
NotificationType.{{ provider.upper().replace(".", "_") }}: dict(
|
{%- set name = notification_provider["name"] %}
|
||||||
{%- for input_name in notification_providers[provider]["inputs"] %}
|
NotificationType.{{ name.upper().replace(".", "_") }}: [
|
||||||
{%- set input = notification_providers[provider]["inputs"][input_name] %}
|
{%- for input in notification_provider["inputs"] %}
|
||||||
{{ input_name }}=dict(type="{{ input["type"] }}", required={{ input["required"] }}),
|
"{{ input }}",
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
),
|
],
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
notification_provider_conditions = dict(
|
notification_provider_conditions = {
|
||||||
{%- for provider in notification_provider_conditions %}
|
{%- for provider in notification_provider_conditions %}
|
||||||
{{ provider }}=dict(
|
"{{ provider }}": {
|
||||||
{%- for key, value in notification_provider_conditions[provider].items() %}
|
{%- for key, value in notification_provider_conditions[provider].items() %}
|
||||||
{{ key }}={{ value }},
|
"{{ key }}": {{ value }},
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
),
|
},
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
)
|
}
|
||||||
|
|
||||||
|
|
2
scripts/requirenents.txt
Normal file
2
scripts/requirenents.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Jinja2==3.1.2
|
||||||
|
BeautifulSoup4==4.11.1
|
|
@ -24,23 +24,3 @@ def write_to_file(template, destination, **kwargs):
|
||||||
rendered = template.render(**kwargs)
|
rendered = template.render(**kwargs)
|
||||||
with open(destination, "w") as f:
|
with open(destination, "w") as f:
|
||||||
f.write(rendered)
|
f.write(rendered)
|
||||||
|
|
||||||
|
|
||||||
def diff(old, new):
|
|
||||||
for i in new:
|
|
||||||
if i not in old:
|
|
||||||
print("+", i)
|
|
||||||
for i in old:
|
|
||||||
if i not in new:
|
|
||||||
print("-", i)
|
|
||||||
print("")
|
|
||||||
|
|
||||||
|
|
||||||
def type_html_to_py(type_):
|
|
||||||
if type_ == "number":
|
|
||||||
type_ = "int"
|
|
||||||
elif type_ == "checkbox":
|
|
||||||
type_ = "bool"
|
|
||||||
else:
|
|
||||||
type_ = "str"
|
|
||||||
return type_
|
|
||||||
|
|
5
setup.py
5
setup.py
|
@ -29,13 +29,13 @@ setup(
|
||||||
author_email="lucasheld@hotmail.de",
|
author_email="lucasheld@hotmail.de",
|
||||||
license=info["__license__"],
|
license=info["__license__"],
|
||||||
packages=["uptime_kuma_api"],
|
packages=["uptime_kuma_api"],
|
||||||
python_requires=">=3.7, <4",
|
python_requires=">=3.6, <4",
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"python-socketio[client]>=5.0.0",
|
"python-socketio[client]>=5.0.0",
|
||||||
"packaging"
|
"packaging"
|
||||||
],
|
],
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 1 - Planning",
|
||||||
"Environment :: Web Environment",
|
"Environment :: Web Environment",
|
||||||
"Intended Audience :: Developers",
|
"Intended Audience :: Developers",
|
||||||
"License :: OSI Approved :: MIT License",
|
"License :: OSI Approved :: MIT License",
|
||||||
|
@ -43,6 +43,7 @@ setup(
|
||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
"Programming Language :: Python",
|
"Programming Language :: Python",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3.6",
|
||||||
"Programming Language :: Python :: 3.7",
|
"Programming Language :: Python :: 3.7",
|
||||||
"Programming Language :: Python :: 3.8",
|
"Programming Language :: Python :: 3.8",
|
||||||
"Programming Language :: Python :: 3.9",
|
"Programming Language :: Python :: 3.9",
|
||||||
|
|
1
tests/requirements.txt
Normal file
1
tests/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pyotp==2.6.0
|
|
@ -1,59 +0,0 @@
|
||||||
import unittest
|
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaException
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
|
||||||
|
|
||||||
|
|
||||||
class TestApiKey(UptimeKumaTestCase):
|
|
||||||
def test_api_key(self):
|
|
||||||
# get empty list to make sure that future accesses will also work
|
|
||||||
self.api.get_api_keys()
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
"name": "name 1",
|
|
||||||
"expires": "2023-03-30 12:20:00",
|
|
||||||
"active": True
|
|
||||||
}
|
|
||||||
|
|
||||||
# add api key
|
|
||||||
r = self.api.add_api_key(**expected)
|
|
||||||
self.assertEqual(r["msg"], "Added Successfully.")
|
|
||||||
api_key_id = r["keyID"]
|
|
||||||
|
|
||||||
# get api key
|
|
||||||
api_key = self.api.get_api_key(api_key_id)
|
|
||||||
self.compare(api_key, expected)
|
|
||||||
|
|
||||||
# get api keys
|
|
||||||
api_keys = self.api.get_api_keys()
|
|
||||||
api_key = self.find_by_id(api_keys, api_key_id)
|
|
||||||
self.assertIsNotNone(api_key)
|
|
||||||
self.compare(api_key, expected)
|
|
||||||
|
|
||||||
# disable api key
|
|
||||||
r = self.api.disable_api_key(api_key_id)
|
|
||||||
self.assertEqual(r["msg"], "Disabled Successfully.")
|
|
||||||
api_key = self.api.get_api_key(api_key_id)
|
|
||||||
expected["active"] = False
|
|
||||||
self.compare(api_key, expected)
|
|
||||||
|
|
||||||
# enable api key
|
|
||||||
r = self.api.enable_api_key(api_key_id)
|
|
||||||
self.assertEqual(r["msg"], "Enabled Successfully")
|
|
||||||
api_key = self.api.get_api_key(api_key_id)
|
|
||||||
expected["active"] = True
|
|
||||||
self.compare(api_key, expected)
|
|
||||||
|
|
||||||
# delete api key
|
|
||||||
r = self.api.delete_api_key(api_key_id)
|
|
||||||
self.assertEqual(r["msg"], "Deleted Successfully.")
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.get_api_key(api_key_id)
|
|
||||||
|
|
||||||
def test_delete_not_existing_api_key(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_api_key(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
|
@ -6,6 +6,12 @@ from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestDockerHost(UptimeKumaTestCase):
|
class TestDockerHost(UptimeKumaTestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(TestDockerHost, self).setUp()
|
||||||
|
if parse_version(self.api.version) < parse_version("1.18"):
|
||||||
|
super(TestDockerHost, self).tearDown()
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
def test_docker_host(self):
|
def test_docker_host(self):
|
||||||
# get empty list to make sure that future accesses will also work
|
# get empty list to make sure that future accesses will also work
|
||||||
self.api.get_docker_hosts()
|
self.api.get_docker_hosts()
|
||||||
|
@ -17,10 +23,8 @@ class TestDockerHost(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
|
|
||||||
# test docker host
|
# test docker host
|
||||||
if parse_version(self.api.version) != parse_version("1.23.0"):
|
with self.assertRaisesRegex(UptimeKumaException, r'connect ENOENT /var/run/docker.sock'):
|
||||||
# test_docker_host does not work in 1.23.0 (https://github.com/louislam/uptime-kuma/issues/3605)
|
self.api.test_docker_host(**expected_docker_host)
|
||||||
with self.assertRaisesRegex(UptimeKumaException, r'connect ENOENT /var/run/docker.sock'):
|
|
||||||
self.api.test_docker_host(**expected_docker_host)
|
|
||||||
|
|
||||||
# add docker host
|
# add docker host
|
||||||
r = self.api.add_docker_host(**expected_docker_host)
|
r = self.api.add_docker_host(**expected_docker_host)
|
||||||
|
@ -33,7 +37,6 @@ class TestDockerHost(UptimeKumaTestCase):
|
||||||
|
|
||||||
# get docker hosts
|
# get docker hosts
|
||||||
docker_hosts = self.api.get_docker_hosts()
|
docker_hosts = self.api.get_docker_hosts()
|
||||||
self.assertTrue(type(docker_hosts[0]["dockerType"]) == DockerType)
|
|
||||||
docker_host = self.find_by_id(docker_hosts, docker_host_id)
|
docker_host = self.find_by_id(docker_hosts, docker_host_id)
|
||||||
self.assertIsNotNone(docker_host)
|
self.assertIsNotNone(docker_host)
|
||||||
self.compare(docker_host, expected_docker_host)
|
self.compare(docker_host, expected_docker_host)
|
||||||
|
@ -51,10 +54,6 @@ class TestDockerHost(UptimeKumaTestCase):
|
||||||
with self.assertRaises(UptimeKumaException):
|
with self.assertRaises(UptimeKumaException):
|
||||||
self.api.get_docker_host(docker_host_id)
|
self.api.get_docker_host(docker_host_id)
|
||||||
|
|
||||||
def test_delete_not_existing_docker_host(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_docker_host(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
import unittest
|
|
||||||
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
|
||||||
|
|
||||||
|
|
||||||
class TestGameList(UptimeKumaTestCase):
|
|
||||||
def test_game_list(self):
|
|
||||||
game_list = self.api.get_game_list()
|
|
||||||
self.assertTrue("keys" in game_list[0])
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
|
@ -1,19 +1,14 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from uptime_kuma_api import MonitorStatus
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestHeartbeat(UptimeKumaTestCase):
|
class TestHeartbeat(UptimeKumaTestCase):
|
||||||
def test_get_heartbeats(self):
|
def test_get_heartbeats(self):
|
||||||
self.add_monitor()
|
self.api.get_heartbeats()
|
||||||
r = self.api.get_heartbeats()
|
|
||||||
self.assertTrue(type(list(r.values())[0][0]["status"]) == MonitorStatus)
|
|
||||||
|
|
||||||
def test_get_important_heartbeats(self):
|
def test_get_important_heartbeats(self):
|
||||||
self.add_monitor()
|
self.api.get_important_heartbeats()
|
||||||
r = self.api.get_important_heartbeats()
|
|
||||||
self.assertTrue(type(list(r.values())[0][0]["status"]) == MonitorStatus)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
import unittest
|
|
||||||
|
|
||||||
from uptime_kuma_api import MonitorStatus
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
|
||||||
|
|
||||||
|
|
||||||
class TestHelperMethods(UptimeKumaTestCase):
|
|
||||||
def test_monitor_status(self):
|
|
||||||
monitor_id = self.add_monitor()
|
|
||||||
status = self.api.get_monitor_status(monitor_id)
|
|
||||||
self.assertTrue(type(status) == MonitorStatus)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
|
@ -1,6 +1,5 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaApi
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,16 +9,6 @@ class TestInfo(UptimeKumaTestCase):
|
||||||
self.assertIn("version", info)
|
self.assertIn("version", info)
|
||||||
self.assertIn("latestVersion", info)
|
self.assertIn("latestVersion", info)
|
||||||
|
|
||||||
def test_info_with_version(self):
|
|
||||||
# If wait_events is set to 0, the first info event is normally used.
|
|
||||||
# The info event handler needs to drop this first event without a version.
|
|
||||||
self.api.logout()
|
|
||||||
self.api.disconnect()
|
|
||||||
self.api = UptimeKumaApi(self.url, wait_events=0)
|
|
||||||
self.api.login(self.username, self.password)
|
|
||||||
info = self.api.info()
|
|
||||||
self.assertIn("version", info)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaException, MaintenanceStrategy
|
from uptime_kuma_api import UptimeKumaException, MaintenanceStrategy
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestMaintenance(UptimeKumaTestCase):
|
class TestMaintenance(UptimeKumaTestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(TestMaintenance, self).setUp()
|
||||||
|
if parse_version(self.api.version) < parse_version("1.19"):
|
||||||
|
super(TestMaintenance, self).tearDown()
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
def test_maintenance(self):
|
def test_maintenance(self):
|
||||||
expected_maintenance = {
|
expected_maintenance = {
|
||||||
"title": "maintenance 1",
|
"title": "maintenance 1",
|
||||||
|
@ -16,9 +24,18 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
"2022-12-27 22:36:00",
|
"2022-12-27 22:36:00",
|
||||||
"2022-12-29 22:36:00"
|
"2022-12-29 22:36:00"
|
||||||
],
|
],
|
||||||
|
"timeRange": [
|
||||||
|
{
|
||||||
|
"hours": 2,
|
||||||
|
"minutes": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hours": 3,
|
||||||
|
"minutes": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
"weekdays": [],
|
"weekdays": [],
|
||||||
"daysOfMonth": [],
|
"daysOfMonth": []
|
||||||
"timezoneOption": "Europe/Berlin"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# add maintenance
|
# add maintenance
|
||||||
|
@ -28,12 +45,10 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
|
|
||||||
# get maintenance
|
# get maintenance
|
||||||
maintenance = self.api.get_maintenance(maintenance_id)
|
maintenance = self.api.get_maintenance(maintenance_id)
|
||||||
self.assertTrue(type(maintenance["strategy"]) == MaintenanceStrategy)
|
|
||||||
self.compare(maintenance, expected_maintenance)
|
self.compare(maintenance, expected_maintenance)
|
||||||
|
|
||||||
# get maintenances
|
# get maintenances
|
||||||
maintenances = self.api.get_maintenances()
|
maintenances = self.api.get_maintenances()
|
||||||
self.assertTrue(type(maintenances[0]["strategy"]) == MaintenanceStrategy)
|
|
||||||
maintenance = self.find_by_id(maintenances, maintenance_id)
|
maintenance = self.find_by_id(maintenances, maintenance_id)
|
||||||
self.assertIsNotNone(maintenance)
|
self.assertIsNotNone(maintenance)
|
||||||
self.compare(maintenance, expected_maintenance)
|
self.compare(maintenance, expected_maintenance)
|
||||||
|
@ -59,7 +74,8 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
monitor_id = self.add_monitor(monitor_name)
|
monitor_id = self.add_monitor(monitor_name)
|
||||||
monitors = [
|
monitors = [
|
||||||
{
|
{
|
||||||
"id": monitor_id
|
"id": monitor_id,
|
||||||
|
"name": monitor_name
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
r = self.api.add_monitor_maintenance(maintenance_id, monitors)
|
r = self.api.add_monitor_maintenance(maintenance_id, monitors)
|
||||||
|
@ -75,7 +91,8 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
status_page_id = self.add_status_page(status_page_title)
|
status_page_id = self.add_status_page(status_page_title)
|
||||||
status_pages = [
|
status_pages = [
|
||||||
{
|
{
|
||||||
"id": status_page_id
|
"id": status_page_id,
|
||||||
|
"name": status_page_title
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
r = self.api.add_status_page_maintenance(maintenance_id, status_pages)
|
r = self.api.add_status_page_maintenance(maintenance_id, status_pages)
|
||||||
|
@ -102,6 +119,18 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
"dateRange": [
|
"dateRange": [
|
||||||
"2022-12-27 00:00:00"
|
"2022-12-27 00:00:00"
|
||||||
],
|
],
|
||||||
|
"timeRange": [
|
||||||
|
{
|
||||||
|
"hours": 2,
|
||||||
|
"minutes": 0,
|
||||||
|
"seconds": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hours": 3,
|
||||||
|
"minutes": 0,
|
||||||
|
"seconds": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
"weekdays": [],
|
"weekdays": [],
|
||||||
"daysOfMonth": []
|
"daysOfMonth": []
|
||||||
}
|
}
|
||||||
|
@ -118,6 +147,16 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
"2022-12-27 22:36:00",
|
"2022-12-27 22:36:00",
|
||||||
"2022-12-29 22:36:00"
|
"2022-12-29 22:36:00"
|
||||||
],
|
],
|
||||||
|
"timeRange": [
|
||||||
|
{
|
||||||
|
"hours": 2,
|
||||||
|
"minutes": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hours": 3,
|
||||||
|
"minutes": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
"weekdays": [],
|
"weekdays": [],
|
||||||
"daysOfMonth": []
|
"daysOfMonth": []
|
||||||
}
|
}
|
||||||
|
@ -207,30 +246,12 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
10,
|
10,
|
||||||
20,
|
20,
|
||||||
30,
|
30,
|
||||||
"lastDay1"
|
"lastDay4",
|
||||||
|
"lastDay2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
self.do_test_maintenance_strategy(expected_maintenance)
|
self.do_test_maintenance_strategy(expected_maintenance)
|
||||||
|
|
||||||
def test_maintenance_strategy_cron(self):
|
|
||||||
expected_maintenance = {
|
|
||||||
"title": "test",
|
|
||||||
"description": "test",
|
|
||||||
"strategy": MaintenanceStrategy.CRON,
|
|
||||||
"active": True,
|
|
||||||
"intervalDay": 1,
|
|
||||||
"dateRange": [
|
|
||||||
"2022-12-27 22:37:00",
|
|
||||||
"2022-12-31 22:37:00"
|
|
||||||
],
|
|
||||||
"weekdays": [],
|
|
||||||
"daysOfMonth": [],
|
|
||||||
"cron": "50 5 * * *",
|
|
||||||
"durationMinutes": 120,
|
|
||||||
"timezoneOption": "Europe/Berlin"
|
|
||||||
}
|
|
||||||
self.do_test_maintenance_strategy(expected_maintenance)
|
|
||||||
|
|
||||||
def do_test_maintenance_strategy(self, expected_maintenance):
|
def do_test_maintenance_strategy(self, expected_maintenance):
|
||||||
# add maintenance
|
# add maintenance
|
||||||
r = self.api.add_maintenance(**expected_maintenance)
|
r = self.api.add_maintenance(**expected_maintenance)
|
||||||
|
@ -260,10 +281,6 @@ class TestMaintenance(UptimeKumaTestCase):
|
||||||
with self.assertRaises(UptimeKumaException):
|
with self.assertRaises(UptimeKumaException):
|
||||||
self.api.get_maintenance(maintenance_id)
|
self.api.get_maintenance(maintenance_id)
|
||||||
|
|
||||||
def test_delete_not_existing_maintenance(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_maintenance(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import unittest
|
import unittest
|
||||||
from packaging.version import parse as parse_version
|
from packaging.version import parse as parse_version
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaException, MonitorType, AuthMethod, MonitorStatus
|
from uptime_kuma_api import UptimeKumaException, MonitorType, AuthMethod
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,9 +21,12 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
"maxretries": 0,
|
"maxretries": 0,
|
||||||
"notificationIDList": [notification_id_1, notification_id_2],
|
"notificationIDList": [notification_id_1, notification_id_2],
|
||||||
"upsideDown": False,
|
"upsideDown": False,
|
||||||
"url": "http://127.0.0.1",
|
"url": "http://127.0.0.1"
|
||||||
"resendInterval": 0
|
|
||||||
}
|
}
|
||||||
|
if parse_version(self.api.version) >= parse_version("1.18"):
|
||||||
|
expected_monitor.update({
|
||||||
|
"resendInterval": 0
|
||||||
|
})
|
||||||
|
|
||||||
# add monitor
|
# add monitor
|
||||||
r = self.api.add_monitor(**expected_monitor)
|
r = self.api.add_monitor(**expected_monitor)
|
||||||
|
@ -36,11 +39,7 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
|
|
||||||
# get monitors
|
# get monitors
|
||||||
monitors = self.api.get_monitors()
|
monitors = self.api.get_monitors()
|
||||||
self.assertTrue(type(monitors[0]["type"]) == MonitorType)
|
|
||||||
self.assertTrue(type(monitors[0]["authMethod"]) == AuthMethod)
|
|
||||||
monitor = self.find_by_id(monitors, monitor_id)
|
monitor = self.find_by_id(monitors, monitor_id)
|
||||||
self.assertTrue(type(monitor["type"]) == MonitorType)
|
|
||||||
self.assertTrue(type(monitor["authMethod"]) == AuthMethod)
|
|
||||||
self.assertIsNotNone(monitor)
|
self.assertIsNotNone(monitor)
|
||||||
self.compare(monitor, expected_monitor)
|
self.compare(monitor, expected_monitor)
|
||||||
|
|
||||||
|
@ -63,8 +62,7 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
self.assertEqual(r["msg"], "Resumed Successfully.")
|
self.assertEqual(r["msg"], "Resumed Successfully.")
|
||||||
|
|
||||||
# get monitor beats
|
# get monitor beats
|
||||||
r = self.api.get_monitor_beats(monitor_id, 6)
|
self.api.get_monitor_beats(monitor_id, 6)
|
||||||
self.assertTrue(type(r[0]["status"]) == MonitorStatus)
|
|
||||||
|
|
||||||
# delete monitor
|
# delete monitor
|
||||||
r = self.api.delete_monitor(monitor_id)
|
r = self.api.delete_monitor(monitor_id)
|
||||||
|
@ -134,17 +132,6 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.HTTP,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"url": "http://127.0.0.1",
|
|
||||||
"authMethod": AuthMethod.MTLS,
|
|
||||||
"tlsCert": "cert",
|
|
||||||
"tlsKey": "key",
|
|
||||||
"tlsCa": "ca",
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_port(self):
|
def test_monitor_type_port(self):
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.PORT,
|
"type": MonitorType.PORT,
|
||||||
|
@ -158,8 +145,7 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.PING,
|
"type": MonitorType.PING,
|
||||||
"name": "monitor 1",
|
"name": "monitor 1",
|
||||||
"hostname": "127.0.0.1",
|
"hostname": "127.0.0.1"
|
||||||
"packetSize": 56
|
|
||||||
}
|
}
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
|
@ -173,6 +159,9 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_grpc_keyword(self):
|
def test_monitor_type_grpc_keyword(self):
|
||||||
|
if parse_version(self.api.version) < parse_version("1.19"):
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.GRPC_KEYWORD,
|
"type": MonitorType.GRPC_KEYWORD,
|
||||||
"name": "monitor 1",
|
"name": "monitor 1",
|
||||||
|
@ -195,6 +184,9 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_docker(self):
|
def test_monitor_type_docker(self):
|
||||||
|
if parse_version(self.api.version) < parse_version("1.18"):
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
docker_host_id = self.add_docker_host()
|
docker_host_id = self.add_docker_host()
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.DOCKER,
|
"type": MonitorType.DOCKER,
|
||||||
|
@ -223,18 +215,6 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_gamedig(self):
|
|
||||||
game_list = self.api.get_game_list()
|
|
||||||
game = game_list[0]["keys"][0]
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.GAMEDIG,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"hostname": "127.0.0.1",
|
|
||||||
"port": 8888,
|
|
||||||
"game": game
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_mqtt(self):
|
def test_monitor_type_mqtt(self):
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.MQTT,
|
"type": MonitorType.MQTT,
|
||||||
|
@ -259,6 +239,9 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_postgres(self):
|
def test_monitor_type_postgres(self):
|
||||||
|
if parse_version(self.api.version) < parse_version("1.18"):
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.POSTGRES,
|
"type": MonitorType.POSTGRES,
|
||||||
"name": "monitor 1",
|
"name": "monitor 1",
|
||||||
|
@ -268,6 +251,9 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_mysql(self):
|
def test_monitor_type_mysql(self):
|
||||||
|
if parse_version(self.api.version) < parse_version("1.19"):
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.MYSQL,
|
"type": MonitorType.MYSQL,
|
||||||
"name": "monitor 1",
|
"name": "monitor 1",
|
||||||
|
@ -276,15 +262,10 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_mongodb(self):
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.MONGODB,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"databaseConnectionString": "mongodb://username:password@host:port/database"
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_radius(self):
|
def test_monitor_type_radius(self):
|
||||||
|
if parse_version(self.api.version) < parse_version("1.18"):
|
||||||
|
self.skipTest("Unsupported in this Uptime Kuma version")
|
||||||
|
|
||||||
expected_monitor = {
|
expected_monitor = {
|
||||||
"type": MonitorType.RADIUS,
|
"type": MonitorType.RADIUS,
|
||||||
"name": "monitor 1",
|
"name": "monitor 1",
|
||||||
|
@ -296,85 +277,6 @@ class TestMonitor(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
self.do_test_monitor_type(expected_monitor)
|
self.do_test_monitor_type(expected_monitor)
|
||||||
|
|
||||||
def test_monitor_type_redis(self):
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.REDIS,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"databaseConnectionString": "redis://user:password@host:port"
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_group(self):
|
|
||||||
if parse_version(self.api.version) < parse_version("1.22"):
|
|
||||||
self.skipTest("Unsupported in this Uptime Kuma version")
|
|
||||||
|
|
||||||
# create monitor group
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.GROUP,
|
|
||||||
"name": "monitor 1"
|
|
||||||
}
|
|
||||||
group_monitor = self.do_test_monitor_type(expected_monitor)
|
|
||||||
group_monitor_id = group_monitor["id"]
|
|
||||||
|
|
||||||
# use monitor group as parent for another monitor
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.PUSH,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"parent": group_monitor_id
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_json_query(self):
|
|
||||||
if parse_version(self.api.version) < parse_version("1.23"):
|
|
||||||
self.skipTest("Unsupported in this Uptime Kuma version")
|
|
||||||
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.JSON_QUERY,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"url": "http://127.0.0.1",
|
|
||||||
"jsonPath": "address.country",
|
|
||||||
"expectedValue": "germany",
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_real_browser(self):
|
|
||||||
if parse_version(self.api.version) < parse_version("1.23"):
|
|
||||||
self.skipTest("Unsupported in this Uptime Kuma version")
|
|
||||||
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.REAL_BROWSER,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"url": "http://127.0.0.1",
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_kafka_producer(self):
|
|
||||||
if parse_version(self.api.version) < parse_version("1.23"):
|
|
||||||
self.skipTest("Unsupported in this Uptime Kuma version")
|
|
||||||
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.KAFKA_PRODUCER,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"kafkaProducerTopic": "topic",
|
|
||||||
"kafkaProducerMessage": "message",
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_monitor_type_tailscale_ping(self):
|
|
||||||
if parse_version(self.api.version) < parse_version("1.23"):
|
|
||||||
self.skipTest("Unsupported in this Uptime Kuma version")
|
|
||||||
|
|
||||||
expected_monitor = {
|
|
||||||
"type": MonitorType.TAILSCALE_PING,
|
|
||||||
"name": "monitor 1",
|
|
||||||
"hostname": "127.0.0.1"
|
|
||||||
}
|
|
||||||
self.do_test_monitor_type(expected_monitor)
|
|
||||||
|
|
||||||
def test_delete_not_existing_monitor(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_monitor(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaException
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,10 +32,6 @@ class TestMonitorTag(UptimeKumaTestCase):
|
||||||
monitor = self.find_by_id(monitors, monitor_id)
|
monitor = self.find_by_id(monitors, monitor_id)
|
||||||
self.assertEqual(monitor["tags"], [])
|
self.assertEqual(monitor["tags"], [])
|
||||||
|
|
||||||
def test_delete_not_existing_monitor_tag(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_monitor_tag(42, 42, 42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -13,13 +13,12 @@ class TestNotification(UptimeKumaTestCase):
|
||||||
"name": "notification 1",
|
"name": "notification 1",
|
||||||
"isDefault": True,
|
"isDefault": True,
|
||||||
"applyExisting": True,
|
"applyExisting": True,
|
||||||
"type": NotificationType.TELEGRAM,
|
"type": NotificationType.PUSHBYTECHULUS,
|
||||||
"telegramChatID": "123456789",
|
"pushAPIKey": "123456789"
|
||||||
"telegramBotToken": "987654321"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# test notification
|
# test notification
|
||||||
with self.assertRaisesRegex(UptimeKumaException, r'Not Found'):
|
with self.assertRaisesRegex(UptimeKumaException, r'Invalid API key'):
|
||||||
self.api.test_notification(**expected_notification)
|
self.api.test_notification(**expected_notification)
|
||||||
|
|
||||||
# add notification
|
# add notification
|
||||||
|
@ -33,9 +32,7 @@ class TestNotification(UptimeKumaTestCase):
|
||||||
|
|
||||||
# get notifications
|
# get notifications
|
||||||
notifications = self.api.get_notifications()
|
notifications = self.api.get_notifications()
|
||||||
self.assertTrue(type(notifications[0]["type"]) == NotificationType)
|
|
||||||
notification = self.find_by_id(notifications, notification_id)
|
notification = self.find_by_id(notifications, notification_id)
|
||||||
self.assertTrue(type(notification["type"]) == NotificationType)
|
|
||||||
self.assertIsNotNone(notification)
|
self.assertIsNotNone(notification)
|
||||||
self.compare(notification, expected_notification)
|
self.compare(notification, expected_notification)
|
||||||
|
|
||||||
|
@ -45,8 +42,7 @@ class TestNotification(UptimeKumaTestCase):
|
||||||
expected_notification["applyExisting"] = False
|
expected_notification["applyExisting"] = False
|
||||||
expected_notification["type"] = NotificationType.PUSHDEER
|
expected_notification["type"] = NotificationType.PUSHDEER
|
||||||
expected_notification["pushdeerKey"] = "987654321"
|
expected_notification["pushdeerKey"] = "987654321"
|
||||||
del expected_notification["telegramChatID"]
|
del expected_notification["pushAPIKey"]
|
||||||
del expected_notification["telegramBotToken"]
|
|
||||||
r = self.api.edit_notification(notification_id, **expected_notification)
|
r = self.api.edit_notification(notification_id, **expected_notification)
|
||||||
self.assertEqual(r["msg"], "Saved")
|
self.assertEqual(r["msg"], "Saved")
|
||||||
notification = self.api.get_notification(notification_id)
|
notification = self.api.get_notification(notification_id)
|
||||||
|
@ -59,10 +55,6 @@ class TestNotification(UptimeKumaTestCase):
|
||||||
with self.assertRaises(UptimeKumaException):
|
with self.assertRaises(UptimeKumaException):
|
||||||
self.api.delete_notification(notification_id)
|
self.api.delete_notification(notification_id)
|
||||||
|
|
||||||
def test_delete_not_existing_notification(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_notification(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -31,7 +31,6 @@ class TestProxy(UptimeKumaTestCase):
|
||||||
|
|
||||||
# get proxies
|
# get proxies
|
||||||
proxies = self.api.get_proxies()
|
proxies = self.api.get_proxies()
|
||||||
self.assertTrue(type(proxies[0]["protocol"]) == ProxyProtocol)
|
|
||||||
proxy = self.find_by_id(proxies, proxy_id)
|
proxy = self.find_by_id(proxies, proxy_id)
|
||||||
self.assertIsNotNone(proxy)
|
self.assertIsNotNone(proxy)
|
||||||
self.compare(proxy, expected_proxy)
|
self.compare(proxy, expected_proxy)
|
||||||
|
@ -51,10 +50,6 @@ class TestProxy(UptimeKumaTestCase):
|
||||||
with self.assertRaises(UptimeKumaException):
|
with self.assertRaises(UptimeKumaException):
|
||||||
self.api.get_proxy(proxy_id)
|
self.api.get_proxy(proxy_id)
|
||||||
|
|
||||||
def test_delete_not_existing_proxy(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_proxy(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import json
|
import json
|
||||||
import unittest
|
import unittest
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
|
||||||
from uptime_kuma_test_case import UptimeKumaTestCase
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
@ -15,12 +16,20 @@ class TestSettings(UptimeKumaTestCase):
|
||||||
"primaryBaseURL": "",
|
"primaryBaseURL": "",
|
||||||
"steamAPIKey": "",
|
"steamAPIKey": "",
|
||||||
"tlsExpiryNotifyDays": [7, 14, 21],
|
"tlsExpiryNotifyDays": [7, 14, 21],
|
||||||
"disableAuth": False,
|
"disableAuth": False
|
||||||
"trustProxy": False,
|
|
||||||
"serverTimezone": "Europe/Berlin",
|
|
||||||
"dnsCache": True
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if parse_version(self.api.version) >= parse_version("1.18"):
|
||||||
|
expected_settings.update({
|
||||||
|
"trustProxy": False
|
||||||
|
})
|
||||||
|
|
||||||
|
if parse_version(self.api.version) >= parse_version("1.19"):
|
||||||
|
expected_settings.update({
|
||||||
|
"serverTimezone": "Europe/Berlin",
|
||||||
|
"dnsCache": True,
|
||||||
|
})
|
||||||
|
|
||||||
# set settings
|
# set settings
|
||||||
r = self.api.set_settings(self.password, **expected_settings)
|
r = self.api.set_settings(self.password, **expected_settings)
|
||||||
self.assertEqual(r["msg"], "Saved")
|
self.assertEqual(r["msg"], "Saved")
|
||||||
|
|
|
@ -34,8 +34,7 @@ class TestStatusPage(UptimeKumaTestCase):
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"googleAnalyticsId": ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# add status page
|
# add status page
|
||||||
|
@ -71,11 +70,9 @@ class TestStatusPage(UptimeKumaTestCase):
|
||||||
"style": IncidentStyle.DANGER
|
"style": IncidentStyle.DANGER
|
||||||
}
|
}
|
||||||
incident = self.api.post_incident(slug, **incident_expected)
|
incident = self.api.post_incident(slug, **incident_expected)
|
||||||
self.assertTrue(type(incident["style"]) == IncidentStyle)
|
|
||||||
self.compare(incident, incident_expected)
|
self.compare(incident, incident_expected)
|
||||||
status_page = self.api.get_status_page(slug)
|
status_page = self.api.get_status_page(slug)
|
||||||
self.compare(status_page["incident"], incident)
|
self.compare(status_page["incident"], incident)
|
||||||
self.assertTrue(type(status_page["incident"]["style"]) == IncidentStyle)
|
|
||||||
|
|
||||||
# unpin incident
|
# unpin incident
|
||||||
self.api.unpin_incident(slug)
|
self.api.unpin_incident(slug)
|
||||||
|
@ -91,10 +88,6 @@ class TestStatusPage(UptimeKumaTestCase):
|
||||||
status_page = self.find_by_id(status_pages, slug, "slug")
|
status_page = self.find_by_id(status_pages, slug, "slug")
|
||||||
self.assertIsNone(status_page)
|
self.assertIsNone(status_page)
|
||||||
|
|
||||||
def test_delete_not_existing_status_page(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_status_page("slug42")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -26,24 +26,12 @@ class TestTag(UptimeKumaTestCase):
|
||||||
self.assertIsNotNone(tag)
|
self.assertIsNotNone(tag)
|
||||||
self.compare(tag, expected_tag)
|
self.compare(tag, expected_tag)
|
||||||
|
|
||||||
# edit tag
|
|
||||||
expected_tag["name"] = "tag 1 new"
|
|
||||||
expected_tag["color"] = "#000000"
|
|
||||||
r = self.api.edit_tag(tag_id, **expected_tag)
|
|
||||||
self.assertEqual(r["msg"], "Saved")
|
|
||||||
tag = self.api.get_tag(tag_id)
|
|
||||||
self.compare(tag, expected_tag)
|
|
||||||
|
|
||||||
# delete tag
|
# delete tag
|
||||||
r = self.api.delete_tag(tag_id)
|
r = self.api.delete_tag(tag_id)
|
||||||
self.assertEqual(r["msg"], "Deleted Successfully.")
|
self.assertEqual(r["msg"], "Deleted Successfully.")
|
||||||
with self.assertRaises(UptimeKumaException):
|
with self.assertRaises(UptimeKumaException):
|
||||||
self.api.get_tag(tag_id)
|
self.api.get_tag(tag_id)
|
||||||
|
|
||||||
def test_delete_not_existing_tag(self):
|
|
||||||
with self.assertRaises(UptimeKumaException):
|
|
||||||
self.api.delete_tag(42)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
import warnings
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
|
||||||
from uptime_kuma_api import UptimeKumaApi, MonitorType, DockerType
|
from uptime_kuma_api import UptimeKumaApi, MonitorType, DockerType, UptimeKumaException
|
||||||
|
|
||||||
token = None
|
token = None
|
||||||
|
|
||||||
|
@ -37,7 +38,7 @@ class UptimeKumaTestCase(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
warnings.simplefilter("ignore", ResourceWarning)
|
warnings.simplefilter("ignore", ResourceWarning)
|
||||||
|
|
||||||
self.api = UptimeKumaApi(self.url, timeout=1, wait_events=0.01)
|
self.api = UptimeKumaApi(self.url)
|
||||||
|
|
||||||
global token
|
global token
|
||||||
if not token:
|
if not token:
|
||||||
|
@ -73,20 +74,11 @@ class UptimeKumaTestCase(unittest.TestCase):
|
||||||
for status_page in status_pages:
|
for status_page in status_pages:
|
||||||
self.api.delete_status_page(status_page["slug"])
|
self.api.delete_status_page(status_page["slug"])
|
||||||
|
|
||||||
# delete docker hosts
|
if parse_version(self.api.version) >= parse_version("1.18"):
|
||||||
docker_hosts = self.api.get_docker_hosts()
|
# delete docker hosts
|
||||||
for docker_host in docker_hosts:
|
docker_hosts = self.api.get_docker_hosts()
|
||||||
self.api.delete_docker_host(docker_host["id"])
|
for docker_host in docker_hosts:
|
||||||
|
self.api.delete_docker_host(docker_host["id"])
|
||||||
# delete maintenances
|
|
||||||
maintenances = self.api.get_maintenances()
|
|
||||||
for maintenance in maintenances:
|
|
||||||
self.api.delete_maintenance(maintenance["id"])
|
|
||||||
|
|
||||||
# delete api keys
|
|
||||||
api_keys = self.api.get_api_keys()
|
|
||||||
for api_key in api_keys:
|
|
||||||
self.api.delete_api_key(api_key["id"])
|
|
||||||
|
|
||||||
# login again to receive initial messages
|
# login again to receive initial messages
|
||||||
self.api.disconnect()
|
self.api.disconnect()
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
from .__version__ import __title__, __version__, __author__, __copyright__
|
from .__version__ import __title__, __version__, __author__, __copyright__
|
||||||
from .auth_method import AuthMethod
|
from .auth_method import AuthMethod
|
||||||
from .monitor_status import MonitorStatus
|
|
||||||
from .monitor_type import MonitorType
|
from .monitor_type import MonitorType
|
||||||
from .notification_providers import NotificationType, notification_provider_options, notification_provider_conditions
|
from .notification_providers import NotificationType, notification_provider_options, notification_provider_conditions
|
||||||
from .proxy_protocol import ProxyProtocol
|
from .proxy_protocol import ProxyProtocol
|
||||||
from .incident_style import IncidentStyle
|
from .incident_style import IncidentStyle
|
||||||
from .docker_type import DockerType
|
from .docker_type import DockerType
|
||||||
from .maintenance_strategy import MaintenanceStrategy
|
from .maintenance_strategy import MaintenanceStrategy
|
||||||
from .exceptions import UptimeKumaException, Timeout
|
from .exceptions import UptimeKumaException
|
||||||
from .event import Event
|
from .event import Event
|
||||||
from .api import UptimeKumaApi
|
from .api import UptimeKumaApi
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
__title__ = "uptime_kuma_api"
|
__title__ = "uptime_kuma_api"
|
||||||
__version__ = "1.2.1"
|
__version__ = "0.7.1"
|
||||||
__author__ = "Lucas Held"
|
__author__ = "Lucas Held"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright 2023 Lucas Held"
|
__copyright__ = "Copyright 2022 Lucas Held"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -12,9 +12,3 @@ class AuthMethod(str, Enum):
|
||||||
|
|
||||||
NTLM = "ntlm"
|
NTLM = "ntlm"
|
||||||
"""NTLM Authentication."""
|
"""NTLM Authentication."""
|
||||||
|
|
||||||
MTLS = "mtls"
|
|
||||||
"""mTLS Authentication."""
|
|
||||||
|
|
||||||
OAUTH2_CC = "oauth2-cc"
|
|
||||||
"""OAuth2: Client Credentials"""
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ def monitor_docstring(mode) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
:param MonitorType{", optional" if mode == "edit" else ""} type: Monitor Type
|
:param MonitorType{", optional" if mode == "edit" else ""} type: Monitor Type
|
||||||
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
||||||
:param str, optional parent: Id of the monitor group, defaults to None
|
|
||||||
:param str, optional description: Description, defaults to None
|
|
||||||
:param int, optional interval: Heartbeat Interval, defaults to 60
|
:param int, optional interval: Heartbeat Interval, defaults to 60
|
||||||
:param int, optional retryInterval: Retry every X seconds, defaults to 60
|
:param int, optional retryInterval: Retry every X seconds, defaults to 60
|
||||||
:param int, optional resendInterval: Resend every X times, defaults to 0
|
:param int, optional resendInterval: Resend every X times, defaults to 0
|
||||||
|
@ -33,41 +31,18 @@ def monitor_docstring(mode) -> str:
|
||||||
:param list, optional accepted_statuscodes: Accepted Status Codes. Select status codes which are considered as a successful response., defaults to None
|
:param list, optional accepted_statuscodes: Accepted Status Codes. Select status codes which are considered as a successful response., defaults to None
|
||||||
:param int, optional proxyId: Proxy, defaults to None
|
:param int, optional proxyId: Proxy, defaults to None
|
||||||
:param str, optional method: Method, defaults to "GET"
|
:param str, optional method: Method, defaults to "GET"
|
||||||
:param str, optional httpBodyEncoding: Body Encoding, defaults to "json". Allowed values: "json", "xml".
|
|
||||||
:param str, optional body: Body, defaults to None
|
:param str, optional body: Body, defaults to None
|
||||||
:param str, optional headers: Headers, defaults to None
|
:param str, optional headers: Headers, defaults to None
|
||||||
:param AuthMethod, optional authMethod: Method, defaults to :attr:`~.AuthMethod.NONE`
|
:param AuthMethod, optional authMethod: Method, defaults to :attr:`~.AuthMethod.NONE`
|
||||||
:param str, optional tlsCert: Cert for ``authMethod`` :attr:`~.AuthMethod.MTLS`, defaults to None.
|
:param str, optional basic_auth_user: Username, defaults to None
|
||||||
:param str, optional tlsKey: Key for ``authMethod`` :attr:`~.AuthMethod.MTLS`, defaults to None.
|
:param str, optional basic_auth_pass: Password, defaults to None
|
||||||
:param str, optional tlsCa: Ca for ``authMethod`` :attr:`~.AuthMethod.MTLS`, defaults to None.
|
:param str, optional authDomain: Domain, defaults to None
|
||||||
:param str, optional basic_auth_user: Username for ``authMethod`` :attr:`~.AuthMethod.HTTP_BASIC` and :attr:`~.AuthMethod.NTLM`, defaults to None
|
:param str, optional authWorkstation: Workstation, defaults to None
|
||||||
:param str, optional basic_auth_pass: Password for ``authMethod`` :attr:`~.AuthMethod.HTTP_BASIC` and :attr:`~.AuthMethod.NTLM`, defaults to None
|
|
||||||
:param str, optional authDomain: Domain for ``authMethod`` :attr:`~.AuthMethod.NTLM`, defaults to None
|
|
||||||
:param str, optional authWorkstation: Workstation for ``authMethod`` :attr:`~.AuthMethod.NTLM`, defaults to None
|
|
||||||
:param str, optional oauth_auth_method: Authentication Method, defaults to None
|
|
||||||
:param str, optional oauth_token_url: OAuth Token URL, defaults to None
|
|
||||||
:param str, optional oauth_client_id: Client ID, defaults to None
|
|
||||||
:param str, optional oauth_client_secret: Client Secret, defaults to None
|
|
||||||
:param str, optional oauth_scopes: OAuth Scope, defaults to None
|
|
||||||
:param int, optional timeout: Request Timeout, defaults to None
|
|
||||||
:param str, optional keyword: Keyword. Search keyword in plain HTML or JSON response. The search is case-sensitive., defaults to None
|
:param str, optional keyword: Keyword. Search keyword in plain HTML or JSON response. The search is case-sensitive., defaults to None
|
||||||
:param bool, optional invertKeyword: Invert Keyword. Look for the keyword to be absent rather than present., defaults to False
|
|
||||||
:param str, optional hostname: Hostname, defaults to None
|
:param str, optional hostname: Hostname, defaults to None
|
||||||
:param int, optional packetSize: Packet Size, defaults to None
|
|
||||||
:param int, optional port: Port, ``type`` :attr:`~.MonitorType.DNS` defaults to ``53`` and ``type`` :attr:`~.MonitorType.RADIUS` defaults to ``1812``
|
:param int, optional port: Port, ``type`` :attr:`~.MonitorType.DNS` defaults to ``53`` and ``type`` :attr:`~.MonitorType.RADIUS` defaults to ``1812``
|
||||||
:param str, optional dns_resolve_server: Resolver Server, defaults to "1.1.1.1"
|
:param str, optional dns_resolve_server: Resolver Server, defaults to "1.1.1.1"
|
||||||
:param str, optional dns_resolve_type: Resource Record Type, defaults to "A". Available values are:
|
:param str, optional dns_resolve_type: Resource Record Type, defaults to "A"
|
||||||
|
|
||||||
- "A"
|
|
||||||
- "AAAA"
|
|
||||||
- "CAA"
|
|
||||||
- "CNAME"
|
|
||||||
- "MX"
|
|
||||||
- "NS"
|
|
||||||
- "PTR"
|
|
||||||
- "SOA"
|
|
||||||
- "SRV"
|
|
||||||
- "TXT"
|
|
||||||
:param str, optional mqttUsername: MQTT Username, defaults to None
|
:param str, optional mqttUsername: MQTT Username, defaults to None
|
||||||
:param str, optional mqttPassword: MQTT Password, defaults to None
|
:param str, optional mqttPassword: MQTT Password, defaults to None
|
||||||
:param str, optional mqttTopic: MQTT Topic, defaults to None
|
:param str, optional mqttTopic: MQTT Topic, defaults to None
|
||||||
|
@ -81,33 +56,8 @@ def monitor_docstring(mode) -> str:
|
||||||
:param str, optional radiusSecret: Radius Secret. Shared Secret between client and server., defaults to None
|
:param str, optional radiusSecret: Radius Secret. Shared Secret between client and server., defaults to None
|
||||||
:param str, optional radiusCalledStationId: Called Station Id. Identifier of the called device., defaults to None
|
:param str, optional radiusCalledStationId: Called Station Id. Identifier of the called device., defaults to None
|
||||||
:param str, optional radiusCallingStationId: Calling Station Id. Identifier of the calling device., defaults to None
|
:param str, optional radiusCallingStationId: Calling Station Id. Identifier of the calling device., defaults to None
|
||||||
:param str, optional game: Game, defaults to None
|
|
||||||
:param bool, optional gamedigGivenPortOnly: Gamedig: Guess Port. The port used by Valve Server Query Protocol may be different from the client port. Try this if the monitor cannot connect to your server., defaults to False
|
|
||||||
:param str, optional jsonPath: Json Query, defaults to None
|
|
||||||
:param str, optional expectedValue: Expected Value, defaults to None
|
|
||||||
:param str, optional kafkaProducerBrokers: Kafka Broker list, defaults to None
|
|
||||||
:param str, optional kafkaProducerTopic: Kafka Topic Name, defaults to None
|
|
||||||
:param str, optional kafkaProducerMessage: Kafka Producer Message, defaults to None
|
|
||||||
:param bool, optional kafkaProducerSsl: Enable Kafka SSL, defaults to False
|
|
||||||
:param bool, optional kafkaProducerAllowAutoTopicCreation: Enable Kafka Producer Auto Topic Creation, defaults to False
|
|
||||||
:param dict, optional kafkaProducerSaslOptions: Kafka SASL Options
|
|
||||||
|
|
||||||
- **mechanism** (*str*, *optional*): Mechanism, defaults to "None". Available values are:
|
|
||||||
|
|
||||||
- "None"
|
|
||||||
- "plain"
|
|
||||||
- "scram-sha-256"
|
|
||||||
- "scram-sha-512"
|
|
||||||
- "aws"
|
|
||||||
- **username** (*str*, *optional*): Username, defaults to None
|
|
||||||
- **password** (*str*, *optional*): Password, defaults to None
|
|
||||||
- **authorizationIdentity** (*str*, *optional*): Authorization Identity, defaults to None
|
|
||||||
- **accessKeyId** (*str*, *optional*): AccessKey Id, defaults to None
|
|
||||||
- **secretAccessKey** (*str*, *optional*): Secret AccessKey, defaults to None
|
|
||||||
- **sessionToken** (*str*, *optional*): Session Token, defaults to None
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def notification_docstring(mode) -> str:
|
def notification_docstring(mode) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
||||||
|
@ -115,232 +65,157 @@ def notification_docstring(mode) -> str:
|
||||||
:param bool, optional isDefault: Default enabled. This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor., defaults to False
|
:param bool, optional isDefault: Default enabled. This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor., defaults to False
|
||||||
:param bool, optional applyExisting: Apply on all existing monitors, defaults to False
|
:param bool, optional applyExisting: Apply on all existing monitors, defaults to False
|
||||||
|
|
||||||
:param str, optional alertaApiEndpoint: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`.
|
:param str, optional alertaApiEndpoint: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`
|
||||||
:param str, optional alertaApiKey: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`.
|
:param str, optional alertaApiKey: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`
|
||||||
:param str, optional alertaEnvironment: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`.
|
:param str, optional alertaEnvironment: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`
|
||||||
:param str, optional alertaAlertState: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`.
|
:param str, optional alertaAlertState: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`
|
||||||
:param str, optional alertaRecoverState: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`.
|
:param str, optional alertaRecoverState: Notification option for ``type`` :attr:`~.NotificationType.ALERTA`
|
||||||
:param str, optional alertNowWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.ALERTNOW`.
|
:param str, optional phonenumber: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`
|
||||||
:param str, optional phonenumber: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`.
|
:param str, optional templateCode: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`
|
||||||
:param str, optional templateCode: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`.
|
:param str, optional signName: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`
|
||||||
:param str, optional signName: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`.
|
:param str, optional accessKeyId: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`
|
||||||
:param str, optional accessKeyId: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`.
|
:param str, optional secretAccessKey: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`
|
||||||
:param str, optional secretAccessKey: Notification option for ``type`` :attr:`~.NotificationType.ALIYUNSMS`.
|
:param str, optional appriseURL: Notification option for ``type`` :attr:`~.NotificationType.APPRISE`
|
||||||
:param str, optional appriseURL: Notification option for ``type`` :attr:`~.NotificationType.APPRISE`.
|
:param str, optional title: Notification option for ``type`` :attr:`~.NotificationType.APPRISE`
|
||||||
:param str title: Notification option for ``type`` :attr:`~.NotificationType.APPRISE`.
|
:param str, optional clicksendsmsLogin: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`
|
||||||
:param str, optional barkEndpoint: Notification option for ``type`` :attr:`~.NotificationType.BARK`.
|
:param str, optional clicksendsmsPassword: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`
|
||||||
:param str, optional barkGroup: Notification option for ``type`` :attr:`~.NotificationType.BARK`.
|
:param str, optional clicksendsmsToNumber: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`
|
||||||
:param str, optional barkSound: Notification option for ``type`` :attr:`~.NotificationType.BARK`.
|
:param str, optional clicksendsmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`
|
||||||
:param str, optional clicksendsmsLogin: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`.
|
:param str, optional webHookUrl: Notification option for ``type`` :attr:`~.NotificationType.DINGDING`
|
||||||
:param str, optional clicksendsmsPassword: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`.
|
:param str, optional secretKey: Notification option for ``type`` :attr:`~.NotificationType.DINGDING`
|
||||||
:param str, optional clicksendsmsToNumber: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`.
|
:param str, optional discordUsername: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`
|
||||||
:param str clicksendsmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.CLICKSENDSMS`.
|
:param str, optional discordWebhookUrl: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`
|
||||||
:param str, optional webHookUrl: Notification option for ``type`` :attr:`~.NotificationType.DINGDING`.
|
:param str, optional discordPrefixMessage: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`
|
||||||
:param str, optional secretKey: Notification option for ``type`` :attr:`~.NotificationType.DINGDING`.
|
:param str, optional feishuWebHookUrl: Notification option for ``type`` :attr:`~.NotificationType.FEISHU`
|
||||||
:param str discordUsername: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`.
|
:param str, optional googleChatWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.GOOGLECHAT`
|
||||||
:param str, optional discordWebhookUrl: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`.
|
:param str, optional gorushDeviceToken: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str discordPrefixMessage: Notification option for ``type`` :attr:`~.NotificationType.DISCORD`.
|
:param str, optional gorushPlatform: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str, optional feishuWebHookUrl: Notification option for ``type`` :attr:`~.NotificationType.FEISHU`.
|
:param str, optional gorushTitle: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str, optional flashdutySeverity: Notification option for ``type`` :attr:`~.NotificationType.FLASHDUTY`.
|
:param str, optional gorushPriority: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str flashdutyIntegrationKey: Notification option for ``type`` :attr:`~.NotificationType.FLASHDUTY`.
|
:param str, optional gorushRetry: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str, optional freemobileUser: Notification option for ``type`` :attr:`~.NotificationType.FREEMOBILE`.
|
:param str, optional gorushTopic: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str, optional freemobilePass: Notification option for ``type`` :attr:`~.NotificationType.FREEMOBILE`.
|
:param str, optional gorushServerURL: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`
|
||||||
:param str, optional goAlertBaseURL: Notification option for ``type`` :attr:`~.NotificationType.GOALERT`.
|
:param str, optional gotifyserverurl: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`
|
||||||
:param str, optional goAlertToken: Notification option for ``type`` :attr:`~.NotificationType.GOALERT`.
|
:param str, optional gotifyapplicationToken: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`
|
||||||
:param str, optional googleChatWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.GOOGLECHAT`.
|
:param int, optional gotifyPriority: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`
|
||||||
:param str, optional gorushDeviceToken: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional lineChannelAccessToken: Notification option for ``type`` :attr:`~.NotificationType.LINE`
|
||||||
:param str gorushPlatform: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional lineUserID: Notification option for ``type`` :attr:`~.NotificationType.LINE`
|
||||||
:param str gorushTitle: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional lunaseaDevice: Notification option for ``type`` :attr:`~.NotificationType.LUNASEA`
|
||||||
:param str gorushPriority: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional internalRoomId: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`
|
||||||
:param int gorushRetry: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional accessToken: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`
|
||||||
:param str gorushTopic: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional homeserverUrl: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`
|
||||||
:param str, optional gorushServerURL: Notification option for ``type`` :attr:`~.NotificationType.GORUSH`.
|
:param str, optional mattermostusername: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`
|
||||||
:param str, optional gotifyserverurl: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`.
|
:param str, optional mattermostWebhookUrl: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`
|
||||||
:param str, optional gotifyapplicationToken: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`.
|
:param str, optional mattermostchannel: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`
|
||||||
:param int, optional gotifyPriority: Notification option for ``type`` :attr:`~.NotificationType.GOTIFY`.
|
:param str, optional mattermosticonemo: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`
|
||||||
:param str notificationService: Notification option for ``type`` :attr:`~.NotificationType.HOMEASSISTANT`.
|
:param str, optional mattermosticonurl: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`
|
||||||
:param str, optional homeAssistantUrl: Notification option for ``type`` :attr:`~.NotificationType.HOMEASSISTANT`.
|
:param str, optional httpAddr: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`
|
||||||
:param str, optional longLivedAccessToken: Notification option for ``type`` :attr:`~.NotificationType.HOMEASSISTANT`.
|
:param str, optional accessToken: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`
|
||||||
:param str, optional kookGuildID: Notification option for ``type`` :attr:`~.NotificationType.KOOK`.
|
:param str, optional msgType: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`
|
||||||
:param str, optional kookBotToken: Notification option for ``type`` :attr:`~.NotificationType.KOOK`.
|
:param str, optional recieverId: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`
|
||||||
:param str, optional lineChannelAccessToken: Notification option for ``type`` :attr:`~.NotificationType.LINE`.
|
:param str, optional pagerdutyAutoResolve: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`
|
||||||
:param str, optional lineUserID: Notification option for ``type`` :attr:`~.NotificationType.LINE`.
|
:param str, optional pagerdutyIntegrationUrl: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`
|
||||||
:param str, optional lineNotifyAccessToken: Notification option for ``type`` :attr:`~.NotificationType.LINENOTIFY`.
|
:param str, optional pagerdutyPriority: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`
|
||||||
:param str, optional lunaseaTarget: Notification option for ``type`` :attr:`~.NotificationType.LUNASEA`. Allowed values: "device", "user".
|
:param str, optional pagerdutyIntegrationKey: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`
|
||||||
:param str lunaseaUserID: Notification option for ``type`` :attr:`~.NotificationType.LUNASEA`. User ID.
|
:param str, optional promosmsLogin: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`
|
||||||
:param str lunaseaDevice: Notification option for ``type`` :attr:`~.NotificationType.LUNASEA`. Device ID.
|
:param str, optional promosmsPassword: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`
|
||||||
:param str, optional internalRoomId: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`.
|
:param str, optional promosmsPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`
|
||||||
:param str, optional accessToken: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`.
|
:param str, optional promosmsSMSType: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`
|
||||||
:param str, optional homeserverUrl: Notification option for ``type`` :attr:`~.NotificationType.MATRIX`.
|
:param str, optional promosmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`
|
||||||
:param str mattermostusername: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`.
|
:param str, optional pushbulletAccessToken: Notification option for ``type`` :attr:`~.NotificationType.PUSHBULLET`
|
||||||
:param str, optional mattermostWebhookUrl: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`.
|
:param str, optional pushdeerKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHDEER`
|
||||||
:param str mattermostchannel: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`.
|
:param str, optional pushoveruserkey: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str mattermosticonemo: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`.
|
:param str, optional pushoverapptoken: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str mattermosticonurl: Notification option for ``type`` :attr:`~.NotificationType.MATTERMOST`.
|
:param str, optional pushoversounds: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str, optional sender: Notification option for ``type`` :attr:`~.NotificationType.NOSTR`.
|
:param str, optional pushoverpriority: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str, optional recipients: Notification option for ``type`` :attr:`~.NotificationType.NOSTR`.
|
:param str, optional pushovertitle: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str, optional relays: Notification option for ``type`` :attr:`~.NotificationType.NOSTR`.
|
:param str, optional pushoverdevice: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`
|
||||||
:param str ntfyAuthenticationMethod: Notification option for ``type`` :attr:`~.NotificationType.NTFY`. Authentication Method.
|
:param str, optional pushyAPIKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHY`
|
||||||
:param str ntfyusername: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional pushyToken: Notification option for ``type`` :attr:`~.NotificationType.PUSHY`
|
||||||
:param str ntfypassword: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional rocketchannel: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`
|
||||||
:param str ntfyaccesstoken: Notification option for ``type`` :attr:`~.NotificationType.NTFY`. Access Token.
|
:param str, optional rocketusername: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`
|
||||||
:param str, optional ntfytopic: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional rocketiconemo: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`
|
||||||
:param int, optional ntfyPriority: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional rocketwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`
|
||||||
:param str, optional ntfyserverurl: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional rocketbutton: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`
|
||||||
:param str ntfyIcon: Notification option for ``type`` :attr:`~.NotificationType.NTFY`.
|
:param str, optional serwersmsUsername: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`
|
||||||
:param str octopushVersion: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional serwersmsPassword: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`
|
||||||
:param str, optional octopushAPIKey: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional serwersmsPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`
|
||||||
:param str, optional octopushLogin: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional serwersmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`
|
||||||
:param str, optional octopushPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional signalNumber: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`
|
||||||
:param str octopushSMSType: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional signalRecipients: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`
|
||||||
:param str octopushSenderName: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`.
|
:param str, optional signalURL: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`
|
||||||
:param str, optional httpAddr: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`.
|
:param str, optional slackbutton: Notification option for ``type`` :attr:`~.NotificationType.SLACK`
|
||||||
:param str, optional accessToken: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`.
|
:param str, optional slackchannel: Notification option for ``type`` :attr:`~.NotificationType.SLACK`
|
||||||
:param str msgType: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`.
|
:param str, optional slackusername: Notification option for ``type`` :attr:`~.NotificationType.SLACK`
|
||||||
:param str, optional recieverId: Notification option for ``type`` :attr:`~.NotificationType.ONEBOT`.
|
:param str, optional slackiconemo: Notification option for ``type`` :attr:`~.NotificationType.SLACK`
|
||||||
:param int opsgeniePriority: Notification option for ``type`` :attr:`~.NotificationType.OPSGENIE`. Priority. Available values are numbers between ``1`` and ``5``.
|
:param str, optional slackwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.SLACK`
|
||||||
:param str, optional opsgenieRegion: Notification option for ``type`` :attr:`~.NotificationType.OPSGENIE`. Region. Available values are:
|
:param str, optional smtpHost: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
|
:param int, optional smtpPort: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
- ``us``: US (Default)
|
:param str, optional smtpSecure: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
- ``eu``: EU
|
:param str, optional smtpIgnoreTLSError: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str, optional opsgenieApiKey: Notification option for ``type`` :attr:`~.NotificationType.OPSGENIE`. API Key.
|
:param str, optional smtpDkimDomain: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagerdutyAutoResolve: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`.
|
:param str, optional smtpDkimKeySelector: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagerdutyIntegrationUrl: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`.
|
:param str, optional smtpDkimPrivateKey: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagerdutyPriority: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`.
|
:param str, optional smtpDkimHashAlgo: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str, optional pagerdutyIntegrationKey: Notification option for ``type`` :attr:`~.NotificationType.PAGERDUTY`.
|
:param str, optional smtpDkimheaderFieldNames: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagertreeAutoResolve: Notification option for ``type`` :attr:`~.NotificationType.PAGERTREE`.
|
:param str, optional smtpDkimskipFields: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
|
:param str, optional smtpUsername: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
Available values are:
|
:param str, optional smtpPassword: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
|
:param str, optional customSubject: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
- ``0``: Do Nothing
|
:param str, optional smtpFrom: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
- ``resolve``: Auto Resolve
|
:param str, optional smtpCC: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagertreeIntegrationUrl: Notification option for ``type`` :attr:`~.NotificationType.PAGERTREE`.
|
:param str, optional smtpBCC: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
:param str pagertreeUrgency: Notification option for ``type`` :attr:`~.NotificationType.PAGERTREE`.
|
:param str, optional smtpTo: Notification option for ``type`` :attr:`~.NotificationType.SMTP`
|
||||||
|
:param str, optional stackfieldwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.STACKFIELD`
|
||||||
Available values are:
|
:param str, optional pushAPIKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHBYTECHULUS`
|
||||||
|
:param str, optional telegramBotToken: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`
|
||||||
- ``silent``: Silent
|
:param str, optional telegramChatID: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`
|
||||||
- ``low``: Low
|
:param str, optional webhookContentType: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`
|
||||||
- ``medium``: Medium
|
:param str, optional webhookAdditionalHeaders: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`
|
||||||
- ``high``: High
|
:param str, optional webhookURL: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`
|
||||||
- ``critical``: Critical
|
:param str, optional weComBotKey: Notification option for ``type`` :attr:`~.NotificationType.WECOM`
|
||||||
:param bool promosmsAllowLongSMS: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`. Allow long SMS.
|
:param str, optional alertNowWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.ALERTNOW`
|
||||||
:param str, optional promosmsLogin: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`.
|
:param str, optional homeAssistantUrl: Notification option for ``type`` :attr:`~.NotificationType.HOMEASSISTANT`
|
||||||
:param str, optional promosmsPassword: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`.
|
:param str, optional longLivedAccessToken: Notification option for ``type`` :attr:`~.NotificationType.HOMEASSISTANT`
|
||||||
:param str, optional promosmsPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`. Phone number (for Polish recipient You can skip area codes).
|
:param str, optional lineNotifyAccessToken: Notification option for ``type`` :attr:`~.NotificationType.LINENOTIFY`
|
||||||
:param str promosmsSMSType: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`.
|
:param str, optional barkEndpoint: Notification option for ``type`` :attr:`~.NotificationType.BARK`
|
||||||
|
:param str, optional barkGroup: Notification option for ``type`` :attr:`~.NotificationType.BARK`
|
||||||
Available values are:
|
:param str, optional barkSound: Notification option for ``type`` :attr:`~.NotificationType.BARK`
|
||||||
|
:param str, optional goAlertBaseURL: Notification option for ``type`` :attr:`~.NotificationType.GOALERT`
|
||||||
- ``0``: SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.
|
:param str, optional goAlertToken: Notification option for ``type`` :attr:`~.NotificationType.GOALERT`
|
||||||
- ``1``: SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.
|
:param str, optional octopushVersion: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
- ``3``: SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.
|
:param str, optional octopushAPIKey: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
- ``4``: SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).
|
:param str, optional octopushLogin: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str promosmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.PROMOSMS`.
|
:param str, optional octopushPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str, optional pushbulletAccessToken: Notification option for ``type`` :attr:`~.NotificationType.PUSHBULLET`.
|
:param str, optional octopushSMSType: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str pushdeerServer: Notification option for ``type`` :attr:`~.NotificationType.PUSHDEER`.
|
:param str, optional octopushSenderName: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str, optional pushdeerKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHDEER`.
|
:param str, optional octopushDMLogin: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str, optional pushoveruserkey: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional octopushDMAPIKey: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str, optional pushoverapptoken: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional octopushDMPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str pushoversounds: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional octopushDMSenderName: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str pushoverpriority: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional octopushDMSMSType: Notification option for ``type`` :attr:`~.NotificationType.OCTOPUSH`
|
||||||
:param str pushovertitle: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional serverChanSendKey: Notification option for ``type`` :attr:`~.NotificationType.SERVERCHAN`
|
||||||
:param str pushoverdevice: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`.
|
:param str, optional smsmanagerApiKey: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`
|
||||||
:param int pushoverttl: Notification option for ``type`` :attr:`~.NotificationType.PUSHOVER`. Message TTL (Seconds).
|
:param str, optional numbers: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`
|
||||||
:param str, optional pushyAPIKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHY`.
|
:param str, optional messageType: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`
|
||||||
:param str, optional pushyToken: Notification option for ``type`` :attr:`~.NotificationType.PUSHY`.
|
:param str, optional squadcastWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.SQUADCAST`
|
||||||
:param str rocketchannel: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`.
|
:param str, optional webhookUrl: Notification option for ``type`` :attr:`~.NotificationType.TEAMS`
|
||||||
:param str rocketusername: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`.
|
:param str, optional freemobileUser: Notification option for ``type`` :attr:`~.NotificationType.FREEMOBILE`
|
||||||
:param str rocketiconemo: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`.
|
:param str, optional freemobilePass: Notification option for ``type`` :attr:`~.NotificationType.FREEMOBILE`
|
||||||
:param str, optional rocketwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.ROCKET_CHAT`.
|
:param str, optional ntfyusername: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str, optional serverChanSendKey: Notification option for ``type`` :attr:`~.NotificationType.SERVERCHAN`.
|
:param str, optional ntfypassword: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str, optional serwersmsUsername: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`.
|
:param str, optional ntfytopic: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str, optional serwersmsPassword: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`.
|
:param int, optional ntfyPriority: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str, optional serwersmsPhoneNumber: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`.
|
:param int, optional ntfyIcon: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str serwersmsSenderName: Notification option for ``type`` :attr:`~.NotificationType.SERWERSMS`.
|
:param str, optional ntfyserverurl: Notification option for ``type`` :attr:`~.NotificationType.NTFY`
|
||||||
:param str, optional signalNumber: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`.
|
:param bool, optional smseagleEncoding: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. True to send messages in unicode.
|
||||||
:param str, optional signalRecipients: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`.
|
:param int, optional smseaglePriority: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Message priority (0-9, default = 0).
|
||||||
:param str, optional signalURL: Notification option for ``type`` :attr:`~.NotificationType.SIGNAL`.
|
:param str, optional smseagleRecipientType: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Recipient type. Available values are "smseagle-to" (Phone number(s)), "smseagle-group" (Phonebook group name(s)) and "smseagle-contact" (Phonebook contact name(s)).
|
||||||
:param bool slackchannelnotify: Notification option for ``type`` :attr:`~.NotificationType.SLACK`.
|
|
||||||
:param str slackchannel: Notification option for ``type`` :attr:`~.NotificationType.SLACK`.
|
|
||||||
:param str slackusername: Notification option for ``type`` :attr:`~.NotificationType.SLACK`.
|
|
||||||
:param str slackiconemo: Notification option for ``type`` :attr:`~.NotificationType.SLACK`.
|
|
||||||
:param str, optional slackwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.SLACK`.
|
|
||||||
:param str smscTranslit: Notification option for ``type`` :attr:`~.NotificationType.SMSC`.
|
|
||||||
:param str, optional smscLogin: Notification option for ``type`` :attr:`~.NotificationType.SMSC`.
|
|
||||||
:param str, optional smscPassword: Notification option for ``type`` :attr:`~.NotificationType.SMSC`.
|
|
||||||
:param str, optional smscToNumber: Notification option for ``type`` :attr:`~.NotificationType.SMSC`.
|
|
||||||
:param str smscSenderName: Notification option for ``type`` :attr:`~.NotificationType.SMSC`.
|
|
||||||
:param bool smseagleEncoding: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. True to send messages in unicode.
|
|
||||||
:param int smseaglePriority: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Message priority (0-9, default = 0).
|
|
||||||
:param str smseagleRecipientType: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Recipient type.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``smseagle-to``: Phone number(s)
|
|
||||||
- ``smseagle-group``: Phonebook group name(s)
|
|
||||||
- ``smseagle-contact``: Phonebook contact name(s)
|
|
||||||
:param str, optional smseagleToken: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. API Access token.
|
:param str, optional smseagleToken: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. API Access token.
|
||||||
:param str, optional smseagleRecipient: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Recipient(s) (multiple must be separated with comma).
|
:param str, optional smseagleRecipient: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Recipient(s) (multiple must be separated with comma).
|
||||||
:param str, optional smseagleUrl: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Your SMSEagle device URL.
|
:param str, optional smseagleUrl: Notification option for ``type`` :attr:`~.NotificationType.SMSEAGLE`. Your SMSEagle device URL.
|
||||||
:param str smsmanagerApiKey: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`.
|
|
||||||
:param str numbers: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`.
|
|
||||||
:param str messageType: Notification option for ``type`` :attr:`~.NotificationType.SMSMANAGER`.
|
|
||||||
:param str, optional smtpHost: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param int, optional smtpPort: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpSecure: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param bool smtpIgnoreTLSError: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimDomain: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimKeySelector: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimPrivateKey: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimHashAlgo: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimheaderFieldNames: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpDkimskipFields: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpUsername: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpPassword: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str customSubject: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str, optional smtpFrom: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpCC: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpBCC: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str smtpTo: Notification option for ``type`` :attr:`~.NotificationType.SMTP`.
|
|
||||||
:param str splunkAutoResolve: Notification option for ``type`` :attr:`~.NotificationType.SPLUNK`. Auto resolve or acknowledged.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``0``: do nothing
|
|
||||||
- ``ACKNOWLEDGEMENT``: auto acknowledged
|
|
||||||
- ``RECOVERY``: auto resolve
|
|
||||||
:param str splunkSeverity: Notification option for ``type`` :attr:`~.NotificationType.SPLUNK`. Severity.
|
|
||||||
|
|
||||||
Available values are:
|
|
||||||
|
|
||||||
- ``INFO``
|
|
||||||
- ``WARNING``
|
|
||||||
- ``CRITICAL``
|
|
||||||
:param str, optional splunkRestURL: Notification option for ``type`` :attr:`~.NotificationType.SPLUNK`. Splunk Rest URL.
|
|
||||||
:param str, optional squadcastWebhookURL: Notification option for ``type`` :attr:`~.NotificationType.SQUADCAST`.
|
|
||||||
:param str, optional stackfieldwebhookURL: Notification option for ``type`` :attr:`~.NotificationType.STACKFIELD`.
|
|
||||||
:param str, optional webhookUrl: Notification option for ``type`` :attr:`~.NotificationType.TEAMS`.
|
|
||||||
:param str, optional pushAPIKey: Notification option for ``type`` :attr:`~.NotificationType.PUSHBYTECHULUS`.
|
|
||||||
:param str, optional telegramChatID: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`.
|
|
||||||
:param bool telegramSendSilently: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`.
|
|
||||||
:param bool telegramProtectContent: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`.
|
|
||||||
:param str telegramMessageThreadID: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`.
|
|
||||||
:param str, optional telegramBotToken: Notification option for ``type`` :attr:`~.NotificationType.TELEGRAM`.
|
|
||||||
:param str, optional twilioAccountSID: Notification option for ``type`` :attr:`~.NotificationType.TWILIO`. Account SID.
|
|
||||||
:param str twilioApiKey: Notification option for ``type`` :attr:`~.NotificationType.TWILIO`.
|
|
||||||
:param str, optional twilioAuthToken: Notification option for ``type`` :attr:`~.NotificationType.TWILIO`. Auth Token.
|
|
||||||
:param str, optional twilioToNumber: Notification option for ``type`` :attr:`~.NotificationType.TWILIO`. To Number.
|
|
||||||
:param str, optional twilioFromNumber: Notification option for ``type`` :attr:`~.NotificationType.TWILIO`. From Number.
|
|
||||||
:param str, optional webhookContentType: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`.
|
|
||||||
:param str webhookCustomBody: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`.
|
|
||||||
:param str webhookAdditionalHeaders: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`.
|
|
||||||
:param str, optional webhookURL: Notification option for ``type`` :attr:`~.NotificationType.WEBHOOK`.
|
|
||||||
:param str, optional weComBotKey: Notification option for ``type`` :attr:`~.NotificationType.WECOM`.
|
|
||||||
:param str, optional webhookUrl: Notification option for ``type`` :attr:`~.NotificationType.ZOHOCLIQ`.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def proxy_docstring(mode) -> str:
|
def proxy_docstring(mode) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
:param ProxyProtocol{", optional" if mode == "edit" else ""} protocol: Proxy Protocol
|
:param ProxyProtocol{", optional" if mode == "edit" else ""} protocol: Proxy Protocol
|
||||||
|
@ -354,7 +229,6 @@ def proxy_docstring(mode) -> str:
|
||||||
:param bool, optional applyExisting: Apply on all existing monitors, defaults to False
|
:param bool, optional applyExisting: Apply on all existing monitors, defaults to False
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def docker_host_docstring(mode) -> str:
|
def docker_host_docstring(mode) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
:param str{", optional" if mode == "edit" else ""} name: Friendly Name
|
||||||
|
@ -362,7 +236,6 @@ def docker_host_docstring(mode) -> str:
|
||||||
:param str, optional dockerDaemon: Docker Daemon, defaults to None
|
:param str, optional dockerDaemon: Docker Daemon, defaults to None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def maintenance_docstring(mode) -> str:
|
def maintenance_docstring(mode) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
:param str{", optional" if mode == "edit" else ""} title: Title
|
:param str{", optional" if mode == "edit" else ""} title: Title
|
||||||
|
@ -372,16 +245,6 @@ def maintenance_docstring(mode) -> str:
|
||||||
:param list, optional dateRange: DateTime Range, defaults to ``["<current date>"]``
|
:param list, optional dateRange: DateTime Range, defaults to ``["<current date>"]``
|
||||||
:param int, optional intervalDay: Interval (Run once every day), defaults to ``1``
|
:param int, optional intervalDay: Interval (Run once every day), defaults to ``1``
|
||||||
:param list, optional weekdays: List that contains the days of the week on which the maintenance is enabled (Sun = ``0``, Mon = ``1``, ..., Sat = ``6``). Required for ``strategy`` :attr:`~.MaintenanceStrategy.RECURRING_WEEKDAY`., defaults to ``[]``.
|
:param list, optional weekdays: List that contains the days of the week on which the maintenance is enabled (Sun = ``0``, Mon = ``1``, ..., Sat = ``6``). Required for ``strategy`` :attr:`~.MaintenanceStrategy.RECURRING_WEEKDAY`., defaults to ``[]``.
|
||||||
:param list, optional daysOfMonth: List that contains the days of the month on which the maintenance is enabled (Day 1 = ``1``, Day 2 = ``2``, ..., Day 31 = ``31``) and the last day of the month (``"lastDay1"``). Required for ``strategy`` :attr:`~.MaintenanceStrategy.RECURRING_DAY_OF_MONTH`., defaults to ``[]``.
|
:param list, optional daysOfMonth: List that contains the days of the month on which the maintenance is enabled (Day 1 = ``1``, Day 2 = ``2``, ..., Day 31 = ``31``) and the last day of the month (Last Day of Month = ``"lastDay1"``, 2nd Last Day of Month = ``"lastDay2"``, 3rd Last Day of Month = ``"lastDay3"``, 4th Last Day of Month = ``"lastDay4"``). Required for ``strategy`` :attr:`~.MaintenanceStrategy.RECURRING_DAY_OF_MONTH`., defaults to ``[]``.
|
||||||
:param list, optional timeRange: Maintenance Time Window of a Day, defaults to ``[{{"hours": 2, "minutes": 0}}, {{"hours": 3, "minutes": 0}}]``.
|
:param list, optional timeRange: Maintenance Time Window of a Day, defaults to ``[{{"hours": 2, "minutes": 0}}, {{"hours": 3, "minutes": 0}}]``.
|
||||||
:param str, optional cron: Cron Schedule. Required for ``strategy`` :attr:`~.MaintenanceStrategy.CRON`., defaults to ``"30 3 * * *"``
|
|
||||||
:param int, optional durationMinutes: Duration (Minutes). Required for ``strategy`` :attr:`~.MaintenanceStrategy.CRON`., defaults to ``60``
|
|
||||||
:param str, optional timezone: Timezone, defaults to ``None`` (Server Timezone)
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def tag_docstring(mode) -> str:
|
|
||||||
return f"""
|
|
||||||
:param str{", optional" if mode == "edit" else ""} name: Tag name
|
|
||||||
:param str{", optional" if mode == "edit" else ""} color: Tag color
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -19,4 +19,3 @@ class Event(str, Enum):
|
||||||
AUTO_LOGIN = "autoLogin"
|
AUTO_LOGIN = "autoLogin"
|
||||||
INIT_SERVER_TIMEZONE = "initServerTimezone"
|
INIT_SERVER_TIMEZONE = "initServerTimezone"
|
||||||
MAINTENANCE_LIST = "maintenanceList"
|
MAINTENANCE_LIST = "maintenanceList"
|
||||||
API_KEY_LIST = "apiKeyList"
|
|
||||||
|
|
|
@ -2,9 +2,4 @@ class UptimeKumaException(Exception):
|
||||||
"""
|
"""
|
||||||
There was an exception that occurred while communicating with Uptime Kuma.
|
There was an exception that occurred while communicating with Uptime Kuma.
|
||||||
"""
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
class Timeout(UptimeKumaException):
|
|
||||||
"""
|
|
||||||
A timeout has occurred while communicating with Uptime Kuma.
|
|
||||||
"""
|
|
||||||
|
|
|
@ -18,6 +18,3 @@ class MaintenanceStrategy(str, Enum):
|
||||||
|
|
||||||
RECURRING_DAY_OF_MONTH = "recurring-day-of-month"
|
RECURRING_DAY_OF_MONTH = "recurring-day-of-month"
|
||||||
"""Recurring - Day of Month"""
|
"""Recurring - Day of Month"""
|
||||||
|
|
||||||
CRON = "cron"
|
|
||||||
"""Cron Expression"""
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
from enum import Enum
|
|
||||||
|
|
||||||
|
|
||||||
class MonitorStatus(int, Enum):
|
|
||||||
"""Enumerate monitor statuses."""
|
|
||||||
|
|
||||||
DOWN = 0
|
|
||||||
"""DOWN"""
|
|
||||||
|
|
||||||
UP = 1
|
|
||||||
"""UP"""
|
|
||||||
|
|
||||||
PENDING = 2
|
|
||||||
"""PENDING"""
|
|
||||||
|
|
||||||
MAINTENANCE = 3
|
|
||||||
"""MAINTENANCE"""
|
|
|
@ -3,9 +3,6 @@ from enum import Enum
|
||||||
|
|
||||||
class MonitorType(str, Enum):
|
class MonitorType(str, Enum):
|
||||||
"""Enumerate monitor types."""
|
"""Enumerate monitor types."""
|
||||||
|
|
||||||
GROUP = "group"
|
|
||||||
"""Group"""
|
|
||||||
|
|
||||||
HTTP = "http"
|
HTTP = "http"
|
||||||
"""HTTP(s)"""
|
"""HTTP(s)"""
|
||||||
|
@ -19,9 +16,6 @@ class MonitorType(str, Enum):
|
||||||
KEYWORD = "keyword"
|
KEYWORD = "keyword"
|
||||||
"""HTTP(s) - Keyword"""
|
"""HTTP(s) - Keyword"""
|
||||||
|
|
||||||
JSON_QUERY = "json-query"
|
|
||||||
"""HTTP(s) - Json Query"""
|
|
||||||
|
|
||||||
GRPC_KEYWORD = "grpc-keyword"
|
GRPC_KEYWORD = "grpc-keyword"
|
||||||
"""gRPC(s) - Keyword"""
|
"""gRPC(s) - Keyword"""
|
||||||
|
|
||||||
|
@ -31,24 +25,15 @@ class MonitorType(str, Enum):
|
||||||
DOCKER = "docker"
|
DOCKER = "docker"
|
||||||
"""Docker Container"""
|
"""Docker Container"""
|
||||||
|
|
||||||
REAL_BROWSER = "real-browser"
|
|
||||||
"""HTTP(s) - Browser Engine (Chrome/Chromium)"""
|
|
||||||
|
|
||||||
PUSH = "push"
|
PUSH = "push"
|
||||||
"""Push"""
|
"""Push"""
|
||||||
|
|
||||||
STEAM = "steam"
|
STEAM = "steam"
|
||||||
"""Steam Game Server"""
|
"""Steam Game Server"""
|
||||||
|
|
||||||
GAMEDIG = "gamedig"
|
|
||||||
"""GameDig"""
|
|
||||||
|
|
||||||
MQTT = "mqtt"
|
MQTT = "mqtt"
|
||||||
"""MQTT"""
|
"""MQTT"""
|
||||||
|
|
||||||
KAFKA_PRODUCER = "kafka-producer"
|
|
||||||
"""Kafka Producer"""
|
|
||||||
|
|
||||||
SQLSERVER = "sqlserver"
|
SQLSERVER = "sqlserver"
|
||||||
"""Microsoft SQL Server"""
|
"""Microsoft SQL Server"""
|
||||||
|
|
||||||
|
@ -58,14 +43,5 @@ class MonitorType(str, Enum):
|
||||||
MYSQL = "mysql"
|
MYSQL = "mysql"
|
||||||
"""MySQL/MariaDB"""
|
"""MySQL/MariaDB"""
|
||||||
|
|
||||||
MONGODB = "mongodb"
|
|
||||||
"""MongoDB"""
|
|
||||||
|
|
||||||
RADIUS = "radius"
|
RADIUS = "radius"
|
||||||
"""Radius"""
|
"""Radius"""
|
||||||
|
|
||||||
REDIS = "redis"
|
|
||||||
"""Redis"""
|
|
||||||
|
|
||||||
TAILSCALE_PING = "tailscale-ping"
|
|
||||||
"""Tailscale Ping"""
|
|
||||||
|
|
|
@ -7,18 +7,12 @@ class NotificationType(str, Enum):
|
||||||
ALERTA = "alerta"
|
ALERTA = "alerta"
|
||||||
"""Alerta"""
|
"""Alerta"""
|
||||||
|
|
||||||
ALERTNOW = "AlertNow"
|
|
||||||
"""AlertNow"""
|
|
||||||
|
|
||||||
ALIYUNSMS = "AliyunSMS"
|
ALIYUNSMS = "AliyunSMS"
|
||||||
"""AliyunSMS"""
|
"""AliyunSMS"""
|
||||||
|
|
||||||
APPRISE = "apprise"
|
APPRISE = "apprise"
|
||||||
"""Apprise (Support 50+ Notification services)"""
|
"""Apprise (Support 50+ Notification services)"""
|
||||||
|
|
||||||
BARK = "Bark"
|
|
||||||
"""Bark"""
|
|
||||||
|
|
||||||
CLICKSENDSMS = "clicksendsms"
|
CLICKSENDSMS = "clicksendsms"
|
||||||
"""ClickSend SMS"""
|
"""ClickSend SMS"""
|
||||||
|
|
||||||
|
@ -31,17 +25,8 @@ class NotificationType(str, Enum):
|
||||||
FEISHU = "Feishu"
|
FEISHU = "Feishu"
|
||||||
"""Feishu"""
|
"""Feishu"""
|
||||||
|
|
||||||
FLASHDUTY = "FlashDuty"
|
|
||||||
"""FlashDuty"""
|
|
||||||
|
|
||||||
FREEMOBILE = "FreeMobile"
|
|
||||||
"""FreeMobile (mobile.free.fr)"""
|
|
||||||
|
|
||||||
GOALERT = "GoAlert"
|
|
||||||
"""GoAlert"""
|
|
||||||
|
|
||||||
GOOGLECHAT = "GoogleChat"
|
GOOGLECHAT = "GoogleChat"
|
||||||
"""Google Chat (Google Workspace)"""
|
"""Google Chat (Google Workspace only)"""
|
||||||
|
|
||||||
GORUSH = "gorush"
|
GORUSH = "gorush"
|
||||||
"""Gorush"""
|
"""Gorush"""
|
||||||
|
@ -49,17 +34,8 @@ class NotificationType(str, Enum):
|
||||||
GOTIFY = "gotify"
|
GOTIFY = "gotify"
|
||||||
"""Gotify"""
|
"""Gotify"""
|
||||||
|
|
||||||
HOMEASSISTANT = "HomeAssistant"
|
|
||||||
"""Home Assistant"""
|
|
||||||
|
|
||||||
KOOK = "Kook"
|
|
||||||
"""Kook"""
|
|
||||||
|
|
||||||
LINE = "line"
|
LINE = "line"
|
||||||
"""LINE Messenger"""
|
"""Line Messenger"""
|
||||||
|
|
||||||
LINENOTIFY = "LineNotify"
|
|
||||||
"""LINE Notify"""
|
|
||||||
|
|
||||||
LUNASEA = "lunasea"
|
LUNASEA = "lunasea"
|
||||||
"""LunaSea"""
|
"""LunaSea"""
|
||||||
|
@ -70,27 +46,12 @@ class NotificationType(str, Enum):
|
||||||
MATTERMOST = "mattermost"
|
MATTERMOST = "mattermost"
|
||||||
"""Mattermost"""
|
"""Mattermost"""
|
||||||
|
|
||||||
NOSTR = "nostr"
|
|
||||||
"""Nostr"""
|
|
||||||
|
|
||||||
NTFY = "ntfy"
|
|
||||||
"""Ntfy"""
|
|
||||||
|
|
||||||
OCTOPUSH = "octopush"
|
|
||||||
"""Octopush"""
|
|
||||||
|
|
||||||
ONEBOT = "OneBot"
|
ONEBOT = "OneBot"
|
||||||
"""OneBot"""
|
"""OneBot"""
|
||||||
|
|
||||||
OPSGENIE = "Opsgenie"
|
|
||||||
"""Opsgenie"""
|
|
||||||
|
|
||||||
PAGERDUTY = "PagerDuty"
|
PAGERDUTY = "PagerDuty"
|
||||||
"""PagerDuty"""
|
"""PagerDuty"""
|
||||||
|
|
||||||
PAGERTREE = "PagerTree"
|
|
||||||
"""PagerTree"""
|
|
||||||
|
|
||||||
PROMOSMS = "promosms"
|
PROMOSMS = "promosms"
|
||||||
"""PromoSMS"""
|
"""PromoSMS"""
|
||||||
|
|
||||||
|
@ -109,9 +70,6 @@ class NotificationType(str, Enum):
|
||||||
ROCKET_CHAT = "rocket.chat"
|
ROCKET_CHAT = "rocket.chat"
|
||||||
"""Rocket.Chat"""
|
"""Rocket.Chat"""
|
||||||
|
|
||||||
SERVERCHAN = "ServerChan"
|
|
||||||
"""ServerChan"""
|
|
||||||
|
|
||||||
SERWERSMS = "serwersms"
|
SERWERSMS = "serwersms"
|
||||||
"""SerwerSMS.pl"""
|
"""SerwerSMS.pl"""
|
||||||
|
|
||||||
|
@ -121,362 +79,321 @@ class NotificationType(str, Enum):
|
||||||
SLACK = "slack"
|
SLACK = "slack"
|
||||||
"""Slack"""
|
"""Slack"""
|
||||||
|
|
||||||
SMSC = "smsc"
|
|
||||||
"""SMSC"""
|
|
||||||
|
|
||||||
SMSEAGLE = "SMSEagle"
|
|
||||||
"""SMSEagle"""
|
|
||||||
|
|
||||||
SMSMANAGER = "SMSManager"
|
|
||||||
"""SmsManager (smsmanager.cz)"""
|
|
||||||
|
|
||||||
SMTP = "smtp"
|
SMTP = "smtp"
|
||||||
"""Email (SMTP)"""
|
"""Email (SMTP)"""
|
||||||
|
|
||||||
SPLUNK = "Splunk"
|
|
||||||
"""Splunk"""
|
|
||||||
|
|
||||||
SQUADCAST = "squadcast"
|
|
||||||
"""SquadCast"""
|
|
||||||
|
|
||||||
STACKFIELD = "stackfield"
|
STACKFIELD = "stackfield"
|
||||||
"""Stackfield"""
|
"""Stackfield"""
|
||||||
|
|
||||||
TEAMS = "teams"
|
|
||||||
"""Microsoft Teams"""
|
|
||||||
|
|
||||||
PUSHBYTECHULUS = "PushByTechulus"
|
PUSHBYTECHULUS = "PushByTechulus"
|
||||||
"""Push by Techulus"""
|
"""Push by Techulus"""
|
||||||
|
|
||||||
TELEGRAM = "telegram"
|
TELEGRAM = "telegram"
|
||||||
"""Telegram"""
|
"""Telegram"""
|
||||||
|
|
||||||
TWILIO = "twilio"
|
|
||||||
"""Twilio"""
|
|
||||||
|
|
||||||
WEBHOOK = "webhook"
|
WEBHOOK = "webhook"
|
||||||
"""Webhook"""
|
"""Webhook"""
|
||||||
|
|
||||||
WECOM = "WeCom"
|
WECOM = "WeCom"
|
||||||
"""WeCom"""
|
"""WeCom"""
|
||||||
|
|
||||||
ZOHOCLIQ = "ZohoCliq"
|
ALERTNOW = "AlertNow"
|
||||||
"""ZohoCliq"""
|
"""AlertNow"""
|
||||||
|
|
||||||
|
HOMEASSISTANT = "HomeAssistant"
|
||||||
|
"""Home Assistant"""
|
||||||
|
|
||||||
|
LINENOTIFY = "LineNotify"
|
||||||
|
"""LineNotify"""
|
||||||
|
|
||||||
|
BARK = "Bark"
|
||||||
|
"""Bark"""
|
||||||
|
|
||||||
|
GOALERT = "GoAlert"
|
||||||
|
"""GoAlert"""
|
||||||
|
|
||||||
|
OCTOPUSH = "octopush"
|
||||||
|
"""Octopush"""
|
||||||
|
|
||||||
|
SERVERCHAN = "ServerChan"
|
||||||
|
"""ServerChan"""
|
||||||
|
|
||||||
|
SMSMANAGER = "SMSManager"
|
||||||
|
"""SMSManager"""
|
||||||
|
|
||||||
|
SQUADCAST = "squadcast"
|
||||||
|
"""Squadcast"""
|
||||||
|
|
||||||
|
TEAMS = "teams"
|
||||||
|
"""Microsoft Teams"""
|
||||||
|
|
||||||
|
FREEMOBILE = "FreeMobile"
|
||||||
|
"""FreeMobile"""
|
||||||
|
|
||||||
|
NTFY = "ntfy"
|
||||||
|
"""ntfy"""
|
||||||
|
|
||||||
|
SMSEAGLE = "SMSEagle"
|
||||||
|
"""SMSEagle"""
|
||||||
|
|
||||||
|
|
||||||
notification_provider_options = {
|
notification_provider_options = {
|
||||||
NotificationType.ALERTA: dict(
|
NotificationType.ALERTA: dict(
|
||||||
alertaApiEndpoint=dict(type="str", required=True),
|
alertaApiEndpoint=dict(
|
||||||
alertaApiKey=dict(type="str", required=True),
|
type="str"
|
||||||
alertaEnvironment=dict(type="str", required=True),
|
),
|
||||||
alertaAlertState=dict(type="str", required=True),
|
alertaApiKey=dict(type="str"),
|
||||||
alertaRecoverState=dict(type="str", required=True),
|
alertaEnvironment=dict(type="str"),
|
||||||
),
|
alertaAlertState=dict(type="str"),
|
||||||
NotificationType.ALERTNOW: dict(
|
alertaRecoverState=dict(type="str"),
|
||||||
alertNowWebhookURL=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.ALIYUNSMS: dict(
|
NotificationType.ALIYUNSMS: dict(
|
||||||
phonenumber=dict(type="str", required=True),
|
phonenumber=dict(type="str"),
|
||||||
templateCode=dict(type="str", required=True),
|
templateCode=dict(type="str"),
|
||||||
signName=dict(type="str", required=True),
|
signName=dict(type="str"),
|
||||||
accessKeyId=dict(type="str", required=True),
|
accessKeyId=dict(type="str"),
|
||||||
secretAccessKey=dict(type="str", required=True),
|
secretAccessKey=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.APPRISE: dict(
|
NotificationType.APPRISE: dict(
|
||||||
appriseURL=dict(type="str", required=True),
|
appriseURL=dict(type="str"),
|
||||||
title=dict(type="str", required=False),
|
title=dict(type="str"),
|
||||||
),
|
|
||||||
NotificationType.BARK: dict(
|
|
||||||
barkEndpoint=dict(type="str", required=True),
|
|
||||||
barkGroup=dict(type="str", required=True),
|
|
||||||
barkSound=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.CLICKSENDSMS: dict(
|
NotificationType.CLICKSENDSMS: dict(
|
||||||
clicksendsmsLogin=dict(type="str", required=True),
|
clicksendsmsLogin=dict(type="str"),
|
||||||
clicksendsmsPassword=dict(type="str", required=True),
|
clicksendsmsPassword=dict(type="str"),
|
||||||
clicksendsmsToNumber=dict(type="str", required=True),
|
clicksendsmsToNumber=dict(type="str"),
|
||||||
clicksendsmsSenderName=dict(type="str", required=False),
|
clicksendsmsSenderName=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.DINGDING: dict(
|
NotificationType.DINGDING: dict(
|
||||||
webHookUrl=dict(type="str", required=True),
|
webHookUrl=dict(type="str"),
|
||||||
secretKey=dict(type="str", required=True),
|
secretKey=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.DISCORD: dict(
|
NotificationType.DISCORD: dict(
|
||||||
discordUsername=dict(type="str", required=False),
|
discordUsername=dict(type="str"),
|
||||||
discordWebhookUrl=dict(type="str", required=True),
|
discordWebhookUrl=dict(type="str"),
|
||||||
discordPrefixMessage=dict(type="str", required=False),
|
discordPrefixMessage=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.FEISHU: dict(
|
NotificationType.FEISHU: dict(
|
||||||
feishuWebHookUrl=dict(type="str", required=True),
|
feishuWebHookUrl=dict(type="str"),
|
||||||
),
|
|
||||||
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(
|
NotificationType.GOOGLECHAT: dict(
|
||||||
googleChatWebhookURL=dict(type="str", required=True),
|
googleChatWebhookURL=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.GORUSH: dict(
|
NotificationType.GORUSH: dict(
|
||||||
gorushDeviceToken=dict(type="str", required=True),
|
gorushDeviceToken=dict(type="str"),
|
||||||
gorushPlatform=dict(type="str", required=False),
|
gorushPlatform=dict(type="str"),
|
||||||
gorushTitle=dict(type="str", required=False),
|
gorushTitle=dict(type="str"),
|
||||||
gorushPriority=dict(type="str", required=False),
|
gorushPriority=dict(type="str"),
|
||||||
gorushRetry=dict(type="int", required=False),
|
gorushRetry=dict(type="str"),
|
||||||
gorushTopic=dict(type="str", required=False),
|
gorushTopic=dict(type="str"),
|
||||||
gorushServerURL=dict(type="str", required=True),
|
gorushServerURL=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.GOTIFY: dict(
|
NotificationType.GOTIFY: dict(
|
||||||
gotifyserverurl=dict(type="str", required=True),
|
gotifyserverurl=dict(type="str"),
|
||||||
gotifyapplicationToken=dict(type="str", required=True),
|
gotifyapplicationToken=dict(type="str"),
|
||||||
gotifyPriority=dict(type="int", required=True),
|
gotifyPriority=dict(type="int"),
|
||||||
),
|
|
||||||
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(
|
NotificationType.LINE: dict(
|
||||||
lineChannelAccessToken=dict(type="str", required=True),
|
lineChannelAccessToken=dict(type="str"),
|
||||||
lineUserID=dict(type="str", required=True),
|
lineUserID=dict(type="str"),
|
||||||
),
|
|
||||||
NotificationType.LINENOTIFY: dict(
|
|
||||||
lineNotifyAccessToken=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.LUNASEA: dict(
|
NotificationType.LUNASEA: dict(
|
||||||
lunaseaTarget=dict(type="str", required=True),
|
lunaseaDevice=dict(type="str"),
|
||||||
lunaseaUserID=dict(type="str", required=False),
|
|
||||||
lunaseaDevice=dict(type="str", required=False),
|
|
||||||
),
|
),
|
||||||
NotificationType.MATRIX: dict(
|
NotificationType.MATRIX: dict(
|
||||||
internalRoomId=dict(type="str", required=True),
|
internalRoomId=dict(type="str"),
|
||||||
accessToken=dict(type="str", required=True),
|
accessToken=dict(type="str"),
|
||||||
homeserverUrl=dict(type="str", required=True),
|
homeserverUrl=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.MATTERMOST: dict(
|
NotificationType.MATTERMOST: dict(
|
||||||
mattermostusername=dict(type="str", required=False),
|
mattermostusername=dict(type="str"),
|
||||||
mattermostWebhookUrl=dict(type="str", required=True),
|
mattermostWebhookUrl=dict(type="str"),
|
||||||
mattermostchannel=dict(type="str", required=False),
|
mattermostchannel=dict(type="str"),
|
||||||
mattermosticonemo=dict(type="str", required=False),
|
mattermosticonemo=dict(type="str"),
|
||||||
mattermosticonurl=dict(type="str", required=False),
|
mattermosticonurl=dict(type="str"),
|
||||||
),
|
|
||||||
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(
|
NotificationType.ONEBOT: dict(
|
||||||
httpAddr=dict(type="str", required=True),
|
httpAddr=dict(type="str"),
|
||||||
accessToken=dict(type="str", required=True),
|
accessToken=dict(type="str"),
|
||||||
msgType=dict(type="str", required=False),
|
msgType=dict(type="str"),
|
||||||
recieverId=dict(type="str", required=True),
|
recieverId=dict(type="str"),
|
||||||
),
|
|
||||||
NotificationType.OPSGENIE: dict(
|
|
||||||
opsgeniePriority=dict(type="int", required=False),
|
|
||||||
opsgenieRegion=dict(type="str", required=True),
|
|
||||||
opsgenieApiKey=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.PAGERDUTY: dict(
|
NotificationType.PAGERDUTY: dict(
|
||||||
pagerdutyAutoResolve=dict(type="str", required=False),
|
pagerdutyAutoResolve=dict(type="str"),
|
||||||
pagerdutyIntegrationUrl=dict(type="str", required=False),
|
pagerdutyIntegrationUrl=dict(type="str"),
|
||||||
pagerdutyPriority=dict(type="str", required=False),
|
pagerdutyPriority=dict(type="str"),
|
||||||
pagerdutyIntegrationKey=dict(type="str", required=True),
|
pagerdutyIntegrationKey=dict(type="str"),
|
||||||
),
|
|
||||||
NotificationType.PAGERTREE: dict(
|
|
||||||
pagertreeAutoResolve=dict(type="str", required=False),
|
|
||||||
pagertreeIntegrationUrl=dict(type="str", required=False),
|
|
||||||
pagertreeUrgency=dict(type="str", required=False),
|
|
||||||
),
|
),
|
||||||
NotificationType.PROMOSMS: dict(
|
NotificationType.PROMOSMS: dict(
|
||||||
promosmsAllowLongSMS=dict(type="bool", required=False),
|
promosmsLogin=dict(type="str"),
|
||||||
promosmsLogin=dict(type="str", required=True),
|
promosmsPassword=dict(type="str"),
|
||||||
promosmsPassword=dict(type="str", required=True),
|
promosmsPhoneNumber=dict(type="str"),
|
||||||
promosmsPhoneNumber=dict(type="str", required=True),
|
promosmsSMSType=dict(type="str"),
|
||||||
promosmsSMSType=dict(type="str", required=False),
|
promosmsSenderName=dict(type="str"),
|
||||||
promosmsSenderName=dict(type="str", required=False),
|
|
||||||
),
|
),
|
||||||
NotificationType.PUSHBULLET: dict(
|
NotificationType.PUSHBULLET: dict(
|
||||||
pushbulletAccessToken=dict(type="str", required=True),
|
pushbulletAccessToken=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.PUSHDEER: dict(
|
NotificationType.PUSHDEER: dict(
|
||||||
pushdeerServer=dict(type="str", required=False),
|
pushdeerKey=dict(type="str"),
|
||||||
pushdeerKey=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.PUSHOVER: dict(
|
NotificationType.PUSHOVER: dict(
|
||||||
pushoveruserkey=dict(type="str", required=True),
|
pushoveruserkey=dict(type="str"),
|
||||||
pushoverapptoken=dict(type="str", required=True),
|
pushoverapptoken=dict(type="str"),
|
||||||
pushoversounds=dict(type="str", required=False),
|
pushoversounds=dict(type="str"),
|
||||||
pushoverpriority=dict(type="str", required=False),
|
pushoverpriority=dict(type="str"),
|
||||||
pushovertitle=dict(type="str", required=False),
|
pushovertitle=dict(type="str"),
|
||||||
pushoverdevice=dict(type="str", required=False),
|
pushoverdevice=dict(type="str"),
|
||||||
pushoverttl=dict(type="int", required=False),
|
|
||||||
),
|
),
|
||||||
NotificationType.PUSHY: dict(
|
NotificationType.PUSHY: dict(
|
||||||
pushyAPIKey=dict(type="str", required=True),
|
pushyAPIKey=dict(type="str"),
|
||||||
pushyToken=dict(type="str", required=True),
|
pushyToken=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.ROCKET_CHAT: dict(
|
NotificationType.ROCKET_CHAT: dict(
|
||||||
rocketchannel=dict(type="str", required=False),
|
rocketchannel=dict(type="str"),
|
||||||
rocketusername=dict(type="str", required=False),
|
rocketusername=dict(type="str"),
|
||||||
rocketiconemo=dict(type="str", required=False),
|
rocketiconemo=dict(type="str"),
|
||||||
rocketwebhookURL=dict(type="str", required=True),
|
rocketwebhookURL=dict(type="str"),
|
||||||
),
|
rocketbutton=dict(type="str"),
|
||||||
NotificationType.SERVERCHAN: dict(
|
|
||||||
serverChanSendKey=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.SERWERSMS: dict(
|
NotificationType.SERWERSMS: dict(
|
||||||
serwersmsUsername=dict(type="str", required=True),
|
serwersmsUsername=dict(type="str"),
|
||||||
serwersmsPassword=dict(type="str", required=True),
|
serwersmsPassword=dict(type="str"),
|
||||||
serwersmsPhoneNumber=dict(type="str", required=True),
|
serwersmsPhoneNumber=dict(type="str"),
|
||||||
serwersmsSenderName=dict(type="str", required=False),
|
serwersmsSenderName=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.SIGNAL: dict(
|
NotificationType.SIGNAL: dict(
|
||||||
signalNumber=dict(type="str", required=True),
|
signalNumber=dict(type="str"),
|
||||||
signalRecipients=dict(type="str", required=True),
|
signalRecipients=dict(type="str"),
|
||||||
signalURL=dict(type="str", required=True),
|
signalURL=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.SLACK: dict(
|
NotificationType.SLACK: dict(
|
||||||
slackchannelnotify=dict(type="bool", required=False),
|
slackbutton=dict(type="str"),
|
||||||
slackchannel=dict(type="str", required=False),
|
slackchannel=dict(type="str"),
|
||||||
slackusername=dict(type="str", required=False),
|
slackusername=dict(type="str"),
|
||||||
slackiconemo=dict(type="str", required=False),
|
slackiconemo=dict(type="str"),
|
||||||
slackwebhookURL=dict(type="str", required=True),
|
slackwebhookURL=dict(type="str"),
|
||||||
),
|
|
||||||
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(
|
NotificationType.SMTP: dict(
|
||||||
smtpHost=dict(type="str", required=True),
|
smtpHost=dict(type="str"),
|
||||||
smtpPort=dict(type="int", required=True),
|
smtpPort=dict(type="int"),
|
||||||
smtpSecure=dict(type="str", required=False),
|
smtpSecure=dict(type="str"),
|
||||||
smtpIgnoreTLSError=dict(type="bool", required=False),
|
smtpIgnoreTLSError=dict(type="str"),
|
||||||
smtpDkimDomain=dict(type="str", required=False),
|
smtpDkimDomain=dict(type="str"),
|
||||||
smtpDkimKeySelector=dict(type="str", required=False),
|
smtpDkimKeySelector=dict(type="str"),
|
||||||
smtpDkimPrivateKey=dict(type="str", required=False),
|
smtpDkimPrivateKey=dict(type="str"),
|
||||||
smtpDkimHashAlgo=dict(type="str", required=False),
|
smtpDkimHashAlgo=dict(type="str"),
|
||||||
smtpDkimheaderFieldNames=dict(type="str", required=False),
|
smtpDkimheaderFieldNames=dict(type="str"),
|
||||||
smtpDkimskipFields=dict(type="str", required=False),
|
smtpDkimskipFields=dict(type="str"),
|
||||||
smtpUsername=dict(type="str", required=False),
|
smtpUsername=dict(type="str"),
|
||||||
smtpPassword=dict(type="str", required=False),
|
smtpPassword=dict(type="str"),
|
||||||
customSubject=dict(type="str", required=False),
|
customSubject=dict(type="str"),
|
||||||
smtpFrom=dict(type="str", required=True),
|
smtpFrom=dict(type="str"),
|
||||||
smtpCC=dict(type="str", required=False),
|
smtpCC=dict(type="str"),
|
||||||
smtpBCC=dict(type="str", required=False),
|
smtpBCC=dict(type="str"),
|
||||||
smtpTo=dict(type="str", required=False),
|
smtpTo=dict(type="str"),
|
||||||
),
|
|
||||||
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(
|
NotificationType.STACKFIELD: dict(
|
||||||
stackfieldwebhookURL=dict(type="str", required=True),
|
stackfieldwebhookURL=dict(type="str"),
|
||||||
),
|
|
||||||
NotificationType.TEAMS: dict(
|
|
||||||
webhookUrl=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.PUSHBYTECHULUS: dict(
|
NotificationType.PUSHBYTECHULUS: dict(
|
||||||
pushAPIKey=dict(type="str", required=True),
|
pushAPIKey=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.TELEGRAM: dict(
|
NotificationType.TELEGRAM: dict(
|
||||||
telegramChatID=dict(type="str", required=True),
|
telegramBotToken=dict(type="str"),
|
||||||
telegramSendSilently=dict(type="bool", required=False),
|
telegramChatID=dict(type="str"),
|
||||||
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(
|
NotificationType.WEBHOOK: dict(
|
||||||
webhookContentType=dict(type="str", required=True),
|
webhookContentType=dict(type="str"),
|
||||||
webhookCustomBody=dict(type="str", required=False),
|
webhookAdditionalHeaders=dict(type="str"),
|
||||||
webhookAdditionalHeaders=dict(type="str", required=False),
|
webhookURL=dict(type="str"),
|
||||||
webhookURL=dict(type="str", required=True),
|
|
||||||
),
|
),
|
||||||
NotificationType.WECOM: dict(
|
NotificationType.WECOM: dict(
|
||||||
weComBotKey=dict(type="str", required=True),
|
weComBotKey=dict(type="str"),
|
||||||
),
|
),
|
||||||
NotificationType.ZOHOCLIQ: dict(
|
NotificationType.ALERTNOW: dict(
|
||||||
webhookUrl=dict(type="str", required=True),
|
alertNowWebhookURL=dict(type="str"),
|
||||||
),
|
),
|
||||||
|
NotificationType.HOMEASSISTANT: dict(
|
||||||
|
homeAssistantUrl=dict(type="str"),
|
||||||
|
longLivedAccessToken=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.LINENOTIFY: dict(
|
||||||
|
lineNotifyAccessToken=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.BARK: dict(
|
||||||
|
barkEndpoint=dict(type="str"),
|
||||||
|
barkGroup=dict(type="str"),
|
||||||
|
barkSound=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.GOALERT: dict(
|
||||||
|
goAlertBaseURL=dict(type="str"),
|
||||||
|
goAlertToken=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.OCTOPUSH: dict(
|
||||||
|
octopushVersion=dict(type="str"),
|
||||||
|
octopushAPIKey=dict(type="str"),
|
||||||
|
octopushLogin=dict(type="str"),
|
||||||
|
octopushPhoneNumber=dict(type="str"),
|
||||||
|
octopushSMSType=dict(type="str"),
|
||||||
|
octopushSenderName=dict(type="str"),
|
||||||
|
octopushDMLogin=dict(type="str"),
|
||||||
|
octopushDMAPIKey=dict(type="str"),
|
||||||
|
octopushDMPhoneNumber=dict(type="str"),
|
||||||
|
octopushDMSenderName=dict(type="str"),
|
||||||
|
octopushDMSMSType=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.SERVERCHAN: dict(
|
||||||
|
serverChanSendKey=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.SMSMANAGER: dict(
|
||||||
|
smsmanagerApiKey=dict(type="str"),
|
||||||
|
numbers=dict(type="str"),
|
||||||
|
messageType=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.SQUADCAST: dict(
|
||||||
|
squadcastWebhookURL=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.TEAMS: dict(
|
||||||
|
webhookUrl=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.FREEMOBILE: dict(
|
||||||
|
freemobileUser=dict(type="str"),
|
||||||
|
freemobilePass=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.NTFY: dict(
|
||||||
|
ntfyusername=dict(type="str"),
|
||||||
|
ntfypassword=dict(type="str"),
|
||||||
|
ntfytopic=dict(type="str"),
|
||||||
|
ntfyPriority=dict(type="int"),
|
||||||
|
ntfyIcon=dict(type="str"),
|
||||||
|
ntfyserverurl=dict(type="str"),
|
||||||
|
),
|
||||||
|
NotificationType.SMSEAGLE: dict(
|
||||||
|
smseagleEncoding=dict(type="bool"),
|
||||||
|
smseaglePriority=dict(type="int"),
|
||||||
|
smseagleRecipientType=dict(type="str"),
|
||||||
|
smseagleToken=dict(type="str"),
|
||||||
|
smseagleRecipient=dict(type="str"),
|
||||||
|
smseagleUrl=dict(type="str")
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
notification_provider_conditions = dict(
|
notification_provider_conditions = dict(
|
||||||
gotifyPriority=dict(
|
gotifyPriority=dict(
|
||||||
min=0,
|
min=0,
|
||||||
max=10,
|
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(
|
smtpPort=dict(
|
||||||
min=0,
|
min=0,
|
||||||
max=65535,
|
max=65535
|
||||||
),
|
),
|
||||||
|
ntfyPriority=dict(
|
||||||
|
min=1,
|
||||||
|
max=5
|
||||||
|
),
|
||||||
|
smseaglePriority=dict(
|
||||||
|
min=0,
|
||||||
|
max=9
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue