Update Conductarr TV contracts and ratings reads
This commit is contained in:
parent
9dd321f07e
commit
f53defad90
13 changed files with 600 additions and 36 deletions
|
|
@ -1 +1 @@
|
|||
481492d3a8a0651a89901de548cd511218c0562e
|
||||
7e8f3f0a1c9a88d67b2a9518c1161db84ade531a
|
||||
|
|
|
|||
|
|
@ -1097,6 +1097,16 @@
|
|||
"unknown"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"vote_average": {
|
||||
"description": "Provider episode score on a 0–10 scale; absence is not zero.",
|
||||
"format": "double",
|
||||
"type": "number"
|
||||
},
|
||||
"vote_count": {
|
||||
"description": "Provider episode vote count; explicit zero is retained.",
|
||||
"format": "int64",
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
|
@ -7058,6 +7068,33 @@
|
|||
],
|
||||
"type": "object"
|
||||
},
|
||||
"TitleRatings": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"$schema": {
|
||||
"description": "A URL to the JSON Schema for this object.",
|
||||
"examples": [
|
||||
"https://example.com/schemas/TitleRatings.json"
|
||||
],
|
||||
"format": "uri",
|
||||
"readOnly": true,
|
||||
"type": "string"
|
||||
},
|
||||
"ratings": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Rating"
|
||||
},
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ratings"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"TitleRequestsBody": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
|
|
@ -8299,7 +8336,7 @@
|
|||
"paths": {
|
||||
"/api/v1/activity": {
|
||||
"get": {
|
||||
"description": "Defaults to requests attributed to the signed-in operator; requester=all shows household progress. Items carry the recorded requester and actor exactly as filed, so an on-behalf request belongs to its requester. Stages are separate evidence from separate owners and are never collapsed into a ready flag: a request receipt, an Arr file, a library membership or Seerr availability each prove only their own stage, and unknown, stale, conflicting or failed evidence stays in its stage. The feed reads local ledgers and cached authenticated server playback admission only; no provider is called per row. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Defaults to requests attributed to the signed-in operator; requester=all shows household progress. Items carry the recorded requester and actor exactly as filed, so an on-behalf request belongs to its requester. Stages are separate evidence from separate owners and are never collapsed into a ready flag: a request receipt, an Arr file, a library membership or Seerr availability each prove only their own stage, and unknown, stale, conflicting or failed evidence stays in its stage. The feed reads local ledgers and cached authenticated server playback admission only; no provider is called per row. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-activity",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -8311,6 +8348,14 @@
|
|||
"description": "Household requester key to follow, or all for household progress. Defaults to the signed-in operator's own requests. This selects whose requests are shown; it never changes who is acting",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -8322,7 +8367,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -8375,7 +8439,7 @@
|
|||
},
|
||||
"/api/v1/activity/titles/{tmdb}/{type}": {
|
||||
"get": {
|
||||
"description": "Reads Seerr request status, the holding Arr and a viewer-scoped Jellyfin view for this one title. Each live source fails independently and degrades only its own stage; a Seerr, Arr or Jellyfin outage leaves its stage stale or unknown and never proves readiness. Playback joins cached Jellyfin PlaybackInfo queried with the server key on the viewer's behalf, using a separate request pool sized by the layer visibility item_budget, with watch records and media-health faults as fallback. Items without a recorded Video stream in the first source and .strm paths are not sampled because Jellyfin can refresh metadata and inspect media for them. Admission proves neither playback policy, phone compatibility nor media bytes. open_link is the viewer's own Jellyfin item page, offered only after the viewer-scoped read found that item and only for a viewer the operator may open Jellyfin as; it carries no credential. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Reads Seerr request status, the holding Arr and a viewer-scoped Jellyfin view for this one title. Each live source fails independently and degrades only its own stage; a Seerr, Arr or Jellyfin outage leaves its stage stale or unknown and never proves readiness. Playback joins cached Jellyfin PlaybackInfo queried with the server key on the viewer's behalf, using a separate request pool sized by the layer visibility item_budget, with watch records and media-health faults as fallback. Items without a recorded Video stream in the first source and .strm paths are not sampled because Jellyfin can refresh metadata and inspect media for them. Admission proves neither playback policy, phone compatibility nor media bytes. open_link is the viewer's own Jellyfin item page, offered only after the viewer-scoped read found that item and only for a viewer the operator may open Jellyfin as; it carries no credential. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-activity-title",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -8409,6 +8473,14 @@
|
|||
"description": "Household member to read readiness for. Defaults to the signed-in operator",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -8420,7 +8492,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -9516,7 +9607,7 @@
|
|||
},
|
||||
"/catalogue/discover": {
|
||||
"get": {
|
||||
"description": "General-interest provider suggestions, not personalised Conductarr recommendations. Browsing cannot request or acquire media. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "General-interest provider suggestions, not personalised Conductarr recommendations. Browsing cannot request or acquire media. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-discover",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -9584,6 +9675,14 @@
|
|||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -9595,7 +9694,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -9648,7 +9766,7 @@
|
|||
},
|
||||
"/catalogue/options": {
|
||||
"get": {
|
||||
"description": "Read-only cached genre and configured regional streaming-provider options. Independent source observations distinguish answered empty lists from unavailable metadata. No title/lane preload, personalised ranking or availability claim. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Read-only cached genre and configured regional streaming-provider options. Independent source observations distinguish answered empty lists from unavailable metadata. No title/lane preload, personalised ranking or availability claim. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-options",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -9663,6 +9781,14 @@
|
|||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -9674,7 +9800,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -9727,7 +9872,7 @@
|
|||
},
|
||||
"/catalogue/performers/{performer}": {
|
||||
"get": {
|
||||
"description": "Read-only Seerr person facts with strict performer identity. Observed identity with empty optional facts differs from unavailable or explicitly missing metadata. Seerr lookup failures, including unknown people, return unavailable, not verified absence. No title holding, request, visibility or playback claim follows from person metadata. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Read-only Seerr person facts with strict performer identity. Observed identity with empty optional facts differs from unavailable or explicitly missing metadata. Seerr lookup failures, including unknown people, return unavailable, not verified absence. No title holding, request, visibility or playback claim follows from person metadata. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-performer",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -9739,6 +9884,14 @@
|
|||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -9750,7 +9903,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -9803,7 +9975,7 @@
|
|||
},
|
||||
"/catalogue/performers/{performer}/filmography": {
|
||||
"get": {
|
||||
"description": "Read-only native pages of Seerr's unpaged non-adult cast credits, not an exhaustive career. Groups movie/series identities while preserving every role in returned order. Counts describe this source snapshot and are absent on failure. Household holding, configured audience and incomplete request relations remain independent; none proves playback. No per-credit detail fetch or mutation. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Read-only native pages of Seerr's unpaged non-adult cast credits, not an exhaustive career. Groups movie/series identities while preserving every role in returned order. Counts describe this source snapshot and are absent on failure. Household holding, configured audience and incomplete request relations remain independent; none proves playback. No per-credit detail fetch or mutation. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-filmography",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -9839,6 +10011,14 @@
|
|||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -9850,7 +10030,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -10006,7 +10205,7 @@
|
|||
},
|
||||
"/catalogue/titles/{tmdb}/{type}": {
|
||||
"get": {
|
||||
"description": "Reads provider metadata and the existing held-title owner independently. Unavailable metadata never erases known held files or implies a title is unheld. No request, membership, watched-state or acquisition writer is called. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Reads provider metadata and the existing held-title owner independently. Unavailable metadata never erases known held files or implies a title is unheld. No request, membership, watched-state or acquisition writer is called. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-title",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -10030,6 +10229,14 @@
|
|||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -10041,7 +10248,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -10094,7 +10320,7 @@
|
|||
},
|
||||
"/catalogue/titles/{tmdb}/{type}/cast": {
|
||||
"get": {
|
||||
"description": "Read-only unpaged Seerr cast with performer IDs distinct from typed title IDs. Series expose only the leading aggregate character per performer. Missing, unavailable and observed empty cast differ. Cast metadata proves neither holding, requests, visibility nor playback. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Read-only unpaged Seerr cast with performer IDs distinct from typed title IDs. Series expose only the leading aggregate character per performer. Missing, unavailable and observed empty cast differ. Cast metadata proves neither holding, requests, visibility nor playback. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-cast",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -10118,6 +10344,14 @@
|
|||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -10129,7 +10363,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -10444,9 +10697,97 @@
|
|||
"summary": "Retained title genres and NL streaming offers"
|
||||
}
|
||||
},
|
||||
"/catalogue/titles/{tmdb}/{type}/ratings": {
|
||||
"get": {
|
||||
"description": "Authenticated ratings-only display read with the same source observations as enrichment. Server cache: 6 hours for positive results, 1 minute for missing results, at most 300 typed title identities; concurrent identical reads share a fetch. Provider failures are not cached. Expired entries are never served. Reads no Arr, files, mirrors, memberships or watch state and never authorizes a title action. Enrichment and committed title reads remain fresh. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"operationId": "get-catalogue-ratings",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "tmdb",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"format": "int64",
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "path",
|
||||
"name": "type",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"enum": [
|
||||
"tv",
|
||||
"movie"
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/TitleRatings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
"application/problem+json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ErrorModel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Authentik sign-in required"
|
||||
},
|
||||
"403": {
|
||||
"content": {
|
||||
"application/problem+json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ErrorModel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Operator or target is not permitted"
|
||||
},
|
||||
"503": {
|
||||
"content": {
|
||||
"application/problem+json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ErrorModel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Identity verification or operation unavailable"
|
||||
},
|
||||
"default": {
|
||||
"content": {
|
||||
"application/problem+json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ErrorModel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Error"
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"authentikSession": []
|
||||
}
|
||||
],
|
||||
"summary": "Cached title source ratings"
|
||||
}
|
||||
},
|
||||
"/catalogue/titles/{tmdb}/{type}/related": {
|
||||
"get": {
|
||||
"description": "Typed title-related provider suggestions kept separate from Conductarr's personalised ranking. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Typed title-related provider suggestions kept separate from Conductarr's personalised ranking. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-related",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -10482,6 +10823,14 @@
|
|||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -10493,7 +10842,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -10546,7 +10914,7 @@
|
|||
},
|
||||
"/catalogue/tv/{tmdb}/seasons/{season}": {
|
||||
"get": {
|
||||
"description": "Reads an explicitly selected provider season and joins local primary episode evidence without requesting missing seasons or claiming playback. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Reads an explicitly selected provider season and joins local primary episode evidence without requesting missing seasons or claiming playback. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-catalogue-season",
|
||||
"parameters": [
|
||||
{
|
||||
|
|
@ -10568,6 +10936,14 @@
|
|||
"minimum": 0,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -10579,7 +10955,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
@ -11726,8 +12121,18 @@
|
|||
},
|
||||
"/curation/library-audiences": {
|
||||
"get": {
|
||||
"description": "Projects named membership routes, enabled Jellyfin libraries and users' configured sees by media type and anime scope. Includes empty libraries and scopes with no configured viewer. This read does not inspect current title unions, watch-write permissions or live media, and grants no mutation authority. An unwired audience read is unavailable, never an empty preview. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers.",
|
||||
"description": "Projects named membership routes, enabled Jellyfin libraries and users' configured sees by media type and anime scope. Includes empty libraries and scopes with no configured viewer. This read does not inspect current title unions, watch-write permissions or live media, and grants no mutation authority. An unwired audience read is unavailable, never an empty preview. Authenticated household cockpit authority required; watch-state writes are limited to capability-listed viewers. Conditional reads authenticate and authorize first. ETag hashes verified operator authority, request identity and exact serialized representation; matching If-None-Match returns bodyless 304. Cache-Control: no-store remains unchanged: HTTP caches must not store the response or validator. An application-owned, person-partitioned last-known-good display model may be revalidated explicitly; validators never permit cross-person reuse. Vary includes Cookie and Authorization. Reads, projection, encoding and hashing still run on 304; only repeat transfer is avoided.",
|
||||
"operationId": "get-library-audiences",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Validator from this operator's prior application-owned display representation; weak tags, lists and * use GET weak comparison",
|
||||
"in": "header",
|
||||
"name": "If-None-Match",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
|
|
@ -11737,7 +12142,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"description": "OK"
|
||||
"description": "OK",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"304": {
|
||||
"description": "Authenticated representation unchanged; no body. Reuse only the same person's application-owned display state.",
|
||||
"headers": {
|
||||
"ETag": {
|
||||
"description": "Strong SHA-256 validator scoped to verified operator authority, request identity and exact response bytes",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"content": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue