diff --git a/SPEC.md b/SPEC.md index e153a3f..d3b00f4 100644 --- a/SPEC.md +++ b/SPEC.md @@ -96,12 +96,34 @@ Requires an administrator API key. Serves the pause-overlay script that JRay injects into the web client's `index.html` (see below). Anonymous access. +### `GET /Plugins/JRay/Tasks/Pending?limit=10` + +Lets a remote extraction worker discover what to work on next. Returns a +random sample (default 10, max 100) of movies/episodes in the library that +have no truth data yet (neither a managed upload nor a sidecar file): + +```json +[ + { "item_id": "abc123-guid", "path": "/data/movies/Movie.mkv", "name": "Movie" } +] +``` + +Requires an administrator API key. The sample is random and unordered, so +repeated polling naturally spreads work across the backlog without needing +server-side task tracking; an empty array means there's nothing left to do +(or every remaining item is a virtual/missing-path item that JRay can't +process). + ## Client: pushing results from a remote extraction worker A worker that runs the extraction pipeline on a different machine than Jellyfin (i.e. it cannot write a `Movie.jray.json` sidecar next to the media file) can push results directly over HTTP. +To find work, poll `GET /Plugins/JRay/Tasks/Pending?limit=10` (see above) for +a random batch of items that still need processing, instead of walking the +whole library and checking each item's `Timeline`/sidecar yourself. + ### 1. Authenticate Create an **Administrator** API key in Jellyfin (Dashboard → API Keys), and