{"service":"jetpack-pairing-api","health":"/health","pairing":{"session":"POST /pairing/session","resolve":"POST /pairing/resolve","send":"POST /pairing/send","complete":"POST /pairing/complete","ws":"GET /pairing/ws?sessionId=","wait":"GET /pairing/wait?sessionId=&timeoutMs= (long-poll; preferred on tvOS)"},"auth":{"device":"POST /auth/device (anonymous device session, JSON DeviceAuthResponse)","refresh":"POST /auth/refresh (JSON AuthRefreshRequest → DeviceAuthResponse)","sign_in_external":"POST /auth/sign-in-external (JSON ExternalSignInRequest → ExternalSignInResponse)","link_external":"POST /auth/link-external (Bearer + ExternalSignInRequest → ExternalLinkResponse)","me":"GET /auth/me (Bearer → AuthMeResponse)"},"account":{"delete":"DELETE /account (Bearer; permanently deletes all cloud data for the user)","identity":"GET/PUT /account/identity (Bearer; JSON AccountIdentityDto / AccountIdentityUpdateRequest)"},"webhooks":{"revenuecat":"POST /webhooks/revenuecat (Authorization header)"},"shares":{"invite":"POST /shares/{serverProfileId}/invites (Bearer, admin; issues an 8-char code, superseding the outstanding one)","group":"GET /shares/{serverProfileId} (Bearer, member; members + seats; code only for the admin)","revoke_invite":"DELETE /shares/{serverProfileId}/invites/{code} (Bearer, admin)","remove_member":"DELETE /shares/{serverProfileId}/members/{userSub} (Bearer, admin or self)","resolve":"POST /link/resolve (Bearer; pairing session first at 6 or 8 chars, then playlist invite at 8)","redeem":"POST /shares/redeem (Bearer; joins a shared playlist, returns SharedPlaylistDto)","mine":"GET /shares/mine (Bearer; shares this account is a guest in, for reinstall recovery)"},"devices":{"register":"POST /devices/register (Bearer; JSON DeviceRegisterRequest)","list":"GET /devices (Bearer; optional X-Device-Id; JSON DeviceListResponse)","unregister":"DELETE /devices/unregister (Bearer; X-Device-Id)","push_token":"POST/DELETE /devices/push-token (Bearer; JSON DevicePushTokenUpsertRequest / X-Device-Id)"},"scheduled_recordings":{"wake":"POST/GET/DELETE /scheduled-recordings/wake (Bearer; JSON ScheduledRecordingWakeUpsertRequest or ?scheduledRecordingId=)","dispatch":"POST /scheduled-recordings/wake/dispatch (Bearer; manual wake sweep)"},"premium_preview":{"claim":"POST /premium-preview/claim (JSON PremiumPreviewClaimRequest → PremiumPreviewClaimResponse; one claim per deviceId)"},"screenshots":{"auth_probe":"GET /player_api.php?username=screenshot&password=screenshot","live_streams":"GET /player_api.php?action=get_live_streams&username=...&password=...","vod_streams":"GET /player_api.php?action=get_vod_streams&iso=<bcp47>","series":"GET /player_api.php?action=get_series&iso=<bcp47>","series_info":"GET /player_api.php?action=get_series_info&series_id=<id>&iso=<bcp47>","epg":"GET /xmltv.php?username=screenshot&password=screenshot&iso=<bcp47>","channel_logos":"GET /screenshot/channels/{file}.png"},"sync":{"push":"POST /sync/push (profile bundle; legacy __favorites__/__watch_history__ blob keys return 400)","streams_ws":"GET /streams/ws (Bearer; per-profile watching presence + kick)","full":"GET /sync/full (bindings + favorites + watch + scheduled + completed recordings maps)","profile_bindings":"POST /sync/profile-bindings","favorites":"PUT/DELETE /sync/{serverProfileId}/favorites/{itemId} (itemId = SyncItemSlug tvg triple or legacy 64-hex)","watch":"PUT /sync/{serverProfileId}/watch/{itemId} (same itemId rules)","scheduled_recordings":"PUT/DELETE /sync/{serverProfileId}/scheduled-recordings/{itemId}","completed_recordings":"PUT/DELETE /sync/{serverProfileId}/completed-recordings/{itemId}","state":"GET /sync/state/{profileId}","data":"GET /sync/data/{profileId} (ciphertext body)","snapshot":"GET /sync/snapshot (excludes legacy blob keys)","ws":"GET /sync/ws (Authorization: Bearer access JWT)"},"remote":{"ws":"GET /remote/ws?role=host|controller&deviceId=&deviceName=&targetDeviceId= (Bearer access JWT; companion remote control)"},"recording_sync":{"ws":"GET /recording-sync/ws?role=receiver|sender&deviceId=&deviceName=&targetDeviceId=&recordingId=&sessionId= (Bearer access JWT; P2P recording transfer signalling)","sessions":"POST /recording-sync/sessions (Bearer; wake source device with recording_sync_invite)"}}