ytptube/app/schema/tasks.json

89 lines
2.7 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://ytptube.app/schemas/tasks.json",
"title": "YTPTube Scheduled Tasks",
"description": "Schema describing recurring download tasks stored in tasks.json.",
"type": "array",
"items": {
"$ref": "#/definitions/task"
},
"definitions": {
"task": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the task (UUIDv4)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Human-friendly task label used throughout the UI."
},
"url": {
"type": "string",
"format": "uri",
"pattern": "^https?://",
"description": "Playlist or channel URL monitored by the task."
},
"folder": {
"type": "string",
"description": "Optional download folder override for this task.",
"default": ""
},
"preset": {
"type": "string",
"description": "Preset name to apply; falls back to the global default when omitted.",
"default": ""
},
"timer": {
"type": "string",
"description": "Cron expression executed by the scheduler (five or six space-separated fields).",
"default": ""
},
"template": {
"type": "string",
"description": "Output filename template override for downloads created by this task.",
"default": ""
},
"cli": {
"type": "string",
"description": "Additional yt-dlp arguments appended to the download request.",
"default": ""
},
"auto_start": {
"type": "boolean",
"description": "Automatically queue new items discovered by the task.",
"default": true
},
"handler_enabled": {
"type": "boolean",
"description": "Controls whether the matched handler remains enabled for this task.",
"default": true
},
"enabled": {
"type": "boolean",
"description": "Controls whether the task is enabled and will be executed by the scheduler.",
"default": true
}
},
"examples": [
{
"id": "4d9be675-ecb8-4b42-9a84-8cee71a7a2e2",
"name": "Weekly playlist sync",
"url": "https://www.youtube.com/playlist?list=PL12345",
"preset": "default",
"timer": "0 */6 * * *",
"auto_start": true
}
]
}
}
}