{"components":{"schemas":{"Error":{"properties":{"error":{"enum":["bad_request","unauthorized","forbidden","not_found","session_expired","rate_limited","max_sessions","bandwidth_limit","extraction_failed","stream_unavailable","upstream_error","token_expired","transfer_invalid","maintenance","title_blocked","circuit_open","internal_error"],"type":"string"},"hint":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"status":{"type":"integer"},"title":{"type":"string"}},"required":["error","title","message","status"],"type":"object"}}},"info":{"description":"Streams","title":"ShowMate Proxy API","version":"1.1.0"},"openapi":"3.0.3","paths":{"/docs":{"get":{"summary":"Human API docs"}},"/health/live":{"get":{"responses":{"200":{"description":"Process up"}},"summary":"Liveness probe"}},"/health/ready":{"get":{"responses":{"200":{"description":"Ready"},"503":{"description":"Maintenance or not ready"}},"summary":"Readiness probe"}},"/metrics":{"get":{"responses":{"200":{"description":"text exposition"}},"summary":"Prometheus metrics"}},"/openapi.json":{"get":{"summary":"OpenAPI 3 document"}},"/play/batch":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"episode":{"type":"integer"},"season":{"type":"integer"},"tmdb_id":{"type":"string"}},"required":["tmdb_id"],"type":"object"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Per-item results"}},"summary":"Batch resolve sessions"}},"/play/{tmdb_id}":{"get":{"parameters":[{"in":"path","name":"tmdb_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"reuse","schema":{"enum":[0,1],"type":"integer"}},{"in":"header","name":"Idempotency-Key","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to /s/<sid>"},"400":{"description":"bad_request"},"403":{"description":"forbidden / title_blocked"},"429":{"description":"rate_limited / max_sessions / bandwidth_limit"},"500":{"description":"extraction_failed"},"503":{"description":"maintenance / circuit_open"}},"summary":"Create movie session and redirect to stream"}},"/play/{tmdb_id}/{season}/{episode}":{"get":{"parameters":[{"in":"path","name":"tmdb_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"season","required":true,"schema":{"type":"integer"}},{"in":"path","name":"episode","required":true,"schema":{"type":"integer"}}],"responses":{"302":{"description":"Redirect to /s/<sid>"}},"summary":"Create TV episode session"}},"/proxy":{"get":{"parameters":[{"in":"query","name":"sid","required":true,"schema":{"type":"string"}},{"in":"query","name":"url","required":true,"schema":{"type":"string"}},{"in":"query","name":"sig","schema":{"type":"string"}},{"in":"header","name":"If-None-Match","schema":{"type":"string"}},{"in":"header","name":"Range","schema":{"type":"string"}}],"responses":{"200":{"description":"Playlist or segment"},"304":{"description":"Not modified (ETag)"}},"summary":"Playlist/segment proxy"}},"/s/{sid}":{"get":{"parameters":[{"in":"path","name":"sid","required":true,"schema":{"type":"string"}},{"in":"query","name":"sig","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to /proxy"}},"summary":"Session entry (IP-locked)"}},"/transfer/claim/{code}":{"get":{"parameters":[{"in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to /s/<sid>"}},"summary":"Claim transfer code"}},"/transfer/create":{"post":{"parameters":[{"in":"query","name":"sid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"code + claim_url"}},"summary":"Create transfer code"}}},"servers":[{"url":"https://ultimatebackend-production.up.railway.app"}]}
