180 lines
4.6 KiB
JSON
180 lines
4.6 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://ytptube.app/schema/notifications.json",
|
|
"title": "Notification Configuration",
|
|
"type": "array",
|
|
"description": "Schema describing webhook and Apprise notification targets stored in notifications.json.",
|
|
"items": {
|
|
"$ref": "#/definitions/target"
|
|
},
|
|
"definitions": {
|
|
"event": {
|
|
"type": "string",
|
|
"enum": [
|
|
"test",
|
|
"item_added",
|
|
"item_completed",
|
|
"item_cancelled",
|
|
"item_deleted",
|
|
"item_paused",
|
|
"item_resumed",
|
|
"item_moved",
|
|
"paused",
|
|
"resumed",
|
|
"log_info",
|
|
"log_success",
|
|
"log_warning",
|
|
"log_error",
|
|
"task_dispatched"
|
|
],
|
|
"description": "Event identifier emitted by the backend event bus."
|
|
},
|
|
"header": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"key": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "HTTP header name."
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "HTTP header value."
|
|
}
|
|
}
|
|
},
|
|
"request": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"type",
|
|
"method",
|
|
"url"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"json",
|
|
"form"
|
|
],
|
|
"default": "json",
|
|
"description": "Payload encoding strategy for the outgoing request."
|
|
},
|
|
"method": {
|
|
"type": "string",
|
|
"enum": [
|
|
"POST",
|
|
"PUT"
|
|
],
|
|
"default": "POST",
|
|
"description": "HTTP method used when delivering the notification payload."
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Destination endpoint or Apprise URL that receives the notification."
|
|
},
|
|
"data_key": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"default": "data",
|
|
"description": "JSON/Form field name used to wrap the serialized event payload."
|
|
},
|
|
"headers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/header"
|
|
},
|
|
"description": "Optional static headers appended to each HTTP request.",
|
|
"default": []
|
|
}
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"request"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique identifier for the notification target (UUIDv4)."
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "Label shown in the UI for this notification target."
|
|
},
|
|
"on": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/event"
|
|
},
|
|
"description": "Subset of events that trigger this target; leave empty to listen to every event.",
|
|
"default": []
|
|
},
|
|
"presets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"description": "Restrict notifications to downloads created by these presets.",
|
|
"default": []
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Whether the notification target is enabled.",
|
|
"default": true
|
|
},
|
|
"request": {
|
|
"$ref": "#/definitions/request"
|
|
}
|
|
},
|
|
"examples": [
|
|
{
|
|
"id": "d40d4b6e-45b8-47a1-b1b2-9cf7f8e6c67a",
|
|
"name": "Webhook: Completed items",
|
|
"on": [
|
|
"item_completed"
|
|
],
|
|
"presets": [
|
|
"default"
|
|
],
|
|
"request": {
|
|
"type": "json",
|
|
"method": "POST",
|
|
"url": "https://hooks.example.com/ytptube",
|
|
"headers": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer token123"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "9f783d0a-6e8b-4c1d-9089-5bb4ae0f2c47",
|
|
"name": "Apprise Notifier",
|
|
"on": [],
|
|
"request": {
|
|
"type": "json",
|
|
"method": "POST",
|
|
"url": "discord://webhook/token"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|