App Requirements

    App Requirements


    Article summary

    Below is a list of various App requirements which must be met. These requirements allow you to deliver the best App experience possible while also providing us with key information to ensure the quality your users expect is being met.

    User stories are included within the requirements to help aid in the development of your App. Expand the user story sections for the user-story details, prerequisites, acceptance criteria, and additional notes.

    Operational requirements

    We use these metrics to monitor reliability and performance to ensure your user-expected quality of performance is met.

    Metric

    Definition

    Methodology

    Requirement

    Time To Minimally Useable (TTMU)
    REQ_ID:OR01

    The time from when your App starts loading into the WPE runtime until your App calls the Lifecycle.ready() method. (See Launch Completed metric below.)

    User Story

    As a user, I want the App to launch quickly so that I can start using it.

    Acceptance Criteria
    GIVEN I am using an X1 App Platform device connected to a controlled network speed of 20mbps, WHEN I launch the App from a cold start (I.e. it is in the 'unloaded state', not inactive state), THEN the App splash screen (displaying the App identification / logo) must appear within 5 seconds.

    UK Only: On Sky Glass, the App splash screen must appear within 2 seconds after launching the App from a cold start.

    GIVEN I am using an X1 App Platform device connected to a controlled network speed of 20mbps, WHEN I launch the App from a cold start (I.e. it is in the 'unloaded state', not inactive state), THEN the App UI must load within 10 seconds.

    Notes
    • The App should always operate without issues if a user has at least 2.5mbps available. If the App experiences a lower network speed or loss of connectivity, then the App must handle this gracefully.
    • The App must always support the ability for it to be placed into an Inactive state in order to reduce load times.
    • Profile selection should be a function within the App, it should not be a barrier to content discovery or playback.
    • Loading times are dependent on the App and hardware on the set-top-box (STB). Loading indicators are controlled by the App.
    UK Only: On a Sky Q multiroom device, an extra 10% load time is allowed.

    Lifecycle.ready()
    -
    When App is launched

    95% of all launches must be less than 10s over a 24hr period, with a minimum of 1000 launches.

    Error Free Session Rate (EFSR)
    REQ_ID:OR02

    The number of Error Free Sessions divided by the total number of sessions over a given 4hr time period.

    An error free session is any App session in which there were zero user-detectable errors (inclusive of errors which do not display an error message), which are tracked via Metrics.error().

    Error-free session count
    ÷
    Total session count

    Greater than 95% over a 4hr period (min 1000 launches)

    Errors Per Content Minute (EPCM)
    REQ_ID:OR03

    The total number of user-detectable errors per minute of content viewed by users.

    This is an aggregated metric and not measured on a per-session basis.

    Metrics.error() count
    ÷
    sum( Metrics.stopContent() - Metrics.startContent() )

    Less than 0.05 over a 4hr period (min 1000 launches)

    Reporting requirements

    As a Content Partner, it is your responsibility to resolve all issues related to your App reported by us or your users. Your users exist all around the world, so you must provide 24/7 support 365 days per year with no exceptions.

    Metric

    Definition

    Requirement

    Launch completed
    REQ_ID:RR01

    When your App has loaded and is able to handle user inputs.

    App must call Lifecycle.ready() method when App has become usable.

    Error detected
    REQ_ID:RR02

    The moment your App detects an error occurred which a user can discover

    App must call Metrics.error() method upon detecting an user-visible error.

    User interaction
    REQ_ID:RR03

    Whenever one of your users starts or stops interacting with content (playing a game, listening to music, watching a video, etc.)

    The corresponding Metrics.startContent() or Metrics.stopContent() method must be called to indicate that the interaction has started or stopped.

    Incident response time
    REQ_ID:RR04

    The time it takes to communicate to us indicating you have allocated resource to investigate or resolve an issue after being made aware of it (internally or externally).

    You must respond to any issues within the priority level requirement listed in the Incident Priority Levels section below.

    Incident resolution time
    REQ_ID:RR05

    The time it takes to fully resolve the issue after initially being made aware of it (internally or externally).

    You must resolve any issues within the priority level requirement listed in the Incident Priority Levels section below.

    User Story

    As a product lead, I want the App to provide various reporting metrics, so that I can monitor the App and provide relevant content in the UI.

    Acceptance Criteria
    GIVEN the App has onboarded onto the X1 App Platform, WHEN the App integrates as per the partner documentation, THEN the distributor can apply treatment accordingly in the X1 App Platform's UI.

    For Example: GIVEN the App has onboarded onto the X1 App Platform, WHEN the App integrates it’s Consumption & Resume Point data, THEN this should reflect in the X1 App Platform UI (e.g. with content appearing in the “Play now” rail and resume points in X1 App Platform UI Show centres).

    GIVEN the App has onboarded onto the X1 App Platform, WHEN the App integrates Entitlement data, THEN the App platform will be able to merchandise more accurately to users who are entitled to the App content.

    GIVEN the has onboarded onto the X1 App Platform, WHEN the App integrates Quality of Service metrics (for monitoring and application reporting), THEN the distributor will be able to monitor the service and identify incidents.

    Incident priority levels

    Your users want to have the best experience possible, which is why you must respond and resolve issues quickly. The priority levels below outline the required response and resolution times based on the severity of the issue.

    Priority

    Response Time

    Resolution Time

    Priority Definition

    P0 - Critical

    30 minutes

    4 hours

    App is completely unusable or essential features/functionalities do not work.

    P1 - Urgent

    1 hour

    8 hours

    Non-essential features/functionalities are not fully functional, significantly hindering App usage; issues that could weaken system integrity over a period of time; problems that can be ‘worked’ around in the short term but cause significant operational disruption in the long term.

    P2 - Important

    1 Business Day

    2 Business Days

    Assistance required for technical or functional features of your App. Problems that exist, that cause minor operational difficulties within the App.

    P3 - Monitor

    2 Business Days

    One week

    General queries. Undefined problems that may cause minor operational difficulties. Problems that require additional research and monitoring, collaborating with your team and the X1 App Program team to define and resolve the issue.

    P4 - Information

    One week

    When commercially feasible

    Comments or suggestions on services, technical features, design or other topics.

    Functional requirements

    These requirements are designed for your App to function properly on all devices and allow users to view your content.

    Feature

    Requirement

    Response time
    REQ_ID:FR01

    The time it takes for your App to show a response to a user key-press must be less than 100ms. For example, the user selects 'play' and it either starts playing or a 'loading' icon appears within 100ms.

    App navigation
    REQ_ID:FR02

    The current focus during navigation must be clearly identified on screen.

    User Story

    As a user, I want to be able to navigate through the App menu with ease and be certain which item is in focus.

    Acceptance Criteria
    GIVEN I am in the App UI, WHEN I navigate between content tiles or menu THEN the current in focus must be clearly identified on screen.

    GIVEN I am on the App landing/sign-in page, WHEN I navigate between options and through sign up and/or sign in THEN the current in-focus state of the user selection must be clearly identifiable on screen.

    Notes
    Identification can be via a colored box, highlighted image or subtle re-sizing.

    Search
    REQ_ID:FR03

    When a user submits a search, the correct list of content options is presented to the user.

    User Story

    As a user, I want to be able to search within the so that I can find what I’m looking for. Acceptance Criteria GIVEN I have entered the minimum number of search characters within the App, WHEN the search is submitted THEN the correct asset list should be returned for the searched characters. GIVEN I select a title from the returned asset list, WHEN I select the play option, THEN the asset should play successfully. Notes Identification can be via a colored box, highlighted image or subtle re-sizing.

    Playback start
    REQ_ID:FR04

    The amount of time between a user requesting playback and the asset starting playback must be less than 3 seconds.

    Device support
    REQ_ID:FR05

    Your App must support all X1 App Platform-compliant Remote Specifications.

    User Story

    As a user, I want to be able to use any compatible remote to control the App in line with the Button Mapping and Trickplay requirements so that each of the relevant remotes I use to access the App works as expected.

    Acceptance Criteria
    GIVEN I have a supported remote WHEN I interact with the App using the remote control THEN the App should work as expected.

    GIVEN I am using a remote control with a Touch Dish WHEN I interact with the apps using swipe/swipe-and-hold/select commands THEN the App should work as expected

    GIVEN I am using a Touch remote control with a Touch functionality turned off WHEN I interact with the apps using click/click-and-hold/select commands THEN the App should work as expected.

    Memory usage
    REQ_ID:FR06

    Your App must not exceed 200MB of RAM. Some devices which support 4k video can handle up to 250mb, but your App must support 200MB as well so that all devices are compatible with your content.

    Local storage
    REQ_ID:FR07

    Your App must be able to operate without local storage as a starting point.

    IP stack
    REQ_ID:FR08

    All endpoints must be reachable by IPv4 & IPv6. Many X1 Devices are IPv6 only which means they cannot connect directly to any service that does not have an IPv6 address. Any services your App may use, including those used to monetize your advertising inventory, must be able to communicate with the X1 App Platform through both IPv6 & IPv4.

    HTTPS
    REQ_ID:FR09

    HTTPS for all connections (including those related to data and content delivery).

    Web standards
    REQ_ID:FR10

    Your App should follow W3C standards, see www.w3.org for more info

    Deep linking
    REQ_ID:FR11

    Your App must support deep linking via the Lifecycle navigateTo event.

    Screen saver
    REQ_ID:FR12

    Your App must develop its own App screen saver that deploys within 15 minutes of inactivity. The screen saver must not deploy during active video playback.

    Search
    REQ_ID:FR13

    The search results should match the search query. The asset selected from the search should play successfully.

    User Story

    As a user, I want to be able to search within the App so that I can find what I’m looking for.

    Acceptance Criteria
    GIVEN I have entered the minimum number of search characters within the App, WHEN the search is submitted THEN the correct asset list should be returned for the searched characters.

    GIVEN I select a title from the returned asset list, WHEN I select the play option, THEN the asset should play successfully.

    Error messaging
    REQ_ID:FR14

    When error messages are displayed, they are clearly displayed in the user's preferred language or local language. The error message must also include information on what the issue is and what the solution is.

    User Story

    As a user, I want to be provided with helpful error messages, so that in the event of a problem I understand the issue and know the solution (if applicable).

    Acceptance Criteria
    GIVEN there is an issue (I.e. network disconnected), WHEN I navigate the App, THEN I will see an error message with clear information on what the issue is and what the solution is (if applicable)

    GIVEN there is an issue, WHEN an error message is displayed, THEN it will be displayed in my local language.

    GIVEN there is an issue, WHEN an error message is displayed, THEN it will present an error code.

    Notes
    List of error codes and meanings must be made available to distributors prior to launch.

    Max no. of devices per account
    REQ_ID:FR15

    Users must be presented with a message indicating the maximum number of devices has been reached and advised of action to take in order to use your App on their current device.

    User Story

    As a user, I want to be informed when I have reached my maximum numbers of devices for my account, so that I understand what my options are.

    Acceptance Criteria
    GIVEN I have launched the App under the same account on the maximum number of devices WHEN I launch the App on an additional device under the same account THEN I must be presented with a message indicating that the maximum number of devices has been reached and advised of action I must take in order to use the App on the current device

    GIVEN I am simultaneously streaming within the App under the same account on the maximum number of devices WHEN I try to stream within the App on an additional device under the same account THEN I must be presented with a message indicating that the maximum number of devices has been reached and advised of action I must take in order to stream within the App on the current device

    DIAL
    REQ_ID:FR16

    If DIAL is supported, then the App must launch, play the asset, and then push the App to the device using the cast function on the user's mobile/tablet device.

    User Story

    As a user I want to be able to launch App on the SoIP device by using the cast function from the App on my mobile/tablet device.

    Pre-requisite
    Launch the App on a companion mobile device, play an asset and then push the App to the device using DIAL protocol.

    Acceptance Criteria
    GIVEN I have launched the App on the device WHEN I select to push the App to the device THEN the asset must start playing on the device.

    GIVEN I have not launched the App on the device WHEN I select to push the App to the device THEN the App must load on the device and the asset must start playing without further interaction required

    App features
    REQ_ID:FR17

    All available functionalities within the App are working correctly.

    This is only applicable for apps in the UK: Test teams must be provided with the full list of feature functionality in the App.

    The Certification process will confirm the full functionality of these features and we would expect to resolve any issue with a feature that does not work prior to launch, based on discussions with us.

    Button mapping
    REQ_ID:FR18

    Button mapping must not deviate from the X1 App Platform button map guide unless a rare exception is made with the X1 App Platform. It must remain intuitive to avoid user confusion.

    Audio/Video quality requirements

    Item

    Requirement

    Quality
    REQ_ID:AV01

    • UI resolution must be a minimum of 1080p.
    • Video resolution must have capability of 1080p and use adaptive bitrate (ABR).
    • Audio bitrate on asset playback must be a minimum of 96Kbit/s.
    • The asset quality selected must play in the stated format (HD, UHD, HDR, etc)

    User Story

    As a user, I want the App to meet certain minimum requirements for quality so that I can enjoy the best experience in the App.

    Pre-requisite
    Launch the App on a companion mobile device, play an asset and then push the App to the device using DIAL protocol.

    Acceptance Criteria
    User Interface
    GIVEN I have launched the App WHEN I am navigating the UI THEN the UI resolution must be a minimum of 1080p

    Video Content
    GIVEN I have launched the App WHEN I have started playback THEN the video resolution must have capability of 1080p and use an adaptive bitrate (ABR)

    Audio Content
    GIVEN I have launched the App WHEN I have started playback THEN the minimum audio bitrate must be 96 Kbit/s

    Video playback
    GIVEN I have launched the App WHEN I have started playback THEN HD/UHD/HDR assets must play successfully in the stated format

    Screen resolution
    REQ_ID:AV02

    Your App must support rendering at both 720p and 1080p screen resolutions.

    Dolby Digital+ and Dolby Audio
    REQ_ID:AV03

    Your App must provide the best audio format when it exists and must not restrict this. If your App has Atmos Audio (or Dolby Digital+), it must be made available on the device.

    User Story

    As a user, I want audio to play in Dolby Atmos, Dolby Digital+ or Dolby Digital Audio when available so that I can enjoy the best experience in the App.

    The App must provide the best audio format when it exists and must not restrict this. If the App has Atmos Audio (or Dolby Digital+), it must be made available on the X1 App Platform.

    Acceptance Criteria
    GIVEN I have set Dolby Digital+ in Settings and my audio device does support Dolby Atmos WHEN I select content available in Dolby Atmos THEN the content must play in Dolby Atmos

    GIVEN I have set Dolby Digital+ in Settings and my audio device does not support Dolby Atmos but does support Dolby Digital+ WHEN I select content available in Dolby Atmos THEN the content must play in Dolby Digital+

    GIVEN I have set Dolby Digital+ in Settings WHEN I select content available in Dolby Digital+ THEN the content must play in Dolby Digital+

    GIVEN I have set Dolby Digital in Settings WHEN I select content available in Dolby Atmos, Dolby Digital+ or Dolby Digital THEN the content must play in Dolby Digital

    Notes
    A user can set their digital audio preference in the X1 App Platform UI by navigating to Settings>Setup>Audio visual> Digital audio output HDMI and selecting Normal, Dolby Digital or Dolby Digital+

    A user who sets Dolby Digital+ in their HDMI audio output settings, who is not connected to a Dolby Atmos or Dolby Digital+ compatible audio system, may hear no audio

    Standard playback
    REQ_ID:AV04

    There must not be any AV issues on playbable assets including advertisements.

    User Story

    As a user, I want content including ads to be played with no issues, so that I can enjoy playback without unnecessary interruption to my experience.

    Acceptance Criteria
    GIVEN I am playing video within the App WHEN content commences playing THEN there must be no AV issues experienced

    GIVEN I am playing video within the App WHEN an advert commences playing THEN there must be no AV issues experienced

    GIVEN I am playing video within the App WHEN a streaming interruption is caused due to a technical or network connectivity related issue, graceful handling of the interruption to playback is expected.

    Playback issues
    REQ_ID:AV05

    If there is a streaming interuption due to technical or network connectivity, your App must gracefully handle the interruption and resume playback as expected.

    Extended playback
    REQ_ID:AV06

    There may not be any playback issues when playing videos for an extended period of time.

    User Story

    As a user, I want to be able to play video for long periods of time (10+ hours) without issue, so that my experience is not interrupted.

    Acceptance Criteria
    • GIVEN I am playing video within the App WHEN the playback time exceeds 10 hours THEN the audio must continue to play back without issue
    • GIVEN the user is playing video within the App WHEN the playback time exceeds 10 hours THEN the video must continue to play back without issue

    Sign In | authentication requirements

    Item

    Requirement

    Sign-in via pairing code or DIAL (via Casting)
    REQ_ID:AR01

    Customers with existing sign-in credentials should be able to sign-in successfully using a pairing code or casting from an alternative device.

    User Story

    As a user that has existing App credentials, I want to sign in to App via pairing code using a browser on an alternative device or to cast from the App on a mobile or tablet device or use a QR code to speed up the sign in flow.

    Acceptance Criteria
    GIVEN I have launched the App WHEN I am required to sign-in THEN I must be given the option to sign-in via a PIN-pairing journey.

    This must be a friendly URL in the form partnerweb.com/subpage and be no longer than 30 characters.

    It must have search engine optimization to cater for users who enter it in their search bar.

    OR

    GIVEN I have launched the App WHEN I am required to sign-in THEN I must be presented with instructions for logging in via DIAL.

    OR

    GIVEN I have launched the App WHEN I am required to sign-in THEN I must be given the option to sign-in via a QR Code journey

    We recommend the QR code deep-link passes the PIN-pairing code in the pay load directly.

    Sign-in via keyboard
    REQ_ID:AR02

    Users must be given the ability to enter their credentials (e.g. email address and password) using an on-screen keyboard.

    User Story

    As a user that has existing App credentials, I want to the ability to sign in to App via on-screen keyboard, so that I don’t have to switch devices.

    I.e.: the App should provide two sign-in methods.

    Acceptance Criteria
    GIVEN I have launched the App WHEN I am required to sign-in THEN I must be given the ability to enter my credentials (e.g. email address and password) via an on-screen keyboard.

    App Sign-in response: Success & Fail
    REQ_ID:AR03

    The app should successfully sign in quickly, or present a relevant invalid response.

    User Story

    As a user, I want sign-in to be quick, so that I can start browsing and accessing content as soon as possible.

    Acceptance Criteria
    GIVEN the user has entered in valid sign-in credentials within the App, WHEN they select sign-in, THEN the App must sign the user in within 1 second.

    GIVEN the user has entered in invalid sign-in credentials within the App, WHEN they select sign-in, THEN the App must not sign the user in and display a relevant error message (e.g. "username / password not recognised") within 1 second.

    GIVEN the user has entered in a valid PIN Pair Code on a browser WHEN they select pair on that browser THEN the App must sign the user within 1 second on the device.

    GIVEN the user has scanned a QR code on a mobile then entered valid credentials WHEN they select sign-in THEN the App must sign the user within 1 second on the device.

    Notes
    This requirement does not depend on whether the user has subscribed to the App via the X1 App Platform or directly with the App partner themselves.

    Deep-linking requirements

    The X1 App Platform uses key intents when deep-links are selected from the X1 App Platform experience and passed to an App to determine the right behavior for the user. Below are the intents used on the X1 App Platform:

    • The Entity intent goes to an entity or Show page. When a user has yet to engage with a show, we pass the entity intent.

    • The Playback intent goes straight into the playback of the selected asset. When a user has engaged with a single asset or episode from a series, we pass the Playback intent for that asset.

    Item

    Requirement

    Direct playback deep linking from cold start
    REQ_ID:DL01

    When your App is in the unloaded state and a user selects to watch content from a show center or a content tile, then your App needs to load first before the content starts playing.

    When a user selects a deep-link and your App has loaded, then the user should be placed in the correct place within your App.

    User Story

    As a new user, when I select a specific piece of App content from the X1 App Platform UI, I want to access that piece of content within the App, so that I can start watching the content I desired.

    Pre-requisite
    •I'm signed in if applicable
    • Metadata ingested or editorial direct playback deep-links are being used (Playback Intent)

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App is in the unloaded state, WHEN I select the Watch button from the App content show center or the App content tile if direct playback deep-links have been used or via DIAL, THEN the App will need to load first before the content starts playing
    • GIVEN I have selected the deep-link and the App has loaded, the user will be placed in the correct place in the App

    Show page deep-linking from cold start
    REQ_ID:DL02

    When your App is in the unloaded state, and a user selects your App content tile, then your App needs to load first before your App content show page displays (within your App).

    User Story

    As a new user, when I select a specific piece of App content from the X1 App Platform UI, I want to access that piece of content within the App, so that I can start watching the content I desired.

    Pre-requisite
    • I'm signed in if applicable
    • Editorial show page deep-link used or Watch action from ingested metadata (Entity Intent)

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App is in the unloaded state, WHEN I select the App content tile, THEN the App will need to load first before the App content show page displays (within the App)

    Notes
    For Apps we ingest metadata the only instance where this might be possible is if we have not ingested metadata for a particular title yet but we still want to merchandise it.

    Direct playback deep-linking from Inactive state
    REQ_ID:DL03

    When your App is in the inactive state, and a user selects the 'watch' button from your App titles show center or your App content tile, then your App needs to start full screen playing. Your app should not reload.

    User Story

    As a user, when I am in an App and dismiss out of the App via the back button to the X1 App Platform UI, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    The App must support Firebolt® Lifecycle States (see requirements REQ_ID:QS01-REQ_ID:QS07)
    • I'm signed in if applicable
    • The App is in Inactive state
    • Metadata ingested or editorial direct playback deep-links are being used (Playback Intent)

    Acceptance Criteria
    GIVEN I am within the X1 App Platform UI and the App is in the inactive state WHEN I select the watch button from an App titles show center or the App content tile if direct playback deep-links have been scheduled or via DIAL, THEN the App will be made visible in full screen and the title will start playing; the App does not reload.

    Show page deep-linking from Inactive state
    REQ_ID:DL04

    When your App is in the inactive state, and a user selects your App's content tile, then your App needs to full-screen display the show page within your App. Your app should not reload.

    User Story

    As a user, when I am in an App and dismiss out of the App via the back button to the X1 App Platform UI, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    • App must support Firebolt® Lifecycle States (see requirements REQ_ID:QS01-REQ_ID:QS07)
    • I'm signed in if applicable
    • The App is in Inactive state
    • Editorial show page deep-link used or Watch action from ingested metadata (Entity Intent)

    Acceptance Criteria
    GIVEN I am within the X1 App Platform UI and the App is in the inactive state WHEN I select the App content tile, THEN the App content show page displays in full screen within the App; the App does not reload.

    Direct playback deep-linking from Background Active state (mini-tv)
    REQ_ID:DL05

    When your App is in the Background Active state and the 'watch' button is selected from your App's show center or content tile, then your App must be made visible in full screen and start playing the selected content.

    User Story

    As a user, when I am in an App in mini-tv, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    • I'm signed in if applicable
    • The App is in Background Active state (mini-tv)
    • Metadata ingested or editorial direct playback deep-links are being used (Playback Intent)

    Acceptance Criteria
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App supports Firebolt® Lifecycle States WHEN I select the watch button from an titles show center or the App content tile if direct playback deep-links have been scheduled or via DIAL, THEN the App will be made visible in full screen and the title will start playing; the App does not reload.
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App does not support Firebolt® Lifecycle States WHEN I select the watch button from an App's titles show center or the App content tile if direct playback deep-links have been scheduled or via DIAL, THEN the App will be made visible in full screen and the title will start playing; the App will re-load first.

    Show page deep-linking from Background Active state (mini-tv)
    REQ_ID:DL06

    When your App is in the Background Active state and the user selects your App content tile, then your App content displays in full screen.

    User Story

    As a user, when I am in an App in mini-tv, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    • I'm signed in if applicable
    • The App is in Background Active state (mini-tv)
    • Editorial show page deep-link used or Watch action from ingested metadata (Entity Intent)

    Acceptance Criteria
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App supports Firebolt® Lifecycle States WHEN I select the App content tile, THEN the App content in-App show page displays in full screen; the App does not reload.
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App does not support Firebolt® Lifecycle States WHEN I select the App content tile, THEN the App content in-App show page displays in full screen; the App will re-load first.

    Direct playback deep-linking from Foreground Active state
    REQ_ID:DL07

    When your App is in Foreground Active state and the user selects your App content tile, then your App content will remain in full screen and the content will start playing.

    User Story

    As a user, when I am in an App in Foreground Active state, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    • I'm signed in if applicable
    • The App is in Foreground Active state (full screen)
    • Metadata ingested or editorial direct playback deep-links are being used (Playback Intent)

    Acceptance Criteria
    • GIVEN I am within the X1 App Platform UI with the App in Foreground Active state and the App supports Firebolt® Lifecycle States WHEN I select an App content tile to play via DIAL or via voice, THEN the App will be remain visible in full screen and the title will start playing; the App does not reload.
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App does not support Firebolt® Lifecycle States WHEN I select an App content tile to play via DIAL or via voice, THEN the App will be made visible in full screen and the title will start playing; the App will re-load first.

    Show page deep-linking from Foreground Active state
    REQ_ID:DL08

    When your app is in the Foreground Active state and the user uses voice search for an App title, then your App will display the App content in-App in full screen.

    User Story

    As a user, when I am in an App in full screen, I want to be able to access back into the App from where I left off so that I can continue my journey within the App.

    Pre-requisites
    • I'm signed in if applicable
    • The App is in Foreground Active state (full screen)
    • Editorial show page deep-link used or Watch action from ingested metadata (Entity Intent)

    Acceptance Criteria
    • GIVEN I am within the X1 App Platform UI with the App in Foreground Active state and the App supports Firebolt® Lifecycle States WHEN I voice search for an App title, THEN the App content in-App show page displays in full screen; the App does not reload
    • GIVEN I am within the X1 App Platform UI with the App in Foreground Active state and the App does not support Firebolt® Lifecycle States WHEN I voice search for an App title, THEN the App content in-App show page displays in full screen; the App will re-load first

    App Launch
    REQ_ID:DL09

    When a user selects your App's launch point, then your App should load and the intended screen should become visible.

    User Story

    As a user, when I am in the X1 App Platform UI, I want to be able to select the App launch point so I can browse the App and/or engage with content in the App.

    Pre-requisites
    • The App is available on the X1 device
    • I'm signed in if applicable

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App is in the unloaded state, WHEN I select the App tile, THEN the App must load before displaying the in App Homepage.
    • GIVEN I am within the X1 App Platform UI and the App is in the inactive state and the supports Firebolt® Lifecycle States WHEN I select the App tile THEN the App will be made visible in full screen and the homepage will show; the App does not reload.
    • GIVEN I am within the X1 App Platform UI with the App in Background Active state and the App supports Firebolt® Lifecycle States WHEN I select the App launch tile THEN the App will be made visible in full screen; the App does not reload.
    • GIVEN I am within the X1 App Platform UI with the App in Foreground Active state and the App supports Firebolt® Lifecycle States WHEN I voice search for the same App, THEN the App remains displays in full screen; the App does not reload.

    Trickplay behavior requirements

    Item

    Requirement

    Play
    REQ_ID:TP01

    Your content should play or resume as expected when the user selects to play content. This includes playing from the content tile, fast-forwarding / rewinding content, or when the content is paused.

    User Story

    As a user, I want to be able to forward or rewind so that I can control my playback in the App consistently.

    Prerequisite
    The user is watching content in the App – applicable to FFWD/RW-able adverts as well.

    Acceptance Criteria
    GIVEN I am watching content and it is paused, WHEN I play content, THEN the content must play within 0.5 seconds.

    GIVEN I am on a content tile in the App UI, WHEN I press play, THEN the content must play within 2 seconds.

    GIVEN I am on a content tile or on pause, WHEN I press play. THEN the video content and audio content must play in-sync.

    GIVEN I am fast forwarding/rewinding content, WHEN I play/resume content, THEN the content must play within 2 seconds.

    Pause
    REQ_ID:TP02

    Your content should pause when the user selects to pause content. This includes pausing while watching, fast forwarding, or rewinding content.

    User Story

    As a user, I want to be able to forward or rewind so that I can control my playback in the App consistently.

    Prerequisite
    The user is watching content in the App – applicable to FFWD/RW-able adverts as well.

    Acceptance Criteria
    GIVEN I am watching content, WHEN I pause content, THEN the content must be paused within 0.5 seconds.

    GIVEN I am fast forwarding/rewinding content, WHEN I pause content, THEN the content must be paused within 2 seconds.

    Fast-forward
    REQ_ID:TP03

    Your content should fast-forward when the user selects to fast-forward content and present a visual indication of timeline progress. This includes increasing speed while fast forwarding (x2, x6, x12, and x30).

    User Story

    As a user, I want to be able to forward or rewind so that I can control my playback in the App consistently.

    Prerequisite
    The user is watching content in the App – applicable to FFWD/RW-able adverts as well.

    Acceptance Criteria
    GIVEN I am watching content, WHEN I fast-forward content, THEN the content must fast-forward within 0.5 seconds.

    GIVEN I am watching content, WHEN I fast-forward content, THEN the content must fast-forward at the following multiple speeds x2, x6, x12, x30.

    GIVEN I am watching content, WHEN I fast-forward content, THEN fast forward should be enabled on one button click (either single press or held down)

    GIVEN I am watching content, WHEN fast-forward content, THEN I should get a visual indication of progress in time via the Player UI elements

    GIVEN I am watching content, WHEN I fast-forward content, THEN trickplay UI elements should display until the user aborts FFWD

    Rewind
    REQ_ID:TP04

    Your content should rewind when the user selects to rewind content and present a visual indication of timeline progress. This includes increasing speed while rewinding (x2, x6, x12, and x30).

    User Story

    As a user, I want to be able to forward or rewind so that I can control my playback in the App consistently.

    Prerequisite
    The user is watching content in the App – applicable to FFWD/RW-able adverts as well.

    Acceptance Criteria
    GIVEN I am watching content, WHEN I rewind content, THEN the content must rewind within 0.5 seconds.

    GIVEN I am watching content, WHEN I rewind content, THEN the content must rewind at the following multiple speeds x2, x6, x12, x30.

    GIVEN I am watching content, WHEN I rewind content, THEN rewind should be enabled on one button click (either single press or held down)

    GIVEN I am watching content, WHEN I rewind content, THEN I should get a visual indication of progress in time via the Player UI elements

    GIVEN I am watching content, WHEN I fast-forward content, THEN trickplay UI elements should display until the user aborts FFWD

    Scrubbing
    REQ_ID:TP05

    When a user presses and holds the left or right button, a visual audio/video selector must slide across a visual timeline within the player UI of your App.

    User Story

    As a user, I want to be able to scrub forward or backwards so that I can control my playback.

    Prerequisite
    The user is watching content in the App – applicable to FFWD/RW-able adverts as well.

    Acceptance Criteria
    When navigating within a piece of video or audio to a specific time, for example forwarding from position 00:00 to 3:00

    GIVEN I am watching content, WHEN I press and hold the left or right button I should be able to move the audio or video selector to a specific time.

    GIVEN I am watching content, WHEN I move the audio track or video selector to a specific time, THEN the content must move to that point within 2 seconds.

    GIVEN I am watching content, WHEN I move the audio track or video selector to a specific time, THEN I should get a visual indication of progress in time via the Player UI elements

    GIVEN I am watching content, WHEN I move the audio track or video selector to a specific time, THEN trickplay UI elements should display until the user aborts scrubbing

    Playback requirements

    Item

    Requirement

    Initiating Playback from the Show Center UI - Hero zone
    REQ_ID:PB01

    Your app content should play and resume as expected from the content tile, fast-forwarding / rewinding content, or when content was previously paused.

    User Story

    As a user, when I press select the watch call to action on a piece of content from the Show Page UI (hero zone), I want the to load that piece of content, so that I can start watching it.

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App does not require the user to sign-in to view content, WHEN I have selected a piece of content to play from the X1 App Platform UI Show Center that has a resume point (UI Example: Continue -> Playback Intent), THEN the App must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
    • GIVEN I am in the X1 App Platform UI and the App does not require the user to sign-in to view content, WHEN I have selected a piece of content to play from the X1 App Platform UI Show Center that does not have a resume point (UI Example: Watch action -> Entity Intent), THEN the App must load and take me to the show page
    • GIVEN I am in the X1 App Platform UI and I am signed into an App where sign-in is required to view content WHEN have selected a piece of content to play from the X1 App Platform UI Show Center that has a resume point (UI Example: Continue -> Playback Intent), THEN the App must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
    • GIVEN I am in the X1 App Platform UI and I am signed into an App where sign-in is required to view content WHEN have selected a piece of content to play from the X1 App Platform UI Show Center that does not have a resume point (UI Example: Watch action -> Entity Intent), THEN the App must load and take me to the show page
    • GIVEN I am in the X1 App Platform UI and I am not signed into an App where sign-in is required to view content, WHEN have selected a piece of content to play from the X1 App Platform UI Show Center, that has a resume point (UI Example: Continue -> Playback Intent), THEN the App must load, and I must be presented with the sign-in screen. Once signed-in the content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey.
    • GIVEN I am in the X1 App Platform UI and I am not signed into an App where sign-in is required to view content, WHEN have selected a piece of content to play from the X1 App Platform UI Show Center, that does not have a resume point (UI Example: Watch action -> Entity Intent) THEN the App must load, and I must be presented with the sign-in screen. Once signed-in the App must take me to the show page.

    Notes
    Requires both metadata integration and consumption data integration.

    Initiating Playback from the Show Center UI - Available Now zone
    REQ_ID:PB02

    Your App content should load and play the correct episode when the user presses 'Play' on a specific piece of content in the Show Center UI.

    User Story

    As a user, when I browse down the X1 App Platform UI Show Center to the ‘Available Now’ zone & press ‘Play’ on a specific piece of content, I want the App to load that specific piece of content, so that I can start watching it.

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App does not require the user to sign-in to view content, WHEN I have selected an episode to play from the X1 App Platform UI Show Center ‘Available Now’ zone, THEN the App must load the correct episode and the content must start playing. There must be no information screens or interstitials that require user interaction. (UI Example: Specific asset selection -> Playback Intent)
    • GIVEN I am in the X1 App Platform UI and I am signed into an App where sign-in is required to view content WHEN have selected an episode to play from the X1 App Platform UI Show Center ‘Available Now’ zone, THEN the App must load the correct episode and the content must start playing. There must be no information screens or interstitials that require user interaction. (Specific asset selection -> Playback Intent)
    • GIVEN I am in the X1 App Platform UI and I am not signed into an where sign-in is required to view content, WHEN have selected an episode to play from the X1 App Platform UI Show Center ‘‘Available Now’ zone, THEN the App must load, and I must be presented with the sign-in screen. Once signed-in the correct episode / content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey. (UI Example: Specific asset selection -> Playback Intent)

    Notes
    Requires both metadata integration. Without metadata integration, the X1 App Platform will not be able to include your App in the X1 App Platform UI Show Center.

    Initiating Playback a merchandised title (via show page)
    REQ_ID:PB03

    When a user selects a piece of merchandised App content, then the X1 App Platform UI should display the correct editorialized App content within the UI show page.

    User Story

    Initiating Playback from an X1 App Platform show page (no consumption data)
    REQ_ID:PB04

    The CTA must say 'Watch' within the hero zone if the user has not yet watched any content from your App.

    User Story


    Pre-requisite
    User has landed on the show page for an App which they have not engaged with and there is no resume point

    Acceptance Criteria
    • GIVEN the user hasn’t started to watch any content for this particular App, WHEN the user is on the hero zone THEN the CTA button will say ‘Watch’ (UI Example: Watch action -> Entity Intent).
    • GIVEN the user selected ‘Watch’ (UI Example: Watch action -> Entity Intent) from the Hero zone WHEN the App is launched THEN the user will be directed to content show page within the App

    Initiating Playback from an X1 App Platform show page (consumption data available)
    REQ_ID:PB05

    The CTA must say 'Continue' within the hero zone if the user had previously started watching content from your App. The 'Continue' action must be based on the resume point of the content.

    User Story


    Pre-requisite
    User has landed on the show page for an which they do have a resume point and have started to engage with.

    Acceptance Criteria
    • GIVEN the user has started to watch any content for this particular App on the X1 App Platform AND the App has provided consumption data, WHEN the user is on the hero zone THEN the CTA button will display a Continue action based on the resume point (UI Example: Continue -> Playback Intent)
    • GIVEN the user selects the continue watching resume point (UI Example: Continue -> Playback Intent) WHEN the App is launched THEN the user will be directed to content playback within the App.

    Resuming playback from X1 App Platform UI
    REQ_ID:PB06

    Your app content should display the correct piece of content or episode in the X1 App Platform's Continue Watching rail or Show Page.

    User Story

    As a user, when I surface a piece of content from within the App in the X1 App Platform UI (either via a Continue Watching rail or from a Show Page), I want the X1 App Platform UI to surface the current episode I’m watching or the next episode to play (UI Example: Continue -> Playback Intent).

    Pre-requisite
    • GIVEN I am in the X1 App Platform UI AND I have part-watched an episode from a series in the App WHEN I surface a Show page that series AND the App has provided resume points THEN the X1 App Platform UI will be able to indicate to me the part-watched episode to view, the amount watched and allow me to continue watching.
    • GIVEN I am in the X1 App Platform UI AND I have fully watched an episode from a series in the App WHEN I surface a Show Page for that series AND the App has provided resume points THEN the X1 App Platform UI will be able to indicate to me the next episode to view and allow me to continue watching.
    • GIVEN I am in the X1 App Platform UI AND I have part-watched a show in the App AND the App has provided resume points WHEN I browse a Continue Watching rail THEN the X1 App Platform UI will able to indicate to me the part-watched episode to view, the amount watched and allow me to continue watching.
    • GIVEN I am in the X1 App Platform UI AND the App has provided resume points WHEN I browse a Continue Watching rail THEN the X1 App Platform UI will be able to indicate to me the next episode to view and allow me to continue watching.
    • GIVEN I am in the X1 App Platform UI, WHEN I resume playback of a piece of App content I had been watching THEN the App must playback from where the user has most recently left off.

    Notes
    Resuming playback requires the App to have integrated both metadata and consumption data.

    Initiating Playback from the X1 App Platform UI - Play Now / Continue Watching
    REQ_ID:PB07

    Your app content should play the correct piece of content or episode from the X1 App Platform's Continue Watching or Play Now rail without additional user action when the user presses 'Play'.

    User Story

    As a user, when I select ‘Play’ on a piece of content from the “Play Now”/ “Continue Watching” rail I want the App to load and the content to start playing straightaway without any information screens and without the need for further button presses. (UI Example: Continue -> Playback Intent)

    Acceptance Criteria
    • GIVEN I am in the X1 App Platform UI and the App does not require the user to sign-in to view content, WHEN I have selected a piece of content to play from the “Play now” / “Continue Watching” rail (Playback Intent), THEN the App must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
    • GIVEN I am in the X1 App Platform UI and I am signed into an App where sign-in is required to view content WHEN have selected a piece of content to play from the “Play now” / “Continue Watching” rail (Playback Intent), THEN the App must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
    • GIVEN I am in the X1 App Platform UI and I am not signed into an where sign-in is required to view content, WHEN have selected a pieceof content to play from the “Play now” / “Continue Watching” rail (Playback Intent), THEN the App must load, and I must be presented with the sign-in screen. Once signed-in the content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey.

    Notes
    • Requires both metadata integration and consumption data integration.
    • The App loading time is subject to the App Load Times requirements [REQ_ID:OR01] . Where the content is subject to pre-roll advertising, idents, etc. the playing of these assets will fulfil this requirement.

    UI Examples

    Watch action -> Entity Intent


    Show page displaying Hero Zone.
    watch-entity.png

    Continue Action -> Playback Intent


    Show page displaying Hero Zone
    continueplayback.png

    Example of a merchandised tile.
    cont-watching-1.png

    Example of a show page once merchandised tile is clicked. User has started to watch content.
    cont-watching-2.png

    If 'Watch' is selected on X1 App Platform show page, the show is begins content playback.
    cont-watching-3.png

    Available Now


    Example of Show page displaying "Available Now" tab.
    continueplayback.png

    Interacting with tab allows users to scroll through series & episodes as well as choose alternative ways to watch. Selecting an episode will initiate playback in the App. (Playback entity)
    continueplayback.png

    Example of Show page displaying Available now tab with content partially watched.
    continueplayback.png

    Continue Watching


    Example of Show page displaying "Continue Watching" tab with content partially watched.
    continueplayback.png

    Ad break requirements

    Item

    Requirement

    Trickplay during advertisements
    REQ_ID:AB01

    If a user initiates FFWD, RWD, scrub, or skip during an ad break, then your App must present a notification indicating which functions are unavailable during the ad break.

    User Story

    Applies to Users in an ad break

    Acceptance Criteria
    GIVEN a user has initiated FFWD, RWD, scrub and/or Skip in an ad break, THEN:
    - The App must gracefully handle on-screen notifications for non-functioning trickplay options.
    -Black screens, error screens or other visible transitions/ inconsistencies should not be presented at any point using trickplay between ads and content playback
    - Trickplay UI elements displayed should be consistent with the user interface for trickplay during content
    - User should get a visual indication of progress (time) for ads via the Player UI elements (e.g., a timeline, countdown clock or an equivalent)

    GIVEN that a user has not attempted trickplay / attempted to control playback in any way, THEN the Ad Trickplay UI should not be invoked.

    Notes
    This is to avoid the Trickplay UI displaying at the start of every ad-break in normal viewing mode and impacting the viewing experience.

    Visual timeline
    REQ_ID:AB02

    When the user attempts to initiate trickplay, a visual timeline within the player's UI elements must be presented to indicate the progress for ads.

    Transitions
    REQ_ID:AB03

    Black screens, error screens, or other visible transitions/ inconsistencies should not be presented at any point using trickplay between ads and content playback

    Dismiss button requirements

    Item

    Requirement

    Note

    App exit behavior
    REQ_ID:DB01

    When a user is on your App's homepage and the dismiss button is pressed, then your App must exit and return the user back to the same point they launched your App from within the X1 App Platform UI. Confirmation dialogues are not permitted for this action.

    User Story

    As a user, I want the App to exit quickly so that I can get back to the X1 App Platform UI.

    Acceptance Criteria
    GIVEN I am on the App homepage, WHEN I press "Dismiss", THEN the App must exit back to the distribution X1 App Platform's UI.
    GIVEN I am within an App, WHEN I press “Dismiss” THEN the App must exit hierarchically back through via the App homepage and then dismiss back into the X1 App Platform's UI.
    – A confirmation dialogue on App exit is not permitted.
    – On exit, the current UI behavior will place the user back to the same point at which they launched the App
    – If the hierarchical back is not the best solution, then historical back can be used on the basis that:
    – Dismissing no more than 3 times will return back to the X1 App Platform's UI.
    – On the dismiss journey, the App should exit via a show page and the in-App homepage.

    Some remotes have a back button instead of dismiss, the same requirement applies to the back button on these remotes.

    Dismiss button during playback
    REQ_ID:DB02

    If on-screen UI is visible, the dismiss button first applies to going back to full-screen playback.

    User Story

    As a user, I want the App to be intuitive when dismissing during playback.

    Acceptance Criteria
    GIVEN I am within the App during playback of content, AND the trickplay bar is open WHEN I press "Dismiss", THEN the App should close the trickplay bar.
    GIVEN I am within the during playback of content AND the trickplay bar is closed WHEN I press ”Dismiss’, THEN the App should follow Ending Content during playback requirements below.


    GIVEN I am within the App during playback of content AND the user is trickplaying content WHEN I press “Dismiss”, THEN the App content should stop trickplaying.


    Some remotes have a back button instead of dismiss, the same requirement applies to the back button on these remotes.

    Ending content during playback
    REQ_ID:DB03

    When a user is watching content, no on-screen UI is present, and the dismiss button is pressed, then your App must take the user to the in-App showpage for that show. Confirmation dialogues are not permitted for this action.

    User Story

    As a user, I want the App to stop playback quickly.

    Acceptance Criteria
    GIVEN I am in the App watching content, WHEN I press "Dismiss", THEN the App must stop playback and take me to the in App Showpage for that show.

    Some remotes have a back button instead of dismiss, the same requirement applies to the back button on these remotes.

    Remote capability
    REQ_ID:DB04

    A confirmation dialogue on App playback ending is not permitted. Your App should respond as expected when interacting with supported remotes (including touch dish and touch remotes)

    Accessibility requirements

    Item

    Requirement

    Accessibility
    REQ_ID:AC01

    Your App must meet WCAG AAA compliance standards as well as the legal requirements for closed captioning, see Accessibility documentation for more info.

    Audio description
    REQ_ID:AC02

    While watching video content, users must be able to turn on available audio description using the audio description menu. The audio description feature must be turned on/off respectively and activate immediately in the video playback.

    User Story

    As a user I expect all video content within the App to have audio description where available.

    Acceptance Criteria
    GIVEN I am watching video content within the App WHEN I navigate to the audio description menu THEN I should be able to turn on audio description and have it immediately activated in the video playback.

    GIVEN I am watching video content within the App WHEN I navigate to the subtitles menu THEN I should be able to turn off audio description and have it immediately deactivated in the video playback.

    Closed Captions / Subtitles
    REQ_ID:AC03

    While watching video content, users must be able to turn on available closed captions / subtitles using the subtitle menu. The closed captions and subtitles must be turned on/off respectively and activate immediately in the video playback.

    User Story

    As a user, I expect all video content within the App to have closed captions / subtitles where available.

    Acceptance Criteria
    GIVEN I am watching video content within the App WHEN I navigate to the subtitles menu THEN I should be able to turn on closed captions / subtitles and have them immediately activated in the video playback.

    GIVEN I am watching video content within the App WHEN I navigate to the subtitles menu THEN I should be able to turn off closed captions / subtitles and have them immediately deactivated in the video playback.

    Localization requirements

    Item

    Requirement

    Price listing
    REQ_ID:LR01

    All pricing must display in the user's local currency.

    User Story

    As a user, I expect to see any prices displayed in my local currency.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays any prices THEN those prices should appear in the local currency.

    Language
    REQ_ID:LR02

    All text including error messages, on-screen keyboard, and navigation must be displayed in the official language of the user's territory unless the user has changed their preferred language settings.

    User Story

    As a user I expect to see an App appear in my local language.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays any text (including branding, error messages and on-screen keyboards) THEN the text must be displayed the official language of Territory (or any other indigenous language as appropriate).

    Notes
    Where an App is designed to serve the audience of a specific language other than the official language then this should be flagged to the distributor.

    Localized advertising
    REQ_ID:LR03

    All advertising displayed must be localized and relevant to the user.

    User Story

    As a user, I expect to see advertising relevant to my territory.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays any advertising THEN the advertising must be localised and relevant to users in Territory.

    Localized content
    REQ_ID:LR04

    Content displayed within the App must be relevant to the user and users must not be able to view content outside of their regional licensing.

    User Story

    As a user, I expect to see the relevant content to my region or territory.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays content THEN the content must be relevant to users in Territory.

    GIVEN I am using the App WHEN the App displays content THEN the content must be relevant to users in that region.

    Audio Language
    REQ_ID:LR05

    The content audio must default to the local language or the preferred language set by the user.

    User Story

    As a user, when I am in playback, I expect the app audio to default to my local language.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays content THEN the audio must be the official language of Territory.

    Localization content error
    REQ_ID:LR06

    Users must be given an error message when trying to view content restricted by their territory.

    User Story

    As a user, I expect to see a relevant error message if I try to view content that is not available in my country or territory.

    Acceptance Criteria
    GIVEN I am using the App in Territory WHEN the App displays content that is not available in my region/territory THEN the App must display a user friendly error message.

    E.g.: I am in Scotland, but trying to play content only available in England. The App should notify me that the content isn't available in my region.

    Notes
    If you have a regional App with shared content on another regional App, we recommend showing an error message explaining how to view selected content in the other App.

    Parental safety requirements

    Item

    Requirement

    App for everyone
    REQ_ID:PS01

    If your App is accessible to children, then content within it should be appropriate or have the option to filter out or PIN protect adult content.

    User Story

    As a parent, I want a mechanism to protect against age rated content, so that my child does not watch inappropriate content.

    Acceptance Criteria
    GIVEN that children are one of the target audiences of an App WHEN using the App THEN the content within the App must be appropriate for children.
    GIVEN that the App contains contents adult content WHEN using the App THEN there must be an option to filter out or PIN protect this content.

    Notes
    • In this context “Adult Content” means material that contains images of a sexual nature and/or strong language.
    • There is the option to Block or require a PIN for specific Apps (as chosen by the user) in the settings menu of the distributor UI
    • Should your App be accessible to children and/or contain kids content, it must have a protection mechanism such as PIN or content filters to protect younger audiences from accessing unsuitable content (which may be additional content beyond the “Adult Content” described above). It is also desirable to have profiles so users can keep their content separated. In addition, there should be other features such as a Walled Garden, which either requires a PIN to exit or a confirmation when trying to exit from the kid’s area of the App.
    • Should your App be targeted towards children (e.g. YouTube Kids), there must only be content suitable for children.
    • (COPPA), E.U. General Data Protection Regulation (GDPR), and any other applicable laws or regulations.
    • For apps in the US, user profiles for Kids should only be created by the parent, as per COPPA (Children's Online Privacy Protection Rule)

    Apps for kids
    REQ_ID:PS02

    If your App is targeted towards children, then all content must be suitable for children.

    Advertising
    REQ_ID:PS03

    • If your App is aimed towards children or users of unknown age, then all advertisements displayed on your App must only contain content that is appropriate for children.
    • All advertisements must also comply with all legal regulations and industry standards related to advertising to children.

    User Story

    As a parent, I want a mechanism to protect against inappropriate content.

    Acceptance Criteria
    GIVEN the App contains advertising aimed at children or to users of an unknown age WHEN an advertisement is shown within the App THEN the advertisement displayed must only contain content that is appropriate for children.

    GIVEN the App contains advertising aimed at children or to users of an unknown age WHEN an advertisement is shown within the App THEN the advertisement displayed must comply with all applicable legal regulations and industry standards relating to advertising to children.

    Data collection
    REQ_ID:PS04

    If your App collects personal information from children (including APIs and SDKs), then the user must be aware of such data collection.

    User Story

    As a parent, I want an awareness of data collection within the App

    Acceptance Criteria
    GIVEN the App collects any personal information from children, including through APIs and SDKs WHEN I, as a parent, am using the App THEN I must be made aware of such data collection.

    Explicit filtering
    REQ_ID:PS05

    If your App has music or audio content that is tagged as 'explicit', then your App must provide a tool for a user to filter out explicit content.

    Note: Ideally, a user should be able to configure this filter within your App on the X1 App Platform, however, a global setting via an off-platform website or mobile device will suffice.

    User Story

    As a parent, I want a mechanism to protect against explicit content, so that my child does not watch inappropriate content.

    Acceptance Criteria
    GIVEN that the user is in a music / audio App or any App that has any content tagged as ‘explicit’ (e.g. Fitness apps) THEN the App must provide a tool to filter out explicit content.

    Notes
    Ideally, the user should be able configure this filter within the . Alternatively, a global setting will suffice I.e. through a website or mobile that applies to all devices.

    Parental PIN
    REQ_ID:PS06

    It is important that your App only allows authorized users to make purchases or watch mature content. When the device's Parental PIN setting is active, then your App should adhere to it and trigger a Parental PIN prompt when inappropriate content is accessed or a purchase is attempted. See the Parental Controls documentation for additional information regarding Content Ratings Approvals & Purchase Approvals.

    Youth protection
    REQ_ID:PS07

    This is only applicable for apps in Germany & Austria: Your App must meet German Youth Protection regulations by having an approved Youth Protection Program.

    User Story

    As a parent, I want a mechanism to protect against age rated content, so that my child does not watch inappropriate content.

    Acceptance Criteria
    GIVEN that the content is visible on the screen WHEN the user focuses on the content tile THEN there should be a visible age rating on screen.

    GIVEN the user is on a content showpage (e.g. for TV shows or Movies) THEN there should be a visible age rating for the relevant episode or movie title in the hero zone.

    Notes
    DE apps must meet German Youth Protection regulations by having an approved Youth Protection Programme. For any content that is merchandised, an age rating must be visible on screen which should be provided through metadata ingest. If not ingested, then this should be part of the editorial process.

    Legal requirements

    Item

    Requirement

    Terms & Conditions
    REQ_ID:LR01

    The Terms & Conditions must be available and relevant for each user's territory. Terms & Conditions can be a single T&Cs covering all applicable territories or can be territory-specific.

    User Story

    As a user, I expect to be able to see the Terms & Conditions for the App.

    Notes
    If you are providing a link to the T&Cs then this link must be maintained at all times while the App is available.

    Where an App is being provided to multiple territories, there must be T&Cs available that are relevant for each territory (either as single T&Cs covering all applicable territories or specific T&Cs for each).Details

    Privacy Policy
    REQ_ID:LR02

    The Privacy Policy needs to describe, at a minimum, data collection and use of data. It must be available and relevant for each user's territory. The Privacy Policy can be a single Privacy Policy covering all applicable territories, or can be territory-specific.

    User Story

    As a user, I expect to be able to see the Privacy Policy for the . Notes The Privacy Policy needs to describe, amongst other things, the apps data collection and use of data. If you are providing a link to the Privacy Policy then this link must be maintained at all times while the App is available. Where an App is being provided to multiple territories, there must be a Privacy Policy available that are relevant for each territory (either as a single Privacy Policy covering all applicable territories or specific Privacy Policies for each). Details

    Impressum
    REQ_ID:LR03

    This is only applicable for users in Germany. Your App must contain the full text of Impressum indicating who is responsible for the content displayed. A user must be able to access the Impressum within 2 clicks of your App's landing page.

    User Story

    As a user in Germany, I must be able to see who is responsible for the content shown within the App.

    Acceptance Criteria
    GIVEN that I am using the in Germany WHEN I launch the THEN the must contain the Impressum which indicates who is responsible for the content shown on a website or within 2 clicks of the landing page. The text must be provided in full.



    Notes


    An Impressum is the term given to a legally mandated statement of the ownership and authorship of a document, which must be included in books, newspapers, magazines and websites published in Germany and certain other German-speaking countries, such as Austria and Switzerland.

    Open Source Software
    REQ_ID:LR04

    If your App uses open source software, then your App must contain the Open Source software license information.

    User Story

    As a user, if an App uses any source code licensed under Free/Open Source Software licenses I must be able to view the relevant licenses within the App.

    Acceptance Criteria
    GIVEN that I am using an App that uses open source software WHEN I use the App THEN the App must contain the open source software license information.

    Player compatibility

    These are the supported formats for multimedia content on all X1 App Platform-compliant devices. The devices will not be able to play incompatible content.

    Feature

    Supported Formats

    DRM

    Playready 2.5 &
    Widevine 1.16 Service level 1

    Audio codecs

    mpeg, eac3, & mp3

    Video codecs

    AC3, E-AC3, MPEG1, MP3, AAC, & LPCM

    Search and discovery integration

    In order to have your App's content fully surfaced in aggregated experiences, Firebolt® Search and Discovery APIs must be integrated.

    Feature

    Description

    Full Specifications

    Enables your App's content to have a deeper and more prominent exposure in search and discovery experiences.

    Deep Linking

    Enables your App to be launched or brought to the foreground with a specific entity, search, player, or other section already loaded.

    Voice Commands

    Allows your users to speak to their remotes to navigate, search, and control their experience via voice.

    User Story

    As a user, I want to be able to launch the app using my voice so that I can access the app quickly.

    Acceptance Criteria
    GIVEN that the user has pressed the voice input on the remote WHEN they say “App”, “launch App”, "Open App", "Start App" among others (as per other apps) THEN the App application shall launch.

    App UI requirements

    Item

    Requirement

    App Synopsis
    REQ_ID:UI01

    You must have a clear description of your App up to 180 characters long.

    User Story

    As a user, I want a synopsis for an App, so that I understand what the App is and what content it offers.

    Acceptance Criteria
    Given the user is browsing the X1 App Platform UI, WHEN they navigate to the App launch point and the App synopsis is visible, the synopsis must be fully visible.

    Notes
    • We recommend up to 180 characters but can go up to a maximum of 200 pending review on the X1 App Platform.
    • See image guidelines for additional asset specifications.

    Sample image

    art5.png

    Content Synopsis
    REQ_ID:UI02

    You must have a clear description of your content up to 200 characters long. This appears alongside the the content hero image.

    Sample image

    art8.png

    App artwork requirements

    Please view the Art Guidelines documentation for more information on each asset type.

    Asset Type

    Ratio

    Resolution

    Format

    Mode

    File Size Limit

    App: tile small

    1:1

    260 x 260

    .jpg, .png, .ai, .svg

    RGB

    500k

    App: tile medium

    1:1

    800 x 800

    .jpg

    RGB

    500k

    App: tile large

    16:9

    1920 x 1080

    .jpg

    RGB

    500k

    App: tile extra large

    1:1

    3840 x 3840

    .jpg, .png, .ai, .svg

    RGB

    500k

    App: tile alternate

    107:69

    214 x 138

    .jpg, .png, .ai, .svg

    RGB

    500k

    App: background hero

    16:9

    1920 x 1080

    .jpg

    RGB

    500k

    App: title art

    1800:1013

    1800 x 1013

    Transparent .png, .ai, or .svg

    RGB

    500k

    Content: background hero

    16:9

    1920 x 1080

    .jpg

    RGB

    -

    Content: brand logo

    1:1

    2000 x 2000

    Transparent .png, .ai, or .svg

    RGB

    -

    Content: landscape show

    16:9

    1920 x 1080

    .jpg

    RGB

    500k

    Content: landscape episode

    16:9

    1920 x 1080

    .jpg

    RGB

    500k

    Content: portrait

    3:4

    600 x 800

    .jpg

    RGB

    500k

    Firebolt® Lifecycle requirements

    Firebolt® Lifecycle State Definitions

    State

    Description

    Unloaded or not running

    Application is not running or loaded in memory.

    Inactive

    Application is loaded but it not visible, does not receive any input events and cannot play any A/V content. It is considered to be in a low resource state and so should free any unrequired memory (e.g. A/V buffers) and minimize network and CPU usage (e.g. by disabling or reducing frequency of any timers, disabling any animations and closing any Web Sockets). If the app has been used within 60 seconds, where the user was must remain. If more than 60 seconds has passed, the app should transition to the in app homepage. This supports fast transitions into the Active state.

    Foreground Active

    Application is visible full screen, receives input events and can play A/V content.

    Background Active

    Application is visible and can play A/V content, but it will not receive input events except for Play/Pause commands. These commands apply when the mini-tv is in or out of focus. This happens in the switcher rail

    Quick start feature requirements

    Item

    Requirement

    Foreground Active to Background Active (when pressing 'home' on remote)
    REQ_ID:QS01

    Your app must transition from the Foreground Active state to the Background Active state appropriately without issue when the user presses 'home' on the remote.

    User Story


    Acceptance Criteria
    • Pressing home on the remote will bring the X1 App Platform UI into the foreground and moves the App into the Background Active state.
    • The App will be visible in the mini-tv (currently playing tile)
    • The App will remain in the Background Active state until user either plays a content from another provider or selects the App via App launch point, App content tile or the mini-TV itself which transitions the App back into full screen (Foreground Active)
    • Currently, when the App is in the Background Active state, the App will not be able to receive trickplay commands from the remote except for Play/Pause commands. These commands apply when the mini-tv is in or out of focus.
    Notes
    This transition does not require the App to support Firebolt® Lifecycle states; this is a platform level capability.

    Background Active to Foreground Active
    REQ_ID:QS02

    Your app must transition from the Background Active state to the Foreground Active state appropriately without issue.

    User Story


    Acceptance Criteria
    • Pressing select when the mini-tv is in focus will navigate to full screen for the App and therefore place it back into the Foreground Active state from the Background Active state.
    • The App can also move from the Background Active to Foreground Active state if the user selects a piece of content from the particular App when browsing the X1 App Platform UI. The App will be brought into the foreground either immediately into playback or onto the show-page, depending on the deep-link type. The App should not relaunch.
    • If the App has been placed in the Background Active state without any A/V content playing, then navigation will be to the point in the App's UI in full screen.
    • If the App has been placed in the Background Active state with A/V content playing or paused, then the App will continue with the same piece of content playing or paused in full screen when moved back to Foreground Active state.

    Notes
    This transition does not require the App to support Firebolt® Lifecycle states; this is a platform level capability.

    Background Active to Inactive
    REQ_ID:QS03

    Your app must transition from the Background Active state to the Inactive state appropriately without issue.

    User Story

    Pre-requisite
    The app must support the applicable Firebolt® Lifecycle states.

    Acceptance Criteria
    • When the App is in the Background Active state, and the user selects a different piece of content (e.g. – ingested VOD, a different App), then the App will be moved to the Inactive state.
    • The App should immediately stop any A/V content playing and free up resources to enter the low resource Inactive state.

    Inactive to Foreground Active (Quick start launch)
    REQ_ID:QS04

    Your app must transition from the Inactive state to the Foreground Active state appropriately without issue.

    User Story

    Pre-requisite


    The app must support the applicable Firebolt® Lifecycle states.



    Acceptance Criteria


    • GIVEN I am using a SoIP device connected to a controlled network speed of 20mbps, WHEN I launch the App from an Inactive state, THEN the App UI must load within 1 second.


    • If the App had transitioned into the Inactive state from an Active state within the last 60 seconds, the App must reopen at the same place within the App UI that the user was in previously. The exception is if the App is being launched via a deep link, in which case it will transition to Foreground Active to the content playback or showpage the link relates to.


    • If the App supports in-App profiles, then the App should keep the same profile logged in.


    • If the App had transitioned into the Inactive state from an Active state after 60 seconds, the App must transition to the App homepage.


    • If the App supports in-App profiles, then the App should take you to a Profile Selection screen. The exception is if the App is being launched via a deep link, in which case it should transition to Foreground Active to the content playback or showpage the link relates to, using the most recently used app profile.

    Unloaded to Foreground Active (cold start launch)
    REQ_ID:QS05

    Your app must transition from the Inactive state to the Foreground Active state appropriately without issue.

    User Story

    Acceptance Criteria


    • GIVEN I am using a SoIP device connected to a controlled network speed of 20mbps, WHEN I launch the App from a cold start (I.e. it is in Unloaded state), THEN the App UI must load within 10 seconds.



    Note


    The App does not need to have integrated with Firebolt® Lifecycle States to support this transition.

    Foreground Active to Inactive (when pressing 'dismiss' on remote)
    REQ_ID:QS06

    Your app must transition from the Foreground Active state to the Inactive state appropriately without issue when the user presses 'dismiss' on the remote.

    User Story

    Pre-requisite


    The app must support the applicable Firebolt® Lifecycle states.



    Acceptance Criteria


    • When I exit out of the App using the 'dismiss' button on the remote, the App should stop playing any A/V content, the X1 App Platform UI will be brought into the foreground, and place the App into the inactive state.


    • The App shall remain in the same place within the App UI for 60 seconds before transitioning the App's home page.


    • After 60 seconds, the App must revert to the in-App homepage



    There are two methods of exiting the App and placing it into the Inactive state from the Foreground Active state:


    1. Pressing ‘dismiss’ on the remote.


    2. Launching content that exists outside of the App via voice command or DIAL.



    Note


    Pressing the ‘dismiss’ button on the remote will exit the App, placing it into the Inactive state. Pressing ‘home’ on the remote does not exit the App completely, despite the App not being in the foreground. This instead places the App into the Background Active state (see Foreground to Background Active transition REQ_ID:QS01).

    Full System Reboot
    REQ_ID:QS07

    Pre-requisite
    The app must support the applicable Firebolt® Lifecycle states.

    Requirement
    Your app must begin in the Inactive state after a reboot if your App was the last App launched prior to the reboot. Your app must also follow the same acceptance criteria as the ‘inactive to foreground’ (REQ_ID:QS04) transition.

    If your App requires authentication, and the user has successfully authenticated prior to a full system reboot, the user must remain authenticated so that the next time your App is launched they can access your App without being asked to sign-in again.

    App Crash from Active Foreground / Background
    REQ_ID:QS08

    Pre-requisites
    • Your app must support the applicable Firebolt® Lifecycle states.
    • Your App must be able to detect an App crash.

    Requirement
    If your App is in an Active Foreground/Background state and detects a crash, then your App should issue a lifecycle.close() with reason as Error. The App should launch from a cold start state when it launches next (see REQ_ID:QS05 for cold start launch requirements).

    UK only:
    Glance mode while App is in Foreground Active
    REQ_ID:QS09

    If your App has been running with no activity from the user after 3 minutes while in the Foreground Active state, then Glance mode should not trigger.

    UK only:
    Glance mode while App is in Unloaded, Inactive, or Background Active
    REQ_ID:QS10

    If your App has been running with no activity from the user after 3 minutes while in the Unloaded, Inactive or Background Active state, then Glance mode should trigger.

    Germany/Italy (DE/IT) only:
    Lifecycle on XiOne (DE & IT) devices
    REQ_ID:QS11

    If your app is on a XiOne device (DE/IT), then the lifecycle behavior must match the requirements outlined in REQ_ID:QS04-07, & REQ_ID:Q08. However, the following changes will apply:
    1. There will be no Background Active state. The states for Q will either be Unloaded, Active, or Inactive.
    2. There is no Switcher rail in the UI.

    Lifecycle requirements REQ_ID:QS01-REQ_ID:QS03 will not apply to these devices.

    Required API Implementations

    API

    Description

    Lifecycle.ready()

    • A minimum requirement for your App to function, run, and be considered a Firebolt® App
    • Required to dismiss loading screen
    • Automatically fire Metrics.ready()
    • A component of the Time To Minimally Useable (TTMU) SLA metrics

    Lifecycle.close()

    • A minimum requirement for your App to function, run, and be considered a Firebolt® App
    • Does not terminate the App session immediately
    • Only inform OS that the App is ready to be closed
    • App to listen to the OS unloading event
    • Clear listeners
    • Send Lifecycle.finished() for OS to close the App

    Parameter.initialization()

    • A minimum requirement for your App to function, run, and be considered a Firebolt® App
    • Required for deeplinking and App launch
    • Payload includes ad tracking and privacy opt-in/out flags

    Metrics.error()

    • A minimum requirement for all Apps on the X1 App Platform
    • A component of the Error Free Session Rate (EFSR) and Errors Per Content Minute (EPCM) SLA metrics
    • Sharing the list of errors and troubleshooting guidelines with the X1 App Platform, would help with testing and production support

    Metrics.startContent()

    • A minimum requirement for all Apps on the X1 App Platform
    • A component of the Errors Per Content Minute (EPCM) SLA metrics

    Metrics.stopContent()

    • A minimum requirement for all Apps on the X1 App Platform
    • A component of the Errors Per Content Minute (EPCM) SLA metrics

    Note:
    • The Firebolt® metrics calls startContent() and stopContent() are not expected to capture every pause/unpause. The these API's are designed to estimate how much time a user is spending consuming content in the App (vs how much time is spend navigating/browsing an App). While an asset is paused, the media is still considered as being consumed.
    •For capturing pause/unpause, use mediaPlay() and mediaPause() which are to specifically count the actual playback interactions a user takes within an App.*

    Manage App while in Inactive state

    • Inactive state currently only supported on Xumo TV (formerly XClass TV) and to be expanded to other device in the future

    App to:
    • Stop playback and clear player instance
    • Stop UI loading
    • Reduce memory footprint to around 200Mb

    Integration requirements

    The following requirements are only required if your App uses the specific integrations.

    Kids section

    Item

    Requirement

    Option 1a: Launching straight into a kids profile
    REQ_ID:KS01

    Your App should open kid section deep links within kid profiles.

    User Story


    As a user I want to ensure that the kids section is a safe place for my kids to browse without being able to access inappropriate content through third party apps.



    Pre-requisite


    • SOIP


    • The user is browsing the kids super section the X1 App Platform


    • The user launches an app either via a deep link to kids content or from the Apps rail


    • Kids profiles should only include content rated 0 or 6



    Acceptance Criteria


    When kids profiles have been created previously:


    • GIVEN I am launching an app via a deep link from the kids section and have previously created a kids profile in the App WHEN the app launches THEN I should be taken straight to the show page (from no resume point)/ playback (from a resume point) within a kids profile that I have already created.


    • GIVEN I am launching an app via a deep link from the kids section and have previously created multiple kids profiles in the App THEN I should be taken to the app profile screen to choose which profile I should watch from.



    When no kids profiles have been created:


    • GIVEN I am launching an app via a deep link from the kids section WHEN the app launches THEN I should be taken straight to the show page (from no resume point)/ playback (from a resume point) within a default kids profile


    Example flows


    Launching an App via a deep-link, into Kids profile with no profile set up:


    kidflowA1.png


    Launching an App via a deep-link, into Kids profile with multiple profiles:


    kidflowA2.png


    Launching an App via a direct app launch, into Kids profile with no profile set up:


    kidflowA3.png


    Launching an App via a direct app launch, into Kids profile with multiple profiles:


    kidflowA4.png

    Option 1b: Changing profiles
    REQ_ID:KS02

    Your App should present a form of parental control before accessing an adult profile.

    User Story


    As a user I want to ensure that the kids section is a safe place for my kids to browse without being able to access inappropriate content through third party apps.



    Pre-requisite


    •SOIP


    • The user launches an App either via a deep link to kids content or from the Apps rail


    • The user tries to change profile from within the App


    • Kids profiles should only include content rated 0 or 6



    Acceptance Criteria


    GIVEN that I’ve launched the App directly into a kids profile via the X1 App Platform Kids section WHEN I go to change profiles from within the App THEN I should have a form of parental controls challenges (e.g. pin challenge), before I can access an adult profile.


    Option 2a: Launching via profile screen
    REQ_ID:KS03

    Your App should open kid section deep links within kid profiles.

    User Story


    As a user I want to ensure that the kids section is a safe place for my kids to browse without being able to access inappropriate content through third party apps.



    Pre-requisite


    • SOIP


    • The user is browsing the kids super section the X1 App Platform


    • The user launches an app either via a deep link to kids content or from the Apps rail


    • Kids profiles should only include content rated 0 or 6



    Acceptance Criteria


    When kids profiles have been created previously:


    • GIVEN I am launching an app via a deep link from the kids section and have previously created a kids profile in the App WHEN the app launches THEN I should be taken straight to the show page (from no resume point)/ playback (from a resume point) within a kids profile that I have already created.


    • GIVEN I am launching an App via a deep link from the kids section and have previously created multiple kids profiles in the App THEN I should be taken to the app profile screen to choose which profile I should watch from.



    When no kids profiles have been created:


    • GIVEN I am launching an app via a deep link from the kids section WHEN the App launches THEN I should be taken straight to the show page (from no resume point)/ playback (from a resume point) within a default kids profile


    Example flows


    Launching an App via a deep-link, profile screen before playback:


    kidflowA5.png


    Launching an app via a direct App launch, profile screen before playback:


    kidflowA6.png


    Option 2b: Launching via profile screen while App is in Background Active mode
    REQ_ID:KS04

    Your App should take the user to the app profile screen or return to the kids profile when selecting a deep link from a kids section while the app is in Background Active mode.

    User Story


    As a user I want to ensure that the kids section is a safe place for my kids to browse without being able to access inappropriate content through third party apps.



    Pre-requisite


    • SOIP


    • The user is browsing the kids super section of the X1 App Platform


    • The app is already in Background Active mode (see Firebolt® Lifecycle States Requirements) from previous browsing


    • The user launches an app either via a deep link to kids content or from the Apps rail



    Acceptance Criteria


    GIVEN I've left the app in Background Active mode as I browse the UI WHEN I select a deep-link for the same App from the kids section THEN I should either be taken to the app profile screen to choose which profile I should watch from OR I should be returned back to the Kids profile section.


    Partner page

    The partner page relies on the use of RSS feeds. For more information on integrating partner page RSS feeds visit the Partner Page RSS documentation.

    Item

    Requirement

    Partner Page – Featured Rail
    REQ_ID:PP01

    You must dictate which content should be displayed in your App's 'featured rail' within the X1 App Platform's Partner page UI.

    User Story


    As a user, I want to see an area dedicated to the content from a particular partner App.



    Pre-requisite


    • Partner has provided valid RSS feed


    • The App metadata for each content asset in the feed, must have already been ingested.



    Acceptance Criteria


    • GIVEN I am on the X1 App Platform UI WHEN I go to a partner page THEN content in the featured rail should appear and deep-link into the App content


    • GIVEN I am on the partner page WHEN I click on a content tile in the Featured rail THEN the App should launch to the correct content deep-link



    Notes


    • Content to be displayed in featured rail, is for the partner to dictate.


    • Should avoid duplication with most popular rail.


    • Currently, only individual content assets (shows) can appear in the rail

    Partner page example


    partnerpage.png

    Partner Page – Most Popular Rail
    REQ_ID:PP02

    You must dictate which content should be displayed in your App's 'most popular rail' within the X1 App Platform's Partner page UI.

    User Story


    As a user, I want to see an area dedicated to the content from a particular partner App.



    Pre-requisite


    • Partner has provided valid RSS feed


    • The App metadata for each content asset in the feed, must have been already ingested.



    Acceptance Criteria


    • GIVEN I am on the X1 App Platform UI WHEN I go to a partner page THEN content in the most popular rail should appear and deep-link into the App content


    • GIVEN I am on the partner page WHEN I click on a content tile in the most popular rail THEN the App should launch to the correct content deep-link.



    Notes


    • Content to be displayed in most popular rail is for the partner to dictate.


    • Should avoid duplication with featured rail.


    • Currently, only individual content assets (shows) can appear in the rail.

    Advertising

    Item

    Requirement

    Fast forwarding / scrubbing within an advertising break (ad break)
    REQ_ID:AT01

    Users should be able to fast forward and scrub through ad breaks and resume playback as expected.

    User Story


    Pre-requisite


    • User is in content.



    Acceptance Criteria


    GIVEN that a user has initiated FFWD and/or scrub forward in an ad break, THEN:


    • the user should be taken through that ad break at an accelerated speed that matches up to the maximum FFWD and/or scrub forward speed supported by the player (minimum requirements listed below)


    • the FFWD should persist, at the same speed, until the end of the ad-break or the user aborts FFWD.


    • When FFWD through the ad-break completes, playback should resume in content with no black screens


    • the FFWD should not pause or be interrupted by buffering or other visible transitions/ inconsistencies



    GIVEN that a user has initiated FFWD and/or scrub forward in an ad break, WHEN the user play/resumes while in the ad break, THEN:


    • playback of ad break should resume at 1x speed,


    • playback should resume at an advanced position in the ad break that represents the progress the user made through FFWD.


    • playback should NOT reset to the start of the ad-break


    • there should be no abrupt changes in the UI or visual indicators that could confuse the user when switching back to normal playback (e.g., no large jumps in playhead position or countdown timer)



    The player should support the same FFWD and/or Scrub Forward Requirements across content and ad breaks:


    FFWD Experience


    • GIVEN I am watching an ad break, WHEN I fast-forward, THEN the ad-break must fast-forward within 0.5 seconds.


    • GIVEN I am watching an ad break, WHEN I fast-forward, THEN the ad break must fast-forward at the following multiple speeds x2, x6, x12, x30. (mirroring previous trickplay requirements).



    Scrubbing Experience


    • GIVEN I am watching an ad break, WHEN I move the audio track or video selector to a specific time, THEN the content must move to that point within 2 seconds.



    Notes


    • The ‘Ad Fast Forward Tier’ is indicated via Firebolt® Policy method within skipRestriction object.


    • “none” is the equivalent for fast forward/scrubbing being allowed across content and ad breaks

    Rewinding / scrubbing within an ad break
    REQ_ID:AT02

    Users should be able to rewind and scrub through ad breaks and resume playback as expected.

    User Story


    Pre-requisite


    • User is in content.



    Acceptance Criteria


    GIVEN that a user has initiated FFWD and/or scrub forward in content, WHEN the player comes across an ad break THEN:


    • The FFWD should persist, at the same speed, across content and the ad break and back into content, or until the user aborts F FWD


    • The FFWD should not pause or be interrupted by ad breaks


    • The FFWD should not pause or be interrupted by buffering or other visible transitions/ inconsistencies



    The player should support the same FFWD and/or Scrub Forward Requirement’s across content and ad breaks:


    FFWD Experience


    • GIVEN I am watching content, WHEN I fast-forward, THEN content and ad break(s) must fast-forward within 0.5 seconds.


    • GIVEN I am watching content, WHEN I fast-forward, THEN content and ad break(s) must fast-forward at the following multiple speeds x2, x6, x12, x30. (mirroring previous trickplay requirements).



    Scrubbing Experience


    • GIVEN I am watching content, WHEN I move the audio track or video selector to a specific time, THEN the content must move to that point within 2 seconds.



    Notes


    • The ‘Ad Fast Forward Tier’ is indicated via Firebolt® Policy method within skipRestriction object.


    • “none” is the equivalent for fast forward/scrubbing being allowed across content and ad breaks

    Fast forwarding / scrubbing initiated in content and continues across mid-rolls
    REQ_ID:AT03

    Users should be able to fast forward and scrub through ad breaks and resume playback as expected across mid-rolls.

    User Story


    Pre-requisite


    • User is in content.



    Acceptance Criteria


    GIVEN that a user has initiated rewind and/or scrub back in an ad break, THEN:


    • The user should be taken through that ad break at an accelerated speed that matches up to the maximum rewind speed and/or scr ub back speed supported by the player.


    • Rewind should persist, at the same speed, until the end of the ad-break or the user aborts rewind.


    • When rewinding through the ad-break has completed, playback in content should resume


    • Rewind should not pause or be interrupted by buffering or other visible transitions/ inconsistencies



    GIVEN that a user has initiated rewind and/or scrub back in an ad break, WHEN the user aborts rewind / hits play while in the ad break, THEN:


    • playback of ad break should resume at 1x speed,


    • playback should resume at an earlier position in the ad break that represents the progress the user made through rewinding d. there should be no abrupt changes in the UI or visual indicators that could confuse the user when switching back to normal playback (e.g., no large jumps in playhead position of countdown timer)



    The player should support the same rewind KPI’s across content and ad breaks:


    Rewind Experience


    • GIVEN I am watching an ad break, WHEN I rewind, THEN the ad break must rewind within 0.5 seconds


    • GIVEN I am watching an ad break, WHEN I rewind, THEN the ad break must rewind at the following multiple speeds x2, x6, x12, x30. (mirroring trickplay requirements).



    Scrubbing Experience


    • GIVEN I am watching an ad break, when I move the audio track or video selector to a specific time, THEN the content must move to that point within 2 seconds.



    Notes


    • The ‘Ad Fast Forward Tier’ is indicated via Firebolt® Policy method within skipRestriction object.


    • “none” is the equivalent for fast forward/scrubbing being allowed across content and ad breaks

    Rewinding initiated in content and continues across mid-rolls
    REQ_ID:AT04

    Users should be able to rewind and scrub through ad breaks and resume playback as expected across mid-rolls.

    User Story


    Pre-requisite


    • User is in content.



    Acceptance Criteria


    GIVEN that a user has initiated rewind and/or scrub back in content, THEN:


    • Rewind should persist, at the same speed, across content and the ad break and back into content, or until the user aborts Rewind


    • Rewind should not pause or be interrupted by ad breaks


    • Rewind should not pause or be interrupted by buffering or other visible transitions/ inconsistencies



    The player should support the same rewind requirements across content and ad breaks:


    Rewind Experience


    • GIVEN I am watching content, WHEN I rewind, THEN content and ad break(s) must rewind within 0.5 second.


    • GIVEN I am watching content, WHEN I rewind, THEN content and ad break(s) must rewind at the following multiple speeds x2, x6, x12, x30. (mirroring previous trickplay requirements).



    Scrubbing Experience


    • GIVEN I am watching content, WHEN I move the audio track or video selector to a specific time, THEN the content must move to that point within 2 seconds.



    Notes


    • The ‘Ad Fast Forward Tier’ is indicated via Firebolt® policy method within skipRestriction object.


    • “none” is the equivalent for rewind/scrubbing being allowed across content and ad breaks

    Ad Trickplay UI / Visual Cues
    REQ_ID:AT05

    Users should be presented with black screens, error screens, or any visible transitions when resuming from fast forward, rewind, or scrub state.

    User Story


    Acceptance Criteria


    • GIVEN a user has initiated FFWD, rewind and/or scrub in an ad break, THEN:


    a. black screens, error screens or other visible transitions/ inconsistencies should not be presented at any point during the FFWD, rewind, or scrub journey


    b. Trickplay UI elements displayed should be consistent with the user interface for trickplay during content


    c. Trickplay UI elements should display until the user aborts FFWD or rewind.


    d. User should get a visual indication of progress in time via the Player UI elements, preferably with a countdown of time left in the ad-break and an updated timeline.



    • GIVEN a user has initiated FFWD, rewind and/or scrub in an ad break, WHEN the user play/resumes while in the ad break, THEN Play/Resume should not display black screens, error screens or other visible transitions/ inconsistencies


    • GIVEN that a user has not attempted trickplay / attempted to control playback in any way, THEN the Ad Trickplay UI should not be invoked


    a. Note: This is to avoid the Trickplay UI displaying at the start of every ad-break in normal viewing mode and impacting the viewing experience.


    Advert Quality
    REQ_ID:AT06

    Advertisements should be in HD (high definition).

    Exiting playback session after ad-break
    REQ_ID:AT07

    User should be returned to playback at the same point they left without ad-breaks when resuming.

    User Story


    Pre-requisite


    • User has fully watched an ad-break (Pre/Mid/Post roll) to 100% at 1x speed


    • User has started watching content in App.



    Acceptance Criteria


    • WHEN the user exits the playback session AND THEN resumes playback (via Continue Watching / Selecting the same episode) THEN the user must return to playback at the exact same point they left AND no ad-break is served on resume.


    Exiting playback session during ad-break
    REQ_ID:AT08

    Playback must resume from the start of the ad-break when users exit playback session and then resumes playback.

    User Story


    Pre-requisite


    • User is in an ad-break (Pre/Mid/Post roll).



    Acceptance Criteria


    • WHEN the user exits the playback session AND THEN resumes playback (via Continue Watching / Selecting the same episode) THEN playback resumes from the start of the ad-break again.


    Separate Premium Ad Skip Experience supersedes Ad Tier entitlement
    REQ_ID:AT09

    Users with entitlements to skip advertisements should have the ability to Trickplay ads.

    User Story


    Pre-requisite


    • User is subscribed to the X1 App Platform over IP, and thus has a ‘Ad Tier’ or ‘Ad Fast Forward Tier’ entitlement assigned by the X1 App Platform


    • User currently pays for an separate premium ad-skip / ad fast forwarding experience with the App itself, that is not part of an X1 App Platform entitlement.



    Acceptance Criteria


    • GIVEN that a user has initiated playback in App, And the user is subscribed to the X1 App Platform 'Ad Fast Forward Tier' THEN the user should be able to Trickplay Ads (FFWD, Scrub Ahead/back, Rewind Ads, Pause/Play) in the App.


    • GIVEN that a user has initiated playback in App, And the user is subscribed to the X1 App Platform 'Ad Tier’ AND the user currently pays for a separate premium ad-skip / ad fast-forwarding experience with the App itself THEN the user should be able to Trickplay Ads (FFWD, Scrub Ahead/back, Rewind Ads, Pause/Play) in the App.


    • Pause, Play, Rewind and Scrub Back actions must never be suppressed irrespective of Ad Tier entitlement.


    Ad Trickplay Experience must match a user's Ad Tier entitlement
    REQ_ID:AT10

    The ability to Trickplay ads should reflect the user's Ad Tier entitlement.

    User Story


    Pre-requisite


    • User is subscribed to the X1 App Platform over IP, and thus has a ‘Ad Tier’ or ‘Ad Fast Forward Tier’ entitlement assigned by the X1 App Platform


    • User does not currently pay for a separate premium ad-skip / ad fast forwarding experience with the App itself, that is independent of a X1 App Platform entitlement.



    Acceptance Criteria


    • GIVEN that a user has initiated playback in App, And the user is subscribed to the X1 App Platform 'Ad Fast Forward Tier' THEN the user should be able to Trickplay Ads (FFWD, Scrub Ahead/back, Rewind Ads, Pause/Play) in the App.


    • GIVEN that a user has initiated playback in App, And the user is subscribed to the X1 App Platform 'Ad Tier' THEN the Fast Forward, and Scrub Ahead trickplay actions must be suppressed during Ad-breaks (subject to “Relax Viewing” requirement below ) AND playback of the Ad-break must continue at 1x Speed.


    • Pause, Play, Rewind and Scrub Back actions must never be suppressed irrespective of Ad Tier entitlement.


    No Trickplay restrictions during content playback
    REQ_ID:AT11

    Trickplay should not be restricted over primary content playback.

    User Story


    Pre-requisite


    • User is subscribed to 'Ad Tier'.


    • User is watching primary content.



    Acceptance Criteria


    • Trick-play (FFWD / Rewind / high-speed scrub) should not be restricted over primary content playback.


    • Trick-play should only be restricted over ad-break content.


    Ad Markers for Non-FFWD
    REQ_ID:AT12

    Ad markers should display in the playback bar and appear in the exact point which the Ad-break begins.

    User Story


    Pre-requisite


    • User is subscribed to the ‘Ad Tier’ and has initiated playback in App.



    Acceptance Criteria


    • Ad markers should display in the seek bar / trickplay bar


    • The Ad marker should appear at the precise point in playback ( in trickplay bar) where the Ad-break begins.


    Notes


    Ad Markers are spots/markings on the trickplay bar / seek bar that signal the presence of an ad break where trickplay is disabled.

    "Relax View" for subsequent views of Ad-breaks
    REQ_ID:AT13

    Users should be able to use trickplay on ads which have been previously viewed fully at 1x speed.

    User Story


    Pre-requisite


    • User is subscribed to the 'Ad Tier' (i.e. Tier where Trickplay is suppressed on Ads)


    • User has already viewed an ad break in full.



    Acceptance Criteria


    • GIVEN a user has fully watched an ad-break (Pre/Mid/Post roll) to 100% at 1x speed WHEN the user returns to the same ad-break position (by rewinding / scrubbing back to that position), THEN trickplay will not be restricted for this subsequent view SO THAT the user will be able to FFWD / high-speed scrub during this ad break on subsequent views.


    UI Notifications for Trickplay supression
    REQ_ID:AT14

    There should be a visible notification to indicate when Trickplay is not available and the user has attempted to use Trickplay.

    User Story


    Pre-requisite


    • User is subscribed to the 'Ad Tier' where Trickplay on Ads is suppressed


    • User is watching an Ad-break that he/she has not watched before (so Relax View is not in effect and the ad-break is not FFWD’able).



    Acceptance Criteria


    WHEN the user attempts to Trickplay (FFWD / high-speed scrub) out of this Ad-break, THEN:


    • Trickplay (FFWD / high-speed scrub) should be suppressed and playback of the Ad-break must continue at 1x Speed


    • A visual notification should display to the user, informing the user that Trickplay is suppressed, that playback will resume after the ad-break finishes, and how much time is left in the ad-break


    • Notification should auto-dismiss so that it is not always on the screen.


    High Speed scrub (jump) past multiple mid-rolls
    REQ_ID:AT15

    Users must be presented with only the nearest mid-roll Ad-break position before resuming content from the jump/scrub point.

    User Story


    Pre-requisite


    • User has started watching content in App


    • The Content has 2 or more Mid-roll ad-breaks that the user has not yet viewed to 100%.



    Acceptance Criteria


    • WHEN the user attempts to Scrub Past / Jump Past 2 or more Mid-rolls ad breaks THEN the user must be pulled back to the Mid-roll position nearest to his/her jump position before playback resumes from the scrub/jump position



    The user must watch this nearest Mid-roll Ad-break position before he/she can resume watching content from the jump/scrub point (i.e. the user must only watch one mid roll ad break nearest to their position rather than all Mid-rolls that they jumped across).

    Unsubscribed Registered State
    REQ_ID:AT16

    User should be able to Trickplay content and Ads according to your App's advertising product requirements.

    User Story


    Pre-requisite


    • User was previously subscribed to the X1 App Platform, but has now cancelled their subscription and is now in an “unsubscribed registered state”.



    Acceptance Criteria


    • GIVEN that a user has initiated playback in App AND user is now in an “unsubscribed registered state” THEN the user should be able to Trickplay content and Ads according to the App’s own advertising product requirements.



    Commerce Integration

    Item

    Requirement

    Referral to commerce integration CTA
    REQ_ID:MP01

    Non-subscribed users must be given a "Get via X1 App Platform" CTA to subscribe to the App from the sign-in / sign-up screen.

    User Story


    As a user, I want to be able to start a purchase journey of an App I am not signed into from the App landing page.



    Acceptance Criteria


    GIVEN I have not purchased an App subscription and I launch the App WHEN I am not logged into the App THEN while on the sign-in / sign-up screen, I must be given the option to select a “Get via X1 App Platform” CTA



    Transition to commerce integration App for purchase
    REQ_ID:MP02

    Users must be directed to the commerce integration App when they select the "Get via X1 App Platform" CTA.

    User Story


    As a user, I want to be redirected to the commerce integration App when I select the "Get via X1 App Platform" CTA.



    Acceptance Criteria


    • GIVEN I have launched the and I am presented with an option to ‘Get via X1 App Platform’ WHEN I select the ‘Get via X1 App Platform’ option THEN I must be redirected to the commerce integration App straight to a page with relevant information about the App subscription.



    Notes


    • Specification for the App to App transition (including the specific link parameters) will be provided separately. App will be responsible for sending the user to the specified link.


    • X1 App Platform will be responsible for any content displayed within the commerce integration App.


    Activation feedback
    REQ_ID:MP03

    Your App must notify the X1 App Platform when a user has successfully purchased and activated a subscription to your App.

    User Story


    As a platform, I want to know if a user who has bought a subscription has successfully activated the subscription.



    Acceptance Criteria


    • GIVEN a user has bought a subscription to an App through the commerce integration WHEN the user activates that subscription with the App partner THEN X1 App platform should be notified of a successful activation.



    Notes


    Specification for how the activation notification should be passed to the X1 App Platform will be provided.


    Silent Sign-In

    Item

    Requirement

    On Product sign in - apps without existing account credentials
    REQ_ID:SI01

    When a user signs into an app on one device, it should allow the user to auto sign into all other devices in their household.

    User Story


    As an app user, I want to sign into 3rd party apps across all my connected X1 App Platform devices, so that I don't have to repeat the time consuming process of signing-in on each device.



    Pre-requisites


    • The user is trying to sign into an app on any device


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account



    Acceptance Criteria


    • GIVEN I am signing in on product to Account X to 3rd party app that supports silent sign-in WHEN I've signed into the app then I should be eligible to auto sign in on other devices in my household.


    • GIVEN I've signed in to a silent sign in supporting app on another device on my household WHEN I open the app on another device, that is not currently signed in, it should be signed in using the same account(s) as the device where I initiated silent sign in • Partner should show a notification in app to confirm the user has been signed in


    On Product sign in - apps with existing account credentials
    REQ_ID:SI02

    When a user signs into an app on one device, it should not overwrite existing credentials on other devices in their household.

    User Story


    As an app user, I don't want silent sign in to overwrite existing account credentials that are being used on additional devices



    Pre-requisites


    • The user is trying to sign into an app on any device


    • The app the user is access supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has already signed into an app on one of their devices



    Acceptance Criteria


    • GIVEN I am signing in on product to Account X to 3rd party app that supports silent sign-in WHEN I open the app on another device, that is signed in to a different account, THEN the app will remain signed in with the local credentials and will not be signed in to the new account


    • GIVEN I am signing in on product to Account X to 3rd party app that supports silent sign-in WHEN I open the app on another device, that is signed in to the same account THEN the app will remain signed in with the local credentials


    Silent sign in following signing out from previous credentials on additional devices
    REQ_ID:SI03

    Users should be able to use silent sign in after signing out on other devices.

    User Story


    As an app user, I want silent sign in to auto sign me into an app with my silent sign in credentials if I sign out of any existing accounts on other devices.



    Pre-requisites


    • The user is trying to sign into an app on any device


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has opted in to silent sign in on a device but at the time was signed in to the app with another account on another device


    • The user is signing out of the alterative credentials either on platform or through the partner's website



    Acceptance Criteria


    • GIVEN that I've signed out of my existing account on a secondary device WHEN I next launch the app THEN it should be signed in using the same account as the device where I initiated silent sign in


    • Partner should show a notification in app to confirm the user has been signed in



    Notes


    If the app was previously signed in with the same account as the silent sign in credentials then when they relaunch the app it will be signed in again with the same account but using the authentication token from silent sign in

    Sign in to 3rd party apps through commerce integration
    REQ_ID:SI04

    Users using commerce integration should have their credentials available for auto sign in after creating an account. You must present a clear message to indicate all devices will be auto signed in using the provided account information.

    User Story


    As a user buying through X1 App Platform commerce integration, I want my account credentials provided at account creation to auto sign me into the app across all my devices



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has purchased the app through commerce integration


    • The user has gone through the account creation process on the partner's website



    Acceptance Criteria


    •GIVEN I have purchased an app through the commerce integration THEN there should be clear messaging to indicate that all devices will be auto signed in using my new account credentials before I leave the journey to create my partner account


    • Given that I have created account credentials through the commerce integration journey with an app that supports silent sign in WHEN I have completed account creation THEN those credentials should be available to auto sign into my X1 App Platform devices


    • GIVEN I have created an account through commerce integration, WHEN I launch that app on an X1 App Platform device, THEN I should be automatically signed into the commerce integration account (Account X).


    • Partner should show a notification in app to confirm the user has been signed in



    Notes


    A similar approach will be required to support an off platform pre-authentication journey in the future

    Sharing device friendly names with partner sign out journey (optional behavior)
    REQ_ID:SI05

    Users should be presented with device friendly names when signing out of a device through your App's website.

    User Story


    As a user when I choose to log out of a device from a partner's website I want the device friendly names that I've chosen for devices to appear in the list of active devices.



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has selected device friendly names for their devices


    • The user is on the partner's website attempting to log out


    • The partner's website supports logging out of individual devices



    Acceptance Criteria


    • GIVEN I have set up device friendly names for my panel/puck when I attempt to log out from a third party website THEN the device friendly name for my devices should appear in the list


    • Only the devices where a user is logged into the partner app should be available



    Notes


    Not all partners will allow log out from their website. This requirement is only for apps that do and the X1 App Platform will need to support this journey.

    Sign out of 3rd party apps on devices within the product
    REQ_ID:SI06

    Users which sign out of a 3rd party app on one device should only be signed out of the app on that device. Other devices should not be affected.

    User Story


    As an app user, when I sign out of an app I want the sign out to only impact the local device



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has used silent sign in to authenticate on this device


    • The user is signing out of the alternative credentials either on the X1 App Platform or through the partner's website



    Acceptance Criteria


    • GIVEN I have signed-in with Account X to a 3rd party app WHEN I sign out of the app THEN I should only be signed out of the device I am on. Other devices should not be affected.


    • GIVEN I have signed out with Account X on a 3rd party app WHEN i relaunch the app THEN I should be presented with a sign-in screen.


    Sign out of 3rd party apps across all devices - With subscription token (commerce integration)
    REQ_ID:SI07

    Users which sign out of a 3rd party app on one device should only be signed out of the app on that device. Other devices should not be affected and the X1 App Platform will retain the subscription token.

    User Story


    As an app user that has purchased a subscription through commerce integration, when I sign out of an app I want the sign out to only impact the local device



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has used silent sign in to authenticate on this device


    • The user is signing out of the alternative credentials either on platform or through the partner's website


    • The user has purchased the app subscription through commerce integration



    Acceptance Criteria


    • GIVEN I have signed-in with Account X to a 3rd party app WHEN I sign out of the app THEN I should only be signed out of the device I am on. Other devices should not be affected.


    • GIVEN I have signed out with Account X on a 3rd party app WHEN I relaunch the app THEN I should be presented with a sign-in screen offering two options:


    1. Sign-in with retained subscription details - as subscription token has been retained


    2. An alternative method to sign in using different details (QR code, keyboard sign-in, pin pairing etc)



    Notes


    The X1 App Platform will retain the subscription token and therefore will retain sign-in details for users.

    Sign out of 3rd party apps on all devices off product (optional behavior)
    REQ_ID:SI08

    Users which use your App's website to "sign out of all devices" should be signed out of all devices that they are logged into and the authentication token should be cancelled.

    User Story


    As an app user, when I go to the partner website of an app I want to be able to sign out of all my devices (including all devices)



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has opted in to silent sign in previously and those credentials are used on this device


    • The user is signing out of the account through the partner's website



    Acceptance Criteria


    GIVEN I have signed-in with Account X to a 3rd party app WHEN I click ‘sign out of all devices’ on the partner website THEN I should be signed out of all my devices I am logged in on and the authentication token should be cancelled • The authentication token should be cancelled and no longer eligible for auto sign in



    Notes


    Not all partners will allow log out from their website. This requirement is only for apps that do and the X1 App Platform will need to support this journey.

    Sign out of 3rd party apps on individual devices (optional behavior).
    REQ_ID:SI09

    Users which use your App's website to "sign out of friendly device name" should only be signed out on the device that they selected to log out of.

    User Story


    As an app user, when I go to the partner website of an app I want to be able to sign out of each individual device (including all individual devices)



    Pre-requisites


    • The app the user is accessing supports silent sign in


    • The user has multiple devices connected to the same account


    • The user has opted in to silent sign in previously and those credentials are used on this device


    • The user is signing out of the account through the partner's website



    Acceptance Criteria


    GIVEN I have signed-in with Account X to a 3rd party app WHEN I sign out of a particular device on the partner website THEN I should only be signed out of the device I have selected. Other devices should not be affected but then authentication token should be cancelled.



    Notes


    Not all partners will allow log out from their website. This requirement is only for apps that do and the X1 App Platform will need to support this journey.

    Entitlement

    Item

    Requirement

    Signed-In / Authentication Status
    REQ_ID:EN01

    Your App should inform the X1 App Platform when a user has successfully signed-in and signed-out.

    User Story

    Pre-requisites


    • The App requires a user to sign-in in order to access & playback content.



    Acceptance Criteria


    • GIVEN a user has signed-in to the App, THEN the App should inform the X1 App Platform with a successful sign-in response, login token and specified endTime


    • GIVEN a user is signed-in to the App WHEN the user launches the , THEN the App should update the sign-in response, login token and specified endTime


    • GIVEN a user has signed-out of the App, THEN the App should inform the X1 App Platform of a sign-out response.

    Entitlement Status
    REQ_ID:EN02

    Your App should inform the X1 App Platform when a user has modified their subscription for your App.

    User Story


    Pre-requisites


    • The App requires an account / subscription in order to access & playback content.



    Acceptance Criteria


    • GIVEN a user has purchased / changed / upgraded / downgraded a subscription for the App, THEN the App should update the X1 App Platform with a new Discovey.contentAccess(entitlements) API call.


    • GIVEN a user has launched the App, THEN the App should refresh and update the X1 App Platform with any new changes.


    • GIVEN a user has cancelled their subscription for the App, THEN the App should update the X1 App Platform with a new Discovery.contentAccess(entitlements) API call, AND when the specified endTime has lapsed, THEN the App should clear and remove all entitlements for the user with a Discovery.clearContentAccess API Call.

    Thumbnail Trickplay recommendations

    Item

    Requirement

    Enabling Thumbnail Trickplay
    REQ_ID:TH01

    • Users should be able to trigger thumbnail Trickplay from the D-Pad on the remote without navigating to any in-App button on the progress bar.
    • Users should be able to start fast-forwarding / rewinding with a single click on the D-Pad, with each click increasing the FFWD / RWND speed.
    • Users should should be able to stop thumbnail Trickplay and resume / pause playback by either pressing the Select button the D-Pad or using the Play/Pause button on the remote.

    Thumbnail Trickplay Speeds
    REQ_ID:TH02

    Users should be able to fast-forward or rewind content at three incremental speeds.

    Thumbnail Trickplay UI
    REQ_ID:TH03

    • The progress bar should remain at the point where Trickplay was initiated; and should remain visible during Trickplay.
    • A minimum of 3 thumbnails should display when the user is fast-forwarding / rewinding / scrubbing.


    Was this article helpful?