# `/api/v1` client contract The spec a native client (**Google TV / Kotlin**, **Tizen / JS**, iOS/tvOS / Swift) mirrors. There is no shared binary across languages, so THIS is the shared layer. Two parts: 1. **The HTTP contract** — endpoints + wire shapes. 2. **Client responsibilities** — the behavior each client re-implements identically (what `MytViewKit`'s stores do). Getting these right is what stops cross-platform drift. > **Golden rule: the server decides, the client renders.** Never re-derive a decision the server already > made — `watchedAt`, `resumePosition`, `isVertical`, `directPlay`, feed order, related order, visibility, > `prefs`. The one deliberate exception is **playability**: the server is *fail-open* and hands you a > signed original `url` you always try first; `playback.kind` is only an informational **hint** (badge / > analytics), never a gate — you fall back to live HLS (`hlsUrl`) only on a real decode error, exactly > like the web `