Introduction
AminoTV supports helping clients track concurrent viewing across multiple devices by providing an API for them to interact with.
Clients can use this API to give an approximation to how many streams a user account is watching.
It's not possible for AminoTV to track the actual stream consumption because we do not always have control over the distribution network. For example when using a CDN or third party backend.
Implementation
The MediaPlaySession entity
Amino models a MediaPlaySession in the domain language as an entity that can be used to track playback sessions for a user.
An example of the API response representing this resource is:
{ "data": [ { "type": "MediaPlaySession", "id": "6b6bf3e1-555b-45cb-b5d3-63a2ff7be9e3 ", "attributes": { "service": "live", "ip4_address": "86.190.137.158", "user_agent": "Set Top Box", "play_started_timestamp": 1551091684, "last_updated_timestamp": 1551091736 } } ] }
Managing sessions
The client should call the MediaPlaySession based on user activity. You should not provide the user with a direct means to access the API but rather call it as a side-effect of other user initiated actions.
Example
Description | URL | Number of MediaPlaySessions after call is made |
---|---|---|
User account is not watching anything | 0 | |
User starts watching something on their set top box | POST /users/{user_id}/media_play_sessions | 1 |
Another person in the household starts watching something on a their mobile | POST /users/{user_id}/media_play_sessions | 2 |
The first user switches off the set top box without giving the client a chance to delete their session | None | 2 |
The second user presses stop on their mobile device | DELETE /media_play_sessions/{media_play_session_id} | 1 |
Some time later the periodic clean up job runs on the server and deletes the zombie session | N/A | 0 |