Login Screen

To
access the APIs in this project, developers must obtain a token from the login
API, as it is required for all API requests.
Login
API : On login screen we call
this api to login already logged in user who already has account:
MethodType: POST
URL:
|
backoffice-user/api/v1/login?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS:

AuthParams/Header : not required
Forgot Password

Forgot password API : On Forgot screen we call this api to send a link of Reset password api on a given email from that link user can change new password.
MethodType: POST
URL:
|
https://api-cluster.system.touchetv.com/backoffice-user/api/v1/user/forgotPassword
|
PARAMS :
{
"emailAddress": "mangukiyachecker@gmail.com"
}
Register Screen

SIgn up API: On Register screen we call this api to Register new user
MethodType: POST
URL:
|
backoffice/api/v1/project/all?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS:

AuthParams/Header : not required
Home Screen

1. Get All Video List : On the Home screen, this API is called to retrieve a list of videos. The response allows differentiation based on genre, release year, and whether the content is a movie or a series. Additionally, a search feature can be integrated to refine results based on user preferences.
MethodType: GET
URL:
|
backoffice/api/v1/project/all?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
2. Get Cart Details : On the Home screen we call this api to get the total items available in cart.
MethodType: GET
URL:
|
backoffice/api/v1/cart/users/{userId}/products |
Note : userId can be get from login api
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Video Detail Screen

Get Video Details : On the Video Details screen, this API is called to fetch complete video information, including the video link, genre, description, multiple images of video , and details about associated persons and brands. This allows seamless access to and display of various brands and individuals, as presented on the website.
MethodType: GET
URL:
|
backoffice/api/v1/video/{videoId}/info?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
Note : videoId can be get from Get All Video List api on click of video get that videoId
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Person Detail Screen (Actor / Director Producer)

Get Person Details : On the Person Details screen, this API is called to retrieve information about an individual, including their role (Director, Producer, or Actor), a brief description, multiple images of person, and the number of movies they have been a part of.
MethodType: GET
URL:
|
backoffice/api/v1/person/{personId}/view?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
Note : personId can be get from Get Video Details api on click of person get that “id”
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Brand Detail Screen

Get Brand Details : On the Brand Details screen, this API is called to retrieve comprehensive brand information, including brand images, a detailed description, user feedback, and a list of brand items (Products) with their images, names, and prices.
MethodType: GET
URL:
|
backoffice/api/v1/brand/{brandId}/view?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
Note : brandId can be get from Get Video Details api on click of brand get that “id”
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Product Detail Screen

1. Get Product Details : On the Product Details screen, this API is called to fetch complete product information, including the product name, brand name, rating, customer reviews, multiple product images, pricing, and available variants such as color, size, and other options. Additionally, it provides details on shipping costs.
MethodType: GET
Note : productId can be get from Get Brand Details api on click of brand get that “id”
URL:
|
backoffice/api/v1/product/{productId}/view?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
==========
2. Get Related Product Details : On the Product Details screen we call this api for getting related products list information.
MethodType: GET
URL:
|
backoffice/api/v1/brand/{brandId}/view?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
3. Add To Cart : On the Product Details screen, this API is called to add a product to the cart. User must select mandatory variants such as color, size, and shipping options before adding the product.
MethodType: POST
URL:
|
backoffice/api/v1/cart/users/{userId}/products |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Video Play Screen

Note : On the Video Play screen, three different APIs are called to display relevant products. These APIs help fetch and showcase product details in real time. Below, we have explained each API in detail.
1. Get Video Entities : On the Video play screen we call this api for getting product full information.
MethodType: GET
URL:
|
backoffice/api/v1/video/{videoId}/entities?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true%27 |
Note : videoId can be get from Get Video Details api on click of video get that “id”
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
==========
2. Get Video Event and VoV : On the Video play screen we call this api for getting product touch events and vovs details.
MethodType: POST
URL:
|
backoffice/api/v1/video/{videoId}?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
Note : videoId can be get from Get Video Details api on click of video get that “id”
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
==========
3. Get Video Mapping Data : On the Video play screen we call this api for getting product and event mapping data.
MethodType: GET
URL:
|
backoffice/api/v1/product-mapping/{productMappingId}?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true%27 |
Note : productMappingId can be get from Get Video Entities api on click of video get that “id”
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Show Product on video Explanation
Video Interaction Flow
1. Fetch Video Entities
- Call “ /backoffice/api/v1/video/6/entities “ to get details like brand, person, and product list.
2. Fetch Events in the Video
- Call “ /backoffice/api/v1/video/43 “ to retrieve a list of events occurring in the video.
3. Fetch Product Mapping Data
- Call “ /backoffice/api/v1/product-mapping/3 “ to get mapping data between interactive areas and entities (products or persons).
User Touch Interaction on Video
4. Check if an Event Exists at the Touch Time ( t ) { Here “ t “ is considered as 1/10 of second }
- If an event exists in the event list array proceed.
5. Check Event Type ( type )
- If `type` is "I" (Input) → Process interaction for showing a product on screen.
- If `type` is "O" (Output) → Remove the item from the screen.
Example Event :
{
"eventId": 10175,
"interactiveAreaId": 1078,
"id": 0,
"t": 1,
"r": [
273.26,
236.71,
138.31,
178.84
],
"type": "I"
}
6. Check If User Touch Point Is Inside the Event Frame ( r )
- Convert `r` frame according your video player screen size. As above given four points of `r` which describes point of where product will appear on screen
- Example :
- You can get actual video’s width & height from Fetch Events in the Video API
"width": 854,
"height": 480,
"r": [ 273.26, 236.71, 138.31, 178.84 ], (this is product frame)
"Your video player size": [ 0, 0, 1000, 600 ],
If X = [ (Video Player width * first value from `r`) / video width you get from API ]
Value of X = (1000 * 273.26) / 854 = 320
If Y = [ (Video Player Height * second value from `r`) / video Height you get from API ]
Value of Y = (600 * 236.71) / 480 = 295.88
If Width of product = [ (Video Player width * third value from `r`) / video width you get from API ]
Width of product = (1000 * 138.31) / 854 = 162
If Height of product = [ (Video Player Height * fourth value from `r`) / video Height you get from API ]
Height of product = (600 * 178.84) / 480 = 223.55
Now new `r` frame based on the player is [ 320, 295.88, 162, 223.55 ]
- If the user touch point falls inside the event's interactive frame ( `r` ), proceed.
7. Match Event ID with Mapping Data ( interactiveAreaId )
- Compare the event's `interactiveAreaId` with the mapping data.
- Example mapping data:
{
"id": 15185865,
"interactiveAreaId": 0,
"entityId": 22,
"externalEntityId": null,
"type": "Product",
"maxAttachTime": null,
"maximumTimeInStack": null
}
8. Determine Entity Type (Product or Person)
- If a match is found, check if the type is `"Product"` or `"Person"`.
- Retrieve the `entityId` and find the corresponding product/person in the video entity data.
9. Display or Remove Entity on Screen
- If event type is `I` (Input) → Show the product/person.
- If event type is `O` (Output) → Remove the product/person.
Vov (Visual On Video) Handling
10. Check Current Video Frame for Vov
- Compare the current frame with `startFrame` and `endFrame` in the Vov array.
- If a match is found, display the Vov on the screen.
- Process at 30 frames per second.

4. Get Cart Details : On the Video play screen we call this api to get the total items available in cart.
MethodType: GET
URL:
|
backoffice/api/v1/cart/users/{userId}/products |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
==========
5. Add To Cart : On the Video play screen we call this api for add product into the cart.
MethodType: POST
URL:
|
backoffice/api/v1/cart/users/{userId}/products |
PARAMS: (Same as above call add cart api parameter pass here)
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Note : On the Video screen, when products appear, a blue barcode icon will be displayed. The icon will fade away when no products are visible, as demonstrated on the website.
Cart Screen

1. Get Cart Details : On the Cart screen we call this api to get the total items available in cart.
MethodType: GET
URL:
|
backoffice/api/v1/cart/users/{userId}/products |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=======
2. Update Cart items : On the Cart screen, this API is called to update the quantity of a product in the cart. Users can adjust the product count, and the cart will be updated accordingly.
MethodType: PUT
URL:
|
backoffice/api/v1/cart/users/{userId}/products/{productId} |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=======
3. Delete Cart Item : On the Cart screen we call this api to delete product from the cart.
MethodType: DELETE
URL:
|
backoffice/api/v1/cart/users/{userId}/products/{productId} |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Checkout Screen

1. Get Address List: On the Checkout screen we call this api to get the user save address list.
MethodType: GET
URL:
|
backoffice-user/api/v1/user/{userId}/address/ |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=======
2. Get Card List: On the Checkout screen we call this api to get the user save credit card list.
MethodType: GET
URL:
|
backoffice-user/api/v1/user/{userId}/creditCards?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=======
3. Confirm Order : On the Checkout screen we call this api to confirm user order.
MethodType: POST
URL:
|
backoffice/api/v1/order/request |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Profile Screen

1. Get Address List: On the profile screen we call this api to get the user saved address list.
MethodType: GET
URL:
|
backoffice-user/api/v1/user/{userId}/address/ |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=======
2. Get Card List: On the profile screen we call this api to get the user save credit card list.
MethodType: GET
URL:
|
backoffice-user/api/v1/user/{userId}/creditCards?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Edit Profile Screen

1. Edit Profile : On the edit profile screen we call this api to update user information.
MethodType: POST
URL:
|
backoffice-user/api/v1/user/save?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
2. Change Password : On the edit profile screen we call this api to update the user password.
MethodType: POST
URL:
|
backoffice-user/api/v1/user/changePassword?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
=========
3. Get Languages: On the profile screen we call this api to get Languages list.
MethodType: GET
URL:
|
backoffice-user/api/v1/config/languages |
PARAMS: not required
AuthParams/Header : No required
=========
4. Get Currencies: On the profile screen we call this api to get Currencies list.
MethodType: GET
URL:
|
backoffice-user/api/v1/config/currencies |
PARAMS: not required
AuthParams/Header : No required
Edit Address Screen

1. Add Address: On the edit address screen we call this api to add a user's new address.
MethodType: POST
URL:
|
backoffice-user/api/v1/user/{userId}/address/ |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
========
2. Edit Address: On the edit address screen we call this api to add a user's edit address.
MethodType: POST
URL:
|
backoffice-user/api/v1/user/{userId}/address/{addressId} |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
1. Delete address : On the edit address screen we call this api to delete address.
MethodType: DELETE
URL:
|
backoffice-user/api/v1/user/{userId}/address/{addressId} |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Order Screen

Get Order List: On the Order screen we call this api to get the user order list.
MethodType: GET
URL:
|
backoffice/api/v1/order/{userId}/all |
PARAMS: not required
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Order Detail Screen

1.Order Review : On the Order details screen we call this api to give order item review.
MethodType: POST
URL:
|
backoffice/api/v1/reviews/ |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
2. Update Order Review : On the Order details screen we call this api to update order item review.
MethodType: PUT
URL:
|
backoffice/api/v1/reviews/{reviewId} |
PARAMS:

AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
Existing Video Player Conversion
This is a specific guide on how to implement
products/Entities on top of existing video players.
APIs and General Overview :
We show these things on screen or as well call then “Entities”:
● Person (Actor / Actress / Director / Producer)
● Brand
● Products (which hover on the product area on screen)
● Vov (blooper or video on video)
In order to show above we have 3
apis which we will explain below, but first in order to call these apis, you
will need to get a token from our server.
To get token call Login api
Login api :
● This api is used to get user information and and access token
MethodType: POST
URL:
|
backoffice-user/api/v1/login?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
PARAMS:

Then pass this token in each of this api below:
API one (Entity api) :
This API provides all the necessary entity details associated with the video, including Director, Producers, Actors, Brand, and Products
MethodType: GET
URL:
|
backoffice/api/v1/video/{videoId}/entities?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true%27 |
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
API two (Event api) :
This API provides comprehensive video-related data, including Video Details, Events, Vovs (Video over Videos), Screening Files
MethodType: POST
|
backoffice/api/v1/video/{videoId}?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true |
AuthParams/Header : Here need to pass accessToken as Authorization Token that gets from login api response.
API three (Mapping api) :
This API provides project details and mapping data related to the project.
MethodType: GET
|
backoffice/api/v1/product-mapping/{productMappingId}?loadContents=true&loadHierarchy=true&loadProjects=true&showOnlyPublished=true&loadAsTree=true%27 |
Here productMappingId get from API two
AuthParams/Header : Here
need to pass accessToken as Authorization Token that gets
from login api response.
Handle Person visibility :
Get all Brand, Person, Products details from “API one”. To show a person on screen you will need to call “API two” & “API three”. On screen when there is an event you will get when a product or person is available add a filter and get person details and show person accordingly.
On User Touch Interaction show/hide person on screen :
Example Event Object from API two:
{
"eventId": 10175,
"interactiveAreaId": 1078,
"id": 0,
"t": 1,
"r": [
273.26,
236.71,
138.31,
178.84
],
"type": "I"
}
1. Check if an Event Exists at the Touch Time ( t ) { Here “ t “ is considered as 1/10 of second or Centi Second }
- Get event details from API two
- If an event exists in the event list array proceed ahead.
2. Check Event Type ( type )
- If `type` is "I" (Input) → The time entity should come on screen based on if user interacts on the touch area defined for that entity in param “r”
- If `type` is "O" (Output) → If object is on screen the time O means to remove it from screen and send it to either side menu in case of products or make it invisible in case of other entities.
3. Now Check If User Touch Point Is Inside the Event Frame ( r )
- Convert `r` frame according to your video player screen size. As above given four points of `r` which describes the point of where a person will appear on screen.
- Example :
- You can get actual video’s width & height from API Two API
"width": 854,
"height": 480,
"r": [ 273.26, 236.71, 138.31, 178.84 ], (this is product frame)
"Your video player size": [ 0, 0, 1000, 600 ],
If X = [ (Video Player width * first value from `r`) / video width you get from API ]
Value of X = (1000 * 273.26) / 854 = 320
If Y = [ (Video Player Height * second value from `r`) / video Height you get from API ]
Value of Y = (600 * 236.71) / 480 = 295.88
If Width of product = [ (Video Player width * third value from `r`) / video width you get from API ]
Width of product = (1000 * 138.31) / 854 = 162
If Height of product = [ (Video Player Height * fourth value from `r`) / video Height you get from API ]
Height of product = (600 * 178.84) / 480 = 223.55
Now new `r` frame based on the player is [ 320, 295.88, 162, 223.55 ]
- If the user touch point falls inside the event's interactive frame ( `r` ), proceed to show the object on screen.
4. Match Event ID with Mapping Data ( interactiveAreaId )
- Get mapping data from API Three
- Compare Event ID from API two with `interactiveAreaId` in mapping data.
- Example Mapping Data Object:
{
"id": 15185865,
"interactiveAreaId": 0,
"entityId": 22,
"externalEntityId": null,
"type": "Product",
"maxAttachTime": null,
"maximumTimeInStack": null
}
5. Determine Entity Type (Product or Person)
- If a match is found, check if the type is `"Product"` or `"Person"`.
- Retrieve the `entityId` and find the corresponding product/person in the API One with the same Id.
6. Display or Remove Entity on Screen
- If event type is `I` (Input) → Show the person.
- If event type is `O` (Output) → Remove the person.
Handle Product & Brand visibility :
Get all Brand & Products details from “API one”. To show a product & brand on screen you will need to call “API two” & “API three”. On screen when there is an event you will get when a product is available add a filter and get product & brand details from API One and show product & brand accordingly. To show brand details take brandid from product detail and use that to get same brand information from API One.
On User Touch Interaction show/hide product & brand on screen :
Example Event Object:
{
"eventId": 10175,
"interactiveAreaId": 1078,
"id": 0,
"t": 1,
"r": [
273.26,
236.71,
138.31,
178.84
],
"type": "I"
}
1. Check if an Event Exists at the Touch Time ( t ) { Here “ t “ is considered as 1/10 of second }
- Get event details from API two
- If an event exists in the event list array proceed ahead.
2. Check Event Type ( type )
- If `type` is "I" (Input) → Process interaction for showing a product & brand on screen.
- If `type` is "O" (Output) → Remove the product & brand from the screen.
3. Now Check If User Touch Point Is Inside the Event Frame ( r )
- Convert `r` frame according to your video player screen size. As above given four points of `r` which describes point of where a product will appear on screen.
- Example :
- You can get actual video’s width & height from API Two API
"width": 854,
"height": 480,
"r": [ 273.26, 236.71, 138.31, 178.84 ], (this is product frame)
"Your video player size": [ 0, 0, 1000, 600 ],
If X = [ (Video Player width * first value from `r`) / video width you get from API ]
Value of X = (1000 * 273.26) / 854 = 320
If Y = [ (Video Player Height * second value from `r`) / video Height you get from API ]
Value of Y = (600 * 236.71) / 480 = 295.88
If Width of product = [ (Video Player width * third value from `r`) / video width you get from API ]
Width of product = (1000 * 138.31) / 854 = 162
If Height of product = [ (Video Player Height * fourth value from `r`) / video Height you get from API ]
Height of product = (600 * 178.84) / 480 = 223.55
Now new `r` frame based on the player is [ 320, 295.88, 162, 223.55 ]
- If the user touch point falls inside the event's interactive frame ( `r` ), proceed.
4. Match Event ID with Mapping Data ( interactiveAreaId )
- Get mapping data from API Three
- Compare Event ID with `interactiveAreaId` in mapping data.
- Example Mapping Data Object:
{
"id": 15185865,
"interactiveAreaId": 0,
"entityId": 22,
"externalEntityId": null,
"type": "Product",
"maxAttachTime": null,
"maximumTimeInStack": null
}
5. Determine Entity Type (Product or Person)
- If a match is found, check if the type is `"Product"` or `"Person"`.
- Retrieve the `entityId` and find the corresponding product/person in the API One with the same Id.
6. Display or Remove Entity on Screen
- If event type is `I` (Input) → Show the product.
- If event type is `O` (Output) → Remove the product.
7. When there is a product in the touch box you have to show a brand image and if there is a person then you have to show a person image.
Vov ( Visual On Video / Bloopers ) Handling
● To get Vov data you will need to call API Two
Check Current Video Frame for Vov
- Compare the current video frame with `startFrame` and `endFrame` in the Vov array.
- If a match is found, display the Vov on the screen.
- Process at 30 frames per second.
