Silo's request system is being reworked on the server and web (not merged yet). The native API changes are additive, so this client keeps working unchanged, but it can't use the new behaviour until it adopts it. Every addition is behind a capability in GET /api/v2/requests/status.
What the server adds
- One request state.
MediaRequest.state and RequestMediaState.state take the values pending, approved, processing, partially_available, available, declined, cancelled and failed. The server derives the state from the request's status, outcome, servers and library presence. Show it instead of combining status and outcome in the client.
- Why a request was declined or cancelled.
MediaRequest.outcome_reason.
- Following someone else's request.
PUT / DELETE /api/v2/requests/follows/{media_type}/{tmdb_id}, with request.following and request.requested_by_viewer on the title detail. Capability: follow_supported. A follower's "now available" notification carries follower: true.
- Cancelling. An owner can cancel a pending request, and an approved request that hasn't been sent to a server yet (it has no
targets).
- Season requests.
createRequest accepts seasons. Without them, the request covers every aired season the library doesn't have.
MediaRequest.seasons and season_progress.
- The series detail lists
seasons with availability (missing, partial, available) and requested.
- Capabilities:
season_requests_supported, and missing_seasons_requestable (whether a series already in the library can be requested for its missing seasons).
Work
The web implementation is in silo-server; the PRs will be linked here when they open.
Silo's request system is being reworked on the server and web (not merged yet). The native API changes are additive, so this client keeps working unchanged, but it can't use the new behaviour until it adopts it. Every addition is behind a capability in
GET /api/v2/requests/status.What the server adds
MediaRequest.stateandRequestMediaState.statetake the valuespending,approved,processing,partially_available,available,declined,cancelledandfailed. The server derives the state from the request's status, outcome, servers and library presence. Show it instead of combiningstatusandoutcomein the client.MediaRequest.outcome_reason.PUT/DELETE /api/v2/requests/follows/{media_type}/{tmdb_id}, withrequest.followingandrequest.requested_by_vieweron the title detail. Capability:follow_supported. A follower's "now available" notification carriesfollower: true.targets).createRequestacceptsseasons. Without them, the request covers every aired season the library doesn't have.MediaRequest.seasonsandseason_progress.seasonswithavailability(missing,partial,available) andrequested.season_requests_supported, andmissing_seasons_requestable(whether a series already in the library can be requested for its missing seasons).Work
statein request lists and on the title detail, withoutcome_reasonwhen a request was declined or cancelled.follow_supported.targets.season_requests_supported, and "Request seasons" on a library series whenmissing_seasons_requestable.The web implementation is in silo-server; the PRs will be linked here when they open.