mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-31 04:32:32 +00:00
GitBook: [#176] new(tautulli): Adapt notification instructions for built-in agent
This commit is contained in:
committed by
gitbook-bot
parent
d019eb6b7f
commit
d9d7d7e9f6
BIN
docs/.gitbook/assets/firebase_crashlytics_example (1).png
Normal file
BIN
docs/.gitbook/assets/firebase_crashlytics_example (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 209 KiB |
BIN
docs/.gitbook/assets/lidarr_notification_example (1).png
Normal file
BIN
docs/.gitbook/assets/lidarr_notification_example (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 259 KiB |
BIN
docs/.gitbook/assets/overseerr_notification_sample_v2 (1).png
Normal file
BIN
docs/.gitbook/assets/overseerr_notification_sample_v2 (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 282 KiB |
BIN
docs/.gitbook/assets/radarr_notification_example (1).png
Normal file
BIN
docs/.gitbook/assets/radarr_notification_example (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 253 KiB |
BIN
docs/.gitbook/assets/sonarr_notification_example (1).png
Normal file
BIN
docs/.gitbook/assets/sonarr_notification_example (1).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 265 KiB |
@@ -1,5 +1,5 @@
|
||||
---
|
||||
description: 'On-Device Logging, Firebase Crashlytics, & Firebase Analytics'
|
||||
description: On-Device Logging, Firebase Crashlytics, & Firebase Analytics
|
||||
---
|
||||
|
||||
# Logs
|
||||
@@ -8,7 +8,7 @@ LunaSea includes an on-device logging system that helps debug crashes, issues, a
|
||||
|
||||
1. **Warning**: Warning logs are non-crashing and non-critical errors that have occurred on the device. Warning logs would occur when failing to load an image, passing an incorrect encryption key when trying to restore a backup, etc.
|
||||
2. **Error**: Error logs are non-crashing but critical errors that have occurred on the device. Error logs would occur on network errors, connection issues, errors returned from the module, etc.
|
||||
3. **Fatal**: Fatal logs are crashing errors or unhandled errors that have occurred on the device. Fatal logs would occur when LunaSea fails to complete the boot process, fails to render the UI, etc.
|
||||
3. **Fatal**: Fatal logs are crashing errors or unhandled errors that have occurred on the device. Fatal logs would occur when LunaSea fails to complete the boot process, fails to render the UI, etc.
|
||||
|
||||
### Viewing Log History
|
||||
|
||||
@@ -29,7 +29,7 @@ To export your logs, simply go to the Settings, enter the "System" page and tap
|
||||
{% hint style="warning" %}
|
||||
Because the exported logs contain code-execution stack traces, **the logs may unintentionally contain private information**.
|
||||
|
||||
Please ensure you do not publicly share your exported logs \(or before sharing, manually scrub the exported logs\). Only share the logs to trusted parties through private channels such as email or direct messages.
|
||||
Please ensure you do not publicly share your exported logs (or before sharing, manually scrub the exported logs). Only share the logs to trusted parties through private channels such as email or direct messages.
|
||||
{% endhint %}
|
||||
|
||||
### Clearing Logs
|
||||
@@ -40,12 +40,12 @@ To clear your logs, simply go to the Settings, enter the "System" page and tap "
|
||||
|
||||
## Firebase Crashlytics
|
||||
|
||||
LunaSea integrates [Firebase Crashlytics](https://firebase.google.com/products/crashlytics) to help catch errors that may not be obvious to users or occur internally and out of sight. Firebase Crashlytics is enabled by default, but can be optionally completely disabled \(explained below\).
|
||||
LunaSea integrates [Firebase Crashlytics](https://firebase.google.com/products/crashlytics) to help catch errors that may not be obvious to users or occur internally and out of sight. Firebase Crashlytics is enabled by default, but can be optionally completely disabled (explained below).
|
||||
|
||||
The following errors are not sent to Firebase Crashlytics to protect user's privacy and private information:
|
||||
|
||||
* **Networking Errors**: Any and all networking errors are not sent \(but are stored on the on-device logger\).
|
||||
* **Encryption Errors**: Any and all errors related to encrypting or decrypting configurations for backups are not sent \(but are stored on the on-device logger\).
|
||||
* **Networking Errors**: Any and all networking errors are not sent (but are stored on the on-device logger).
|
||||
* **Encryption Errors**: Any and all errors related to encrypting or decrypting configurations for backups are not sent (but are stored on the on-device logger).
|
||||
|
||||
{% hint style="info" %}
|
||||
Firebase Crashlytics includes no personally identifying information in the logs that are sent. Information that is included in each log includes:
|
||||
@@ -53,12 +53,12 @@ Firebase Crashlytics includes no personally identifying information in the logs
|
||||
* Error
|
||||
* Stack Trace
|
||||
* Breadcrumbs
|
||||
* Device Information \(Model, OS Version, etc.\)
|
||||
* Device Information (Model, OS Version, etc.)
|
||||
{% endhint %}
|
||||
|
||||
### Example Crash Log
|
||||
|
||||

|
||||
.png>)
|
||||
|
||||
### Disabling Firebase Crashlytics
|
||||
|
||||
@@ -66,7 +66,7 @@ Disabling Firebase Crashlytics is as simple as heading to the Settings, entering
|
||||
|
||||
## Firebase Analytics
|
||||
|
||||
LunaSea integrates [Firebase Analytics](https://firebase.google.com/products/analytics) to help Firebase Crashlytics acquire breadcrumb information in any logs sent. Firebase Analytics is enabled by default, but can be optionally completely disabled \(explained below\).
|
||||
LunaSea integrates [Firebase Analytics](https://firebase.google.com/products/analytics) to help Firebase Crashlytics acquire breadcrumb information in any logs sent. Firebase Analytics is enabled by default, but can be optionally completely disabled (explained below).
|
||||
|
||||
### What are Breadcrumbs?
|
||||
|
||||
@@ -88,5 +88,4 @@ Disabling Firebase Analytics will disable gathering and sending these additional
|
||||
|
||||
Disabling Firebase Analytics is as simple as heading to the Settings, entering the "System" page, and toggling off Firebase Analytics.
|
||||
|
||||
###
|
||||
|
||||
###
|
||||
|
||||
@@ -15,168 +15,118 @@ Custom notifications are considered an advanced feature, and requires basic know
|
||||
|
||||
You will need to slightly modify the webhook URL you have copied from any of the modules. Simply replace the name of the module within the webhook URL to `custom` and you're good to go!
|
||||
|
||||
Alternatively, you can copy the content of the URL after the last slash \(after `device/` or `user/`\) to obtain your Firebase device or user identifier.
|
||||
Alternatively, you can copy the content of the URL after the last slash (after `device/` or `user/`) to obtain your Firebase device or user identifier.
|
||||
|
||||
## Endpoints
|
||||
|
||||
Custom notifications are supported by both device-based and user-based notifications, with full endpoint details below:
|
||||
|
||||
{% api-method method="post" host="https://notify.lunasea.app" path="/v1/custom/device/:device\_id" %}
|
||||
{% api-method-summary %}
|
||||
Device-Based
|
||||
{% endapi-method-summary %}
|
||||
|
||||
{% api-method-description %}
|
||||
{% swagger baseUrl="https://notify.lunasea.app" path="/v1/custom/device/:device:id" method="post" summary="Device-Based" %}
|
||||
{% swagger-description %}
|
||||
Send a custom notification using a device token to a single device running LunaSea.
|
||||
{% endapi-method-description %}
|
||||
{% endswagger-description %}
|
||||
|
||||
{% api-method-spec %}
|
||||
{% api-method-request %}
|
||||
{% api-method-path-parameters %}
|
||||
{% api-method-parameter name="device\_id" type="string" required=true %}
|
||||
{% swagger-parameter name="device:id" type="string" in="path" %}
|
||||
The Firebase device identifier
|
||||
{% endapi-method-parameter %}
|
||||
{% endapi-method-path-parameters %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-body-parameters %}
|
||||
{% api-method-parameter name="title" type="string" required=true %}
|
||||
{% swagger-parameter name="title" type="string" in="body" %}
|
||||
The notification's title.
|
||||
{% endapi-method-parameter %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-parameter name="body" type="string" required=true %}
|
||||
{% swagger-parameter name="body" type="string" in="body" %}
|
||||
The notification's body content.
|
||||
{% endapi-method-parameter %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-parameter name="image" type="string" required=false %}
|
||||
A **publicly accessible** URL to an image that will be attached to the notification.
|
||||
{% endapi-method-parameter %}
|
||||
{% endapi-method-body-parameters %}
|
||||
{% endapi-method-request %}
|
||||
{% swagger-parameter name="image" type="string" in="body" %}
|
||||
A
|
||||
|
||||
{% api-method-response %}
|
||||
{% api-method-response-example httpCode=200 %}
|
||||
{% api-method-response-example-description %}
|
||||
Acknowledgement that the webhook has been received.
|
||||
|
||||
_**This does not necessarily mean that the notification was successful**_, just that the relay has received the request and passed initial validation.
|
||||
{% endapi-method-response-example-description %}
|
||||
**publicly accessible**
|
||||
|
||||
URL to an image that will be attached to the notification.
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% swagger-response status="200" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "OK"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
|
||||
{% api-method-response-example httpCode=500 %}
|
||||
{% api-method-response-example-description %}
|
||||
Will be returned when any other error occurs when trying to send the notification to your device.
|
||||
{% endapi-method-response-example-description %}
|
||||
{% endswagger-response %}
|
||||
|
||||
{% swagger-response status="500" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "Internal Server Error"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
{% endapi-method-response %}
|
||||
{% endapi-method-spec %}
|
||||
{% endapi-method %}
|
||||
{% endswagger-response %}
|
||||
{% endswagger %}
|
||||
|
||||
|
||||
|
||||
{% api-method method="post" host="https://notify.lunasea.app" path="/v1/custom/user/:user\_id" %}
|
||||
{% api-method-summary %}
|
||||
User-Based
|
||||
{% endapi-method-summary %}
|
||||
|
||||
{% api-method-description %}
|
||||
{% swagger baseUrl="https://notify.lunasea.app" path="/v1/custom/user/:user:id" method="post" summary="User-Based" %}
|
||||
{% swagger-description %}
|
||||
Send a custom notification using a user token to all devices signed into that LunaSea account.
|
||||
{% endapi-method-description %}
|
||||
{% endswagger-description %}
|
||||
|
||||
{% api-method-spec %}
|
||||
{% api-method-request %}
|
||||
{% api-method-path-parameters %}
|
||||
{% api-method-parameter name="user\_id" type="string" required=true %}
|
||||
{% swagger-parameter name="user:id" type="string" in="path" %}
|
||||
The Firebase user identifier
|
||||
{% endapi-method-parameter %}
|
||||
{% endapi-method-path-parameters %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-body-parameters %}
|
||||
{% api-method-parameter name="title" type="string" required=true %}
|
||||
{% swagger-parameter name="title" type="string" in="body" %}
|
||||
The notification's title.
|
||||
{% endapi-method-parameter %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-parameter name="body" type="string" required=true %}
|
||||
{% swagger-parameter name="body" type="string" in="body" %}
|
||||
The notification's body content.
|
||||
{% endapi-method-parameter %}
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% api-method-parameter name="image" type="string" required=false %}
|
||||
A **publicly accessible** URL to an image that will be attached to the notification.
|
||||
{% endapi-method-parameter %}
|
||||
{% endapi-method-body-parameters %}
|
||||
{% endapi-method-request %}
|
||||
{% swagger-parameter name="image" type="string" in="body" %}
|
||||
A
|
||||
|
||||
{% api-method-response %}
|
||||
{% api-method-response-example httpCode=200 %}
|
||||
{% api-method-response-example-description %}
|
||||
Acknowledgement that the webhook has been received.
|
||||
|
||||
_**This does not necessarily mean that the notification was successful**_, just that the relay has received the request and passed initial validation.
|
||||
{% endapi-method-response-example-description %}
|
||||
**publicly accessible**
|
||||
|
||||
URL to an image that will be attached to the notification.
|
||||
{% endswagger-parameter %}
|
||||
|
||||
{% swagger-response status="200" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "OK"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
|
||||
{% api-method-response-example httpCode=400 %}
|
||||
{% api-method-response-example-description %}
|
||||
Will be returned when no devices are found for a given user. Opening LunaSea on your device\(s\) should register the device automatically.
|
||||
{% endapi-method-response-example-description %}
|
||||
{% endswagger-response %}
|
||||
|
||||
{% swagger-response status="400" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "No devices found"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
|
||||
{% api-method-response-example httpCode=404 %}
|
||||
{% api-method-response-example-description %}
|
||||
Will be returned when a user with the given identifier can not be found in LunaSea's authentication table.
|
||||
{% endapi-method-response-example-description %}
|
||||
{% endswagger-response %}
|
||||
|
||||
{% swagger-response status="404" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "Invalid User ID"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
|
||||
{% api-method-response-example httpCode=500 %}
|
||||
{% api-method-response-example-description %}
|
||||
Will be returned when any other error occurs when trying to send the notification to the devices.
|
||||
{% endapi-method-response-example-description %}
|
||||
{% endswagger-response %}
|
||||
|
||||
{% swagger-response status="500" description="" %}
|
||||
```javascript
|
||||
{
|
||||
"status": "Internal Server Error"
|
||||
}
|
||||
```
|
||||
{% endapi-method-response-example %}
|
||||
{% endapi-method-response %}
|
||||
{% endapi-method-spec %}
|
||||
{% endapi-method %}
|
||||
{% endswagger-response %}
|
||||
{% endswagger %}
|
||||
|
||||
## Basic Troubleshooting
|
||||
|
||||
* Ensure that the required `title` parameter is a string type.
|
||||
* If the type is not a string, the notification will fail.
|
||||
* Sending no value or a null value will result in the title "Unknown Title" being used.
|
||||
* Ensure that the required `body` parameter is a string type.
|
||||
* Ensure that the required `body` parameter is a string type.
|
||||
* If the type is not a string, the notification will fail.
|
||||
* Sending no value or a null value will result in the body "Unknown Content" being used.
|
||||
* If sending an image, ensure that the content is a valid URL.
|
||||
@@ -186,4 +136,3 @@ Will be returned when any other error occurs when trying to send the notificatio
|
||||
* The URL must be publicly accessible, not requiring any authentication to access.
|
||||
* If sending an image, the image must be a supported image type.
|
||||
* Supported types include JPGs, PNGs, and animated GIFs.
|
||||
|
||||
|
||||
@@ -21,16 +21,16 @@ Select any name, for example "LunaSea".
|
||||
{% tab title="Triggers" %}
|
||||
Select which events should trigger a push notification. The following triggers are supported:
|
||||
|
||||
| Trigger | Supported? |
|
||||
| :--- | :---: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Release Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Download Failure | No ❌ |
|
||||
| On Import Failure | No ❌ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Track Retag | **Yes** ✅ |
|
||||
| On Health Issue | No ❌ |
|
||||
| Trigger | Supported? |
|
||||
| ------------------- | :--------: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Release Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Download Failure | No ❌ |
|
||||
| On Import Failure | No ❌ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Track Retag | **Yes** ✅ |
|
||||
| On Health Issue | No ❌ |
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Tags" %}
|
||||
@@ -53,7 +53,7 @@ Keep the method on "**POST**". Changing the method to "**PUT**" will cause the w
|
||||
|
||||
{% tab title="Username" %}
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile \(`default`\). LunaSea will assume the default profile when none is supplied.
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile (`default`). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
@@ -76,7 +76,4 @@ An example Lidarr webhook can be seen below:
|
||||
* This is a user-based notification webhook, meaning it will be sent to all devices that are linked to the user ID `1234567890`.
|
||||
* The webhook is associated with the profile named `My Profile`.
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -24,7 +24,7 @@ Overseerr currently only supports 1 LunaSea notification agent, which means you
|
||||
|
||||
{% tab title="Profile Name" %}
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile \(`default`\). LunaSea will assume the default profile when none is supplied.
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile (`default`). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
@@ -35,14 +35,14 @@ The profile name field should be an **exact match** to the profile that this mod
|
||||
{% tab title="Notification Types" %}
|
||||
Select which events should trigger a push notification. The following triggers are supported:
|
||||
|
||||
| Trigger | Supported? |
|
||||
| :--- | :---: |
|
||||
| Media Requested | **Yes** ✅ |
|
||||
| Media Automatically Approved | **Yes** ✅ |
|
||||
| Media Approved | **Yes** ✅ |
|
||||
| Media Declined | **Yes** ✅ |
|
||||
| Media Available | **Yes** ✅ |
|
||||
| Media Failed | **Yes** ✅ |
|
||||
| Trigger | Supported? |
|
||||
| ---------------------------- | :--------: |
|
||||
| Media Requested | **Yes** ✅ |
|
||||
| Media Automatically Approved | **Yes** ✅ |
|
||||
| Media Approved | **Yes** ✅ |
|
||||
| Media Declined | **Yes** ✅ |
|
||||
| Media Available | **Yes** ✅ |
|
||||
| Media Failed | **Yes** ✅ |
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
@@ -55,5 +55,4 @@ An example Overseerr webhook can be seen below:
|
||||
* This is a user-based notification webhook, meaning it will be sent to all devices that are linked to the user ID `1234567890`.
|
||||
* The webhook is associated with the profile named `My Profile`.
|
||||
|
||||

|
||||
|
||||
.png>)
|
||||
|
||||
@@ -21,15 +21,15 @@ Select any name, for example "LunaSea".
|
||||
{% tab title="Triggers" %}
|
||||
Select which events should trigger a push notification. The following triggers are supported:
|
||||
|
||||
| Trigger | Supported? |
|
||||
| :--- | :---: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Delete | No ❌ |
|
||||
| On Health Issue | **Yes** ✅ |
|
||||
| Include Health Warnings | **Yes** ✅ |
|
||||
| Trigger | Supported? |
|
||||
| ----------------------- | :--------: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Delete | No ❌ |
|
||||
| On Health Issue | **Yes** ✅ |
|
||||
| Include Health Warnings | **Yes** ✅ |
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Tags" %}
|
||||
@@ -52,7 +52,7 @@ Keep the method on "**POST**". Changing the method to "**PUT**" will cause the w
|
||||
|
||||
{% tab title="Username" %}
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile \(`default`\). LunaSea will assume the default profile when none is supplied.
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile (`default`). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
@@ -75,7 +75,4 @@ An example Radarr webhook can be seen below:
|
||||
* This is a user-based notification webhook, meaning it will be sent to all devices that are linked to the user ID `1234567890`.
|
||||
* The webhook is associated with the profile named `My Profile`.
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -21,17 +21,17 @@ Select any name, for example "LunaSea".
|
||||
{% tab title="Triggers" %}
|
||||
Select which events should trigger a push notification. The following triggers are supported:
|
||||
|
||||
| Trigger | Supported? |
|
||||
| :--- | :---: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Series Delete | **Yes** ✅ |
|
||||
| On Episode File Delete | **Yes** ✅ |
|
||||
| On Episode File Delete For Upgrade | **Yes** ✅ |
|
||||
| On Health Issue | **Yes** ✅ |
|
||||
| Include Health Warnings | **Yes** ✅ |
|
||||
| Trigger | Supported? |
|
||||
| ---------------------------------- | :--------: |
|
||||
| On Grab | **Yes** ✅ |
|
||||
| On Import | **Yes** ✅ |
|
||||
| On Upgrade | **Yes** ✅ |
|
||||
| On Rename | **Yes** ✅ |
|
||||
| On Series Delete | **Yes** ✅ |
|
||||
| On Episode File Delete | **Yes** ✅ |
|
||||
| On Episode File Delete For Upgrade | **Yes** ✅ |
|
||||
| On Health Issue | **Yes** ✅ |
|
||||
| Include Health Warnings | **Yes** ✅ |
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Tags" %}
|
||||
@@ -54,7 +54,7 @@ Keep the method on "**POST**". Changing the method to "**PUT**" will cause the w
|
||||
|
||||
{% tab title="Username" %}
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile \(`default`\). LunaSea will assume the default profile when none is supplied.
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile (`default`). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
@@ -77,5 +77,4 @@ An example Sonarr webhook can be seen below:
|
||||
* This is a user-based notification webhook, meaning it will be sent to all devices that are linked to the user ID `1234567890`.
|
||||
* The webhook is associated with the profile named `My Profile`.
|
||||
|
||||

|
||||
|
||||
.png>)
|
||||
|
||||
@@ -11,106 +11,72 @@ description: Setting up Tautulli for webhook-based push notifications
|
||||
|
||||
## Setup the Webhook
|
||||
|
||||
Open Tautulli's web GUI, open the Settings and enter the "Notification Agents" page. Hit the "Add a new notification agent" button to add a new agent, and select "Webhook". Please follow each tab below to setup the webhook:
|
||||
Open Tautulli's web GUI, open the Settings and enter the "Notification Agents" page. Hit the "Add a new notification agent" button to add a new agent, and select "LunaSea". Please follow each tab below to setup the webhook:
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Configuration" %}
|
||||
### **Webhook URL**
|
||||
#### **LunaSea Webhook URL**
|
||||
|
||||
Paste the full device-based or user-based URL that was copied from LunaSea.
|
||||
|
||||
Each webhook can support a single user-based or device-based webhook URL. Attaching multiple device-based or user-based webhooks to a single Sonarr instance requires setting up multiple webhooks.
|
||||
#### LunaSea Profile
|
||||
|
||||
### Webhook Method
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile (`default`). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Keep the method on "**POST**". Changing the method to "**PUT**" will cause the webhooks to fail.
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
|
||||
### Description
|
||||
|
||||
An _optional_ description for the webhook to help identify the webhook in the list of notification agents.
|
||||
Enter in the name of profile and should be an **exact match** to the profile that this module instance was added to within LunaSea. Capitalization and punctuation _does_ matter.
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Triggers" %}
|
||||
Select which events should trigger a push notification. The following triggers are supported:
|
||||
|
||||
| Trigger | Supported? |
|
||||
| :--- | :---: |
|
||||
| Playback Start | **Yes** ✅ |
|
||||
| Playback Stop | **Yes** ✅ |
|
||||
| Playback Pause | **Yes** ✅ |
|
||||
| Playback Resume | **Yes** ✅ |
|
||||
| Playback Error | **Yes** ✅ |
|
||||
| Transcode Decision Change | **Yes** ✅ |
|
||||
| Watched | **Yes** ✅ |
|
||||
| Buffer Warning | **Yes** ✅ |
|
||||
| User Concurrent Streams | **Yes** ✅ |
|
||||
| User New Device | **Yes** ✅ |
|
||||
| Recently Added | **Yes** ✅ |
|
||||
| Plex Server Down | **Yes** ✅ |
|
||||
| Plex Server Back Up | **Yes** ✅ |
|
||||
| Plex Remote Access Down | **Yes** ✅ |
|
||||
| Plex Remote Access Back Up | **Yes** ✅ |
|
||||
| Plex Update Available | **Yes** ✅ |
|
||||
| Tautulli Update Available | **Yes** ✅ |
|
||||
| Tautulli Database Corruption | **Yes** ✅ |
|
||||
| Trigger | Supported? |
|
||||
| ---------------------------- | :--------: |
|
||||
| Playback Start | **Yes** ✅ |
|
||||
| Playback Stop | **Yes** ✅ |
|
||||
| Playback Pause | **Yes** ✅ |
|
||||
| Playback Resume | **Yes** ✅ |
|
||||
| Playback Error | **Yes** ✅ |
|
||||
| Transcode Decision Change | **Yes** ✅ |
|
||||
| Watched | **Yes** ✅ |
|
||||
| Buffer Warning | **Yes** ✅ |
|
||||
| User Concurrent Streams | **Yes** ✅ |
|
||||
| User New Device | **Yes** ✅ |
|
||||
| Recently Added | **Yes** ✅ |
|
||||
| Plex Server Down | **Yes** ✅ |
|
||||
| Plex Server Back Up | **Yes** ✅ |
|
||||
| Plex Remote Access Down | **Yes** ✅ |
|
||||
| Plex Remote Access Back Up | **Yes** ✅ |
|
||||
| Plex Update Available | **Yes** ✅ |
|
||||
| Tautulli Update Available | **Yes** ✅ |
|
||||
| Tautulli Database Corruption | **Yes** ✅ |
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Conditions" %}
|
||||
You can _**optionally**_ add conditions that must be met for the webhook notifications to trigger.
|
||||
|
||||
You can set as many conditions as you like, and can combine different conditions for different triggers by adding separate webhooks to Tautulli.
|
||||
You can set as many conditions as you like, and can combine different conditions for different triggers by adding separate webhooks to Tautulli.
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Data" %}
|
||||
The following two sections apply to **every** trigger, and needs to be completed for each trigger being used. If the trigger is not being used in this notification agent, you do not need to fill in the data.
|
||||
{% tab title="Text" %}
|
||||
A default message is set for all trigger types, but on this page you can alter the exact text that would appear in the message.
|
||||
|
||||
### JSON Data
|
||||
|
||||
Each trigger has a specific JSON data payload that must be included in the request.
|
||||
|
||||
1. Go to the list of JSON data payload templates [here](https://github.com/CometTools/LunaSea-Notification-Relay/tree/master/data/tautulli).
|
||||
2. Open the template that matches the trigger being added.
|
||||
3. Copy the JSON data and paste it into the JSON data section for the trigger \(You can hit the "Raw" button on GitHub to easily copy the entire JSON payload\).
|
||||
|
||||
### JSON Headers
|
||||
|
||||
{% hint style="warning" %}
|
||||
This step is only required if you are _**not**_ using the default LunaSea profile \(`default`\). LunaSea will assume the default profile when none is supplied.
|
||||
|
||||
Correctly setting up this field is critically important to get full deep-linking support.
|
||||
{% endhint %}
|
||||
|
||||
To attach your profile to the webhook, we need to manually create the JSON headers that will include the authorization header. This header will only contain the name of your profile, and no private information.
|
||||
|
||||
To create the authorization header:
|
||||
|
||||
1. Go to DebugBear's [Basic Auth Header Generator](https://www.debugbear.com/basic-auth-header-generator).
|
||||
2. The username field should be an **exact match** to the profile that this module instance was added to within LunaSea. Capitalization and punctuation _does_ matter.
|
||||
3. The password field should be kept empty.
|
||||
4. Copy the generated authorization header **after** `Authorization:` .
|
||||
5. Get the [template JSON headers](https://github.com/CometTools/LunaSea-Notification-Relay/blob/master/data/tautulli/_header.jsonc) and follow the instructions to insert the generated header into the template.
|
||||
6. Copy and paste the template \(ensure you copy below the line specified in the file\) into each trigger's JSON headers area that is used within this webhook.
|
||||
Please read the top of this tab in Tautulli about how to utilize the different modifiers.
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
Once setup, close LunaSea and run the webhook test in Tautulli. You should receive a new notification letting you know that LunaSea is ready to receive Tautulli notifications!
|
||||
|
||||
## Attach Images to Notifications
|
||||
|
||||
Unlike other modules, in order to receive images \(posters, etc.\) along with the notification, you will need to setup an image host within Tautulli. This step is _**optional**_ and not required, but recommended.
|
||||
Unlike other modules, in order to receive the actual images (posters, etc.) instead of a generic poster along with the notification, you will need to setup an image host within Tautulli. This step is _**optional**_ and not required, but recommended.
|
||||
|
||||
1. Go to Tautulli's web GUI
|
||||
2. Open the Settings, enter "3rd Party APIs"
|
||||
3. Select any of the available image providers
|
||||
* _**Note**: If selecting `Self-hosted on public domain`, ensure that the image path \(_`/tautulli/image`\) is publicly accessible from the internet
|
||||
* _**Note**: If selecting `Self-hosted on public domain`, ensure that the image path (_`/tautulli/image`) is publicly accessible from the internet
|
||||
4. Follow the [3rd Party APIs Guide](https://github.com/Tautulli/Tautulli/wiki/3rd-Party-APIs-Guide) to acquire the required details for the chosen image provider
|
||||
5. Enter and save the acquired API/Client ID information
|
||||
|
||||
## Advanced: Custom Notification Body
|
||||
|
||||
{% hint style="info" %}
|
||||
Each notification trigger has a default notification body that matches the built-in Discord notification agent messages. This step is _**optional**_ and is not required.
|
||||
{% endhint %}
|
||||
|
||||
Each notification trigger has support for having a custom notification body for that trigger. You must still use the template JSON data as explained above, but you can enter in your custom message into the empty `message` key in the JSON payload. You **must not** delete the `event_type` key that is in the template, else the notification will fail.
|
||||
|
||||
Use the notification parameters as explained at the top of the "Data" tab in the dialog within Tautulli to build your customized notification body.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user