Apprise API Bridge

January 31, 2022 ยท View on GitHub

Please :star: this repo if you find it useful


PayPal

Apprise API Bridge

Single endpoint for sending notifications in multiple channels

Once in a while i need to send notification from my environment. It can be en alert or an informational message. So i created this project to help send these messages with minimum configuration and setup process and with maximum supported notification channels.

Features

With Apprise API Bridge you can:

  • Define notification groups (By importance, departments, etc.)
  • Send notification to a various notification channels using GET or POST request.

Usage

Run from hub

docker-compose from hub

version: "3.6"
services:
  appriseapi:
    image: techblog/apprise-api-bridge:latest
    container_name: appriseapi
    restart: always
    ports:
      - "8080:8080"

Using Apprise API bridge

So now, after you installed Apprise API bridge, It's time to give it a try. Navigate to you server address and you shuold see the configuration screen, that helps you configure the notifications groups amd channels.

Apprise group configuration

Supported Notifications

The section identifies all of the services supported by this library. Check out the wiki for more information on the supported modules here.

The table below identifies the services this tool supports and some example service urls you need to use in order to take advantage of it. Click on any of the services listed below to get more details on how you can configure Apprise to access them.

Notification ServiceService IDDefault PortExample Syntax
Apprise APIapprise:// or apprises://(TCP) 80 or 443apprise://hostname/Token
AWS SESses://(TCP) 443ses://user@domain/AccessKeyID/AccessSecretKey/RegionName
ses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN
Boxcarboxcar://(TCP) 443boxcar://hostname
boxcar://hostname/@tag
boxcar://hostname/device_token
boxcar://hostname/device_token1/device_token2/device_tokenN
boxcar://hostname/@tag/@tag2/device_token
Discorddiscord://(TCP) 443discord://webhook_id/webhook_token
discord://avatar@webhook_id/webhook_token
Embyemby:// or embys://(TCP) 8096emby://user@hostname/
emby://user:password@hostname
Enigma2enigma2:// or enigma2s://(TCP) 80 or 443enigma2://hostname
Faastfaast://(TCP) 443faast://authorizationtoken
FCMfcm://(TCP) 443fcm://project@apikey/DEVICE_ID
fcm://project@apikey/#TOPIC
fcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/
Flockflock://(TCP) 443flock://token
flock://botname@token
flock://app_token/u:userid
flock://app_token/g:channel_id
flock://app_token/u:userid/g:channel_id
Gittergitter://(TCP) 443gitter://token/room
gitter://token/room1/room2/roomN
Google Chatgchat://(TCP) 443gchat://workspace/key/token
Gotifygotify:// or gotifys://(TCP) 80 or 443gotify://hostname/token
gotifys://hostname/token?priority=high
Growlgrowl://(UDP) 23053growl://hostname
growl://hostname:portno
growl://password@hostname
growl://password@hostname:port
Note: you can also use the get parameter version which can allow the growl request to behave using the older v1.x protocol. An example would look like: growl://hostname?version=1
Home Assistanthassio:// or hassios://(TCP) 8123 or 443hassio://hostname/accesstoken
hassio://user@hostname/accesstoken
hassio://user:password@hostname:port/accesstoken
hassio://hostname/optional/path/accesstoken
IFTTTifttt://(TCP) 443ifttt://webhooksID/Event
ifttt://webhooksID/Event1/Event2/EventN
ifttt://webhooksID/Event1/?+Key=Value
ifttt://webhooksID/Event1/?-Key=value1
Joinjoin://(TCP) 443join://apikey/device
join://apikey/device1/device2/deviceN/
join://apikey/group
join://apikey/groupA/groupB/groupN
join://apikey/DeviceA/groupA/groupN/DeviceN/
KODIkodi:// or kodis://(TCP) 8080 or 443kodi://hostname
kodi://user@hostname
kodi://user:password@hostname:port
Kumuloskumulos://(TCP) 443kumulos://apikey/serverkey
LaMetric Timelametric://(TCP) 443lametric://apikey@device_ipaddr
lametric://apikey@hostname:port
lametric://client_id@client_secret
Mailgunmailgun://(TCP) 443mailgun://user@hostname/apikey
mailgun://user@hostname/apikey/email
mailgun://user@hostname/apikey/email1/email2/emailN
mailgun://user@hostname/apikey/?name="From%20User"
Matrixmatrix:// or matrixs://(TCP) 80 or 443matrix://hostname
matrix://user@hostname
matrixs://user:pass@hostname:port/#room_alias
matrixs://user:pass@hostname:port/!room_id
matrixs://user:pass@hostname:port/#room_alias/!room_id/#room2
matrixs://token@hostname:port/?webhook=matrix
matrix://user:token@hostname/?webhook=slack&format=markdown
Mattermostmmost:// or mmosts://(TCP) 8065mmost://hostname/authkey
mmost://hostname:80/authkey
mmost://user@hostname:80/authkey
mmost://hostname/authkey?channel=channel
mmosts://hostname/authkey
mmosts://user@hostname/authkey
Microsoft Teamsmsteams://(TCP) 443msteams://TokenA/TokenB/TokenC/
MQTTmqtt:// or mqtts://(TCP) 1883 or 8883mqtt://hostname/topic
mqtt://user@hostname/topic
mqtts://user:pass@hostname:9883/topic
Nextcloudncloud:// or nclouds://(TCP) 80 or 443ncloud://adminuser:pass@host/User
nclouds://adminuser:pass@host/User1/User2/UserN
NextcloudTalknctalk:// or nctalks://(TCP) 80 or 443nctalk://user:pass@host/RoomId
nctalks://user:pass@host/RoomId1/RoomId2/RoomIdN
Noticanotica://(TCP) 443notica://Token/
Notificonotifico://(TCP) 443notifico://ProjectID/MessageHook/
Office 365o365://(TCP) 443o365://TenantID:AccountEmail/ClientID/ClientSecret
o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail
o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN
OneSignalonesignal://(TCP) 443onesignal://AppID@APIKey/PlayerID
onesignal://TemplateID:AppID@APIKey/UserID
onesignal://AppID@APIKey/#IncludeSegment
onesignal://AppID@APIKey/Email
Opsgenieopsgenie://(TCP) 443opsgenie://APIKey
opsgenie://APIKey/UserID
opsgenie://APIKey/#Team
opsgenie://APIKey/*Schedule
opsgenie://APIKey/^Escalation
ParsePlatformparsep:// or parseps://(TCP) 80 or 443parsep://AppID:MasterKey@Hostname
parseps://AppID:MasterKey@Hostname
PopcornNotifypopcorn://(TCP) 443popcorn://ApiKey/ToPhoneNo
popcorn://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
popcorn://ApiKey/ToEmail
popcorn://ApiKey/ToEmail1/ToEmail2/ToEmailN/
popcorn://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN
Prowlprowl://(TCP) 443prowl://apikey
prowl://apikey/providerkey
PushBulletpbul://(TCP) 443pbul://accesstoken
pbul://accesstoken/#channel
pbul://accesstoken/A_DEVICE_ID
pbul://accesstoken/email@address.com
pbul://accesstoken/#channel/#channel2/email@address.net/DEVICE
Pushjetpjet:// or pjets://(TCP) 80 or 443pjet://hostname/secret
pjet://hostname:port/secret
pjets://secret@hostname/secret
pjets://hostname:port/secret
Push (Techulus)push://(TCP) 443push://apikey/
Pushedpushed://(TCP) 443pushed://appkey/appsecret/
pushed://appkey/appsecret/#ChannelAlias
pushed://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN
pushed://appkey/appsecret/@UserPushedID
pushed://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN
Pushoverpover://(TCP) 443pover://user@token
pover://user@token/DEVICE
pover://user@token/DEVICE1/DEVICE2/DEVICEN
Note: you must specify both your user_id and token
PushSaferpsafer:// or psafers://(TCP) 80 or 443psafer://privatekey
psafers://privatekey/DEVICE
psafer://privatekey/DEVICE1/DEVICE2/DEVICEN
Redditreddit://(TCP) 443reddit://user:password@app_id/app_secret/subreddit
reddit://user:password@app_id/app_secret/sub1/sub2/subN
Rocket.Chatrocket:// or rockets://(TCP) 80 or 443rocket://user:password@hostname/RoomID/Channel
rockets://user:password@hostname:443/#Channel1/#Channel1/RoomID
rocket://user:password@hostname/#Channel
rocket://webhook@hostname
rockets://webhook@hostname/@User/#Channel
Ryverryver://(TCP) 443ryver://Organization/Token
ryver://botname@Organization/Token
SendGridsendgrid://(TCP) 443sendgrid://APIToken:FromEmail/
sendgrid://APIToken:FromEmail/ToEmail
sendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/
ServerChanserverchan://(TCP) 443serverchan://token/
SimplePushspush://(TCP) 443spush://apikey
spush://salt:password@apikey
spush://apikey?event=Apprise
Slackslack://(TCP) 443slack://TokenA/TokenB/TokenC/
slack://TokenA/TokenB/TokenC/Channel
slack://botname@TokenA/TokenB/TokenC/Channel
slack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN
SMTP2Gosmtp2go://(TCP) 443smtp2go://user@hostname/apikey
smtp2go://user@hostname/apikey/email
smtp2go://user@hostname/apikey/email1/email2/emailN
smtp2go://user@hostname/apikey/?name="From%20User"
Streamlabsstrmlabs://(TCP) 443strmlabs://AccessToken/
strmlabs://AccessToken/?name=name&identifier=identifier&amount=0&currency=USD
SparkPostsparkpost://(TCP) 443sparkpost://user@hostname/apikey
sparkpost://user@hostname/apikey/email
sparkpost://user@hostname/apikey/email1/email2/emailN
sparkpost://user@hostname/apikey/?name="From%20User"
Spontitspontit://(TCP) 443spontit://UserID@APIKey/
spontit://UserID@APIKey/Channel
spontit://UserID@APIKey/Channel1/Channel2/ChannelN
Syslogsyslog://(UDP) 514 (if hostname specified)syslog://
syslog://Facility
syslog://hostname
syslog://hostname/Facility
Telegramtgram://(TCP) 443tgram://bottoken/ChatID
tgram://bottoken/ChatID1/ChatID2/ChatIDN
Twittertwitter://(TCP) 443twitter://CKey/CSecret/AKey/ASecret
twitter://user@CKey/CSecret/AKey/ASecret
twitter://CKey/CSecret/AKey/ASecret/User1/User2/User2
twitter://CKey/CSecret/AKey/ASecret?mode=tweet
Twisttwist://(TCP) 443twist://pasword:login
twist://password:login/#channel
twist://password:login/#team:channel
twist://password:login/#team:channel1/channel2/#team3:channel
XBMCxbmc:// or xbmcs://(TCP) 8080 or 443xbmc://hostname
xbmc://user@hostname
xbmc://user:password@hostname:port
XMPPxmpp:// or xmpps://(TCP) 5222 or 5223xmpp://user:password@hostname
xmpps://user:password@hostname:port?jid=user@hostname/resource
xmpps://user:password@hostname/target@myhost, target2@myhost/resource
Webex Teams (Cisco)wxteams://(TCP) 443wxteams://Token
Zulip Chatzulip://(TCP) 443zulip://botname@Organization/Token
zulip://botname@Organization/Token/Stream
zulip://botname@Organization/Token/Email

Sending Notification

In order to send notification you can use two existing methods, Both are doing the same. One is a POST Method and the other is a GET Method. You can see the swagger documentation by adding "/docs" to the end of the url.

SafeUrl scan in progress