---
title: 'Videotron Dashboard Release Notes'
author: 'Thong Nguyen'
---
Videotron Dashboard v1.0 - Release Notes
===
[Demo](https://dev.myhealthhub.rally.ca/)
## Table of Contents
[TOC]
## Test Credentials
If you are a total beginner to this, start here!
1. admin@rally.ca/Rallyadmin1@
2. viewer@rally.ca/Rallyviewer1@
3. admin@videotron.com/Videotronadmin1@
4. viewer@videotron.com/Videotronviewer1@
User story
---
```gherkin=
Feature: Authorization
The system has to be able to identify user from different companies and give them the right access to the system.
eg: Videotron users can only have access to their records.
# Case 1:
Scenario: Authorize an user
When user signs in to the system
Then the backend will clarify which company the user is from and give the appropriate records and rights for users
```
```gherkin=
Feature: View data from mux.js
As a dashboard user
I want to view data that fetched directly from mux.js
Because I want to have a better understanding about the insights of data
# Case 1:
Scenario: User is a viewer in the system
When the user is succesfully authenticated
Then the system routes user to see the latest data from mux.js
within 24 hours
# Case 2:
Scenario: User is an admin in the system
When the user is succesfully authenticated
Then the system routes user to see the latest data from mux.js
within 24 hours just like case #1. However, admin has more control to the data in other parts of the system.
```
```gherkin=
Feature: View usage data of the application
As a dashboard user
I want to view all the usage data from the system like most active site,
total viewed channel, most viewed channel, most active terminal, etc.
Because I want to have a better understanding about the insights of data.
# When users are Rally employees
Scenario: User clicks the Usage section from the side bar
Given I'm a logged-in User
And I'm an Rally employee
When I click the Usage section from the side bar
Then and the report cards should show up
And the backend should response with the data that is the summary of
all records in the system
# When users are Videotron employees
Scenario: User clicks the Usage section from the side bar
Given I'm a logged-in User
And I'm an Videotron employee
When I click the Usage section from the side bar
Then and the report cards should show up
And the backend should response with the data that is the summary of
ONLY MY COMPANY's records in the system
```
```gherkin=
Feature: Configure channel section
As a dashboard user
I want to create/read/update/delete all channels in the system
Because I want to manage all channels better
# When user is an admin from Rally
Scenario: User clicks the Channel section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Rally
When I click the Channel section from the side bar
Then I should be able to add/edit/delete/update ALL channels
in the system.
# When user is a viewer from Rally
Scenario: User clicks the Channel section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Rally
When I click the Channel section from the side bar
Then I can only view ALL channels in the system.
# When user is an admin from Videotron
Scenario: User clicks the Channel section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Videotron
When I click the Channel section from the side bar
Then I should be able to add/edit/delete/update ALL channels that are
assigned to Videotron by Rally.
# When user is a viewer from Videotron
Scenario: User clicks the Channel section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Videotron
When I click the Channel section from the side bar
Then I can only view ALL channels that are assigned to Videotron
by Rally.
```
```gherkin=
Feature: Configure Site section
As a dashboard user
I want to create/read/update/delete all sites in the system
Because I want to manage all sites better
# When user is an admin from Rally
Scenario: User clicks the Site section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Rally
When I click the Site section from the side bar
Then I should be able to add/edit/delete/update ALL sites
in the system.
# When user is a viewer from Rally
Scenario: User clicks the Site section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Rally
When I click the Site section from the side bar
Then I can only view ALL sites in the system.
# When user is an admin from Videotron
Scenario: User clicks the Site section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Videotron
When I click the Site section from the side bar
Then I should be able to add/edit/delete/update ALL sites that are
assigned to Videotron by Rally.
# When user is a viewer from Videotron
Scenario: User clicks the Site section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Videotron
When I click the Site section from the side bar
Then I can only view ALL sites that are assigned to Videotron
by Rally.
```
```gherkin=
Feature: Configure Terminal section
As a dashboard user
I want to create/read/update/delete all terminals in the system
Because I want to manage all terminals better
# When user is an admin from Rally
Scenario: User clicks the Terminal section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Rally
When I click the Terminal section from the side bar
Then I should be able to add/edit/delete/update ALL terminals
in the system.
# When user is a viewer from Rally
Scenario: User clicks the Terminal section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Rally
When I click the Terminal section from the side bar
Then I can only view ALL terminals in the system.
# When user is an admin from Videotron
Scenario: User clicks the Terminal section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Videotron
When I click the Terminal section from the side bar
Then I should be able to add/edit/delete/update ALL terminals that are
assigned to Videotron by Rally.
# When user is a viewer from Videotron
Scenario: User clicks the Terminal section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Videotron
When I click the Terminal section from the side bar
Then I can only view ALL terminals that are assigned to Videotron
by Rally.
```
```gherkin=
Feature: Configure Account section
As a dashboard user
I want to create/read/update/delete all accounts in the system
Because I want to manage all accounts better
# When user is an admin from Rally
Scenario: User clicks the Account section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Rally
When I click the Account section from the side bar
Then I should be able to add/edit/delete/update ALL accounts
in the system.
# When user is a viewer from Rally
Scenario: User clicks the Account section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Rally
When I click the Account section from the side bar
Then I can only view ALL accounts in the system.
# When user is an admin from Videotron
Scenario: User clicks the Account section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Videotron
When I click the Account section from the side bar
Then I should be able to add/edit/delete/update ALL accounts in
MY COMPANY ONLY.
# When user is a viewer from Videotron
Scenario: User clicks the Account section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Videotron
When I click the Account section from the side bar
Then I can only view ALL accounts in MY COMPANY ONLY.
```
```gherkin=
Feature: Configure Company section
As a dashboard user
I want to create/read/update/delete all accounts in the system
Because I want to manage all accounts better
# When user is an admin from Rally
Scenario: User clicks the Company section from the side bar
Given I'm a logged-in User
And My role is admin
And I'm from Rally
When I click the Company section from the side bar
Then I should be able to add/edit/delete/update ALL companies
in the system.
# When user is a viewer from Rally
Scenario: User clicks the Company section from the side bar
Given I'm a logged-in User
And My role is viewer
And I'm from Rally
When I click the Company section from the side bar
Then I can only view ALL companies in the system.
# When user is from Videotron
Scenario: User clicks the Account section from the side bar
Given I'm a logged-in User
And I'm from Videotron
When I click the Account section from the side bar
Then I shouldn't be able to access this route
```
User Flow
---
> Data Flow when user login
```sequence
Frontend->Backend: User credentials
Note right of Backend: Backend validates user credentials
Backend->Frontend: Response with 200 status and user info
Backend->Mux API: API User and Password
Mux API->Backend: Mux data in the last 24 hours
Backend->Frontend: Mux data in the last 24 hours
```
## API Endpoint
#### BASE URL: https://dev.myhealthhub.rally.ca/api/v1
- Running on PORT: 6001
- Tech stack: Python 3, Flask, Nginx reserve proxy
- Deploy guide
```bash
cd backend/api
source api/bin/activate
screen -m -d python3 run.py
# check if app is running
lsof -t -i:6001
```
### 1. Authentication
- URL: https://dev.myhealthhub.rally.ca/api/v1/authentication
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------- | ---------- |
| Register | /register | POST |full_name, email, password, company_id, access_level_id |
| Validate User | /validate | POST | access_token |
| Login | /login | POST | email, password |
### 2. Mux Data
- URL: https://dev.myhealthhub.rally.ca/api/v1/mux_data
- Example: https://dev.myhealthhub.rally.ca/api/v1/mux_data/errors?period=30:days¤t_site=all¤t_provider=0
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------- | ---------- |
| Get total errors | /errors | GET | period, current_site, current_provider |
| Get video startup time | /video_startup_time | GET | period, current_site, current_provider |
| Get rebuffer duration | /rebuffer_duration | GET | period, current_site, current_provider |
| Get total errors | /app_crash | GET | period, current_site, current_provider |
| Get mbps consumption | /mbps_consumption | GET | period, current_site, current_provider |
| Get total watch time | /total_watch_time | GET | period, current_site, current_provider |
| Get viewer experience score | /viewer_experience_score | GET | period, current_site, current_provider |
| Get smoothness score| /smoothness_score| GET | period, current_site, current_provider |
| Get playback success score | /playback_success_score | GET | period, current_site, current_provider |
| Get viewer experience chart | /viewer_experience_chart | GET | period, current_site, current_provider |
| Get smoothness score chart | /smoothness_score_chart | GET | period, current_site, current_provider |
| Get playback success chart | /playback_success_chart | GET | period, current_site, current_provider |
### 3. Usage Report
- URL: https://dev.myhealthhub.rally.ca/api/v1/view
- Example: https://dev.myhealthhub.rally.ca/api/v1/view/usage-report?period=24:hours&provider=0&site=0
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get usage report data | /usage-report | GET | period, current_site, current_provider |
| Get available sites | /available-sites | GET | period, current_site, current_provider |
| Get all views | /all | GET | period, current_site, current_provider |
| Get all by channel | /by-channel | GET | |
### 4. Channel
- URL: https://dev.myhealthhub.rally.ca/api/v1/channel
- Example: https://dev.myhealthhub.rally.ca/api/v1/channel/all?company=Videotron
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all channels | /all | GET | |
| Get channels by company | /all | GET | company |
| Get channels by site name | /all | GET | site_name |
| Get one channel | /get/${id} | GET | |
| Add channel | /create | POST | channel_info |
| Edit Channel | /update/${id} | PUT | newChannel |
| Delete Channel | /delete/${id} | DELETE |
### 5. Site
- URL: https://dev.myhealthhub.rally.ca/api/v1/site
- Example: https://dev.myhealthhub.rally.ca/api/v1/site/all?company=Videotron
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all sites | /all | GET | |
| Get sites by company | /all | GET | company |
| Get one site | /get/${id} | GET | |
| Add site | /create | POST | site_info |
| Edit site | /update/${id} | PUT | newSite |
| Delete site | /delete/${id} | DELETE |
### 6. Terminal
- URL: https://dev.myhealthhub.rally.ca/api/v1/terminal
- Example: https://dev.myhealthhub.rally.ca/api/v1/terminal/all?company=Videotron
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all terminals | /all | GET | |
| Get terminals by company | /all | GET | company |
| Get one terminal | /get/${id} | GET | |
| Add terminal | /create | POST | terminal_info |
| Edit terminal | /update/${id} | PUT | newTerminal |
| Delete terminal | /delete/${id} | DELETE |
### 7. User
- URL: https://dev.myhealthhub.rally.ca/api/v1/authentication
- Example: https://dev.myhealthhub.rally.ca/api/v1/authentication/all?company=Videotron
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all users | /all | GET | |
| Get users by company | /all | GET | company |
| Get one user | /get/${id} | GET | |
| Add user | /create | POST | user_info |
| Edit user | /update/${id} | PUT | newUser |
| Delete user | /delete/${id} | DELETE |
### 8. Company
- URL: https://dev.myhealthhub.rally.ca/api/v1/company
- Example: https://dev.myhealthhub.rally.ca/api/v1/company/all
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all companies | /all | GET | |
| Get one company | /get/${id} | GET | |
| Add company | /create | POST | user_info |
| Edit company | /update/${id} | PUT | newUser |
| Delete company | /delete/${id} | DELETE |
### 9. Access Level
- URL: https://dev.myhealthhub.rally.ca/api/v1/access-level
- Example: https://dev.myhealthhub.rally.ca/api/v1/access-level/all
| Function | API Endpoint | Method | Parameters |
| -------- | ------------ | ------ | ---------- |
| Get all access level | /all | GET | |
| Get one access level | /get/${id} | GET | |
| Add access level | /create | POST | access_level_info |
| Edit access level | /update/${id} | PUT | new access level |
| Delete access level | /delete/${id} | DELETE |
## Appendix and FAQ
:::info
**Find this document incomplete?** Leave a comment!
:::
###### tags: `Release Notes` `Documentation`