api:iptv:tabletprofile:get
Table of Contents
API : IPTV : Tablet profiles : Get
Introduction
This will get a single tablet profile.
A tablet profile is a configuration for a tablet's launcher, which can be shared by many tablets.
Request
| URL | https://api.telecomx.dk/iptv/tabletprofile/TABLET_PROFILE_ID | |
|---|---|---|
| Method | GET | |
| Access level | VIEWER, MANAGER or OWNER if customer has feature FLEXCARE ADMIN ADMIN |
|
| Param | TABLET_PROFILE_ID | Id of the tablet profile (24 hex-char string) |
| Query | launcherConfigFormat | [optional] Boolean - if true, returns tablet profile as a launcher config (legacy format) |
| full | [optional] Boolean - if true, more data is returned. |
|
Query examples
https://api.telecomx.dk/iptv/tabletprofile/12345678901234567890ABCD https://api.telecomx.dk/iptv/tabletprofile/12345678901234567890ABCD?launcherConfigFormat=true
Response
| JSON object | ||
|---|---|---|
| _id | ObjectId | Unique ID for the device |
| name | String | Name of the tablet profile |
| customer | ObjectId | Unique ID of customer that owns the profile |
| rowSpacing | Integer | Vertical distance between apps in pixels |
| horizontalTopSpacing | Integer | Distance between logo in the top left and clock in the top right (Only for here historical reasons, is put on pages individually) |
| topRowSpacing | Integer | Distance from apps to the top border of the screen (Only for here historical reasons, is put on pages individually) |
| powerButton | Boolean | True if the power button is visible, false if not |
| externalPowerOff | Boolean | True if the power button calls an external app instead of powering off (is used as a sort of standby) |
| deviceType | String (enum) | Can either be 'ANDROID_TABLET' or 'ANDROID_BOX' |
| mdm | String (enum) | Which MDM (mobile device management system) is used with this tablet profile. Can be 'FLEXCARE', 'MOBILE_IRON', 'SCALEFUSION', or 'AIRWATCH' |
| battery | Boolean | True if the tablet profile is meant for devices that are battery-driven |
| useLegacy | Boolean | True if the tablet profile is made before the new designer |
| mqttBrokerId | ObjectId | Unique id of mqtt broker, used for mqtt buttons |
| webViewWifiButton | Object | Settings for the wifi button placed in web views, on tablets that don't use PoE |
| webViewWifiButton.active | Boolean | True if wifi button is visible |
| webViewWifiButton.topSpacing | Integer | Distance from top border in pixels |
| webViewWifiButton.leftSpacing | Integer | Distance from left border in pixels |
| webViewWifiButton.rightSpacing | Integer | Distance from right border in pixels |
| hotspot | Object | Hotspot settings |
| hotspot.active | Boolean | True if hotspot is enabled |
| hotspot.url | String | URL of hotspot page to redirect to |
| hotspot.checkUrl | String | URL to check if the tablet has wifi |
| logo | Object | Logo settings |
| logo.enabled | Boolean | If true, logo is shown in the top left corner |
| logo.width | Number | Width of logo in pixels |
| logo.height | Number | Height of logo in pixels |
| logo.image | ObjectId | Object ID of image to use as logo |
| logo.useDefault | Boolean | If true, will use “small logo” from IPTV settings as logo |
| logo.margin | Object | Margins for logo |
| logo.margin.top | Number | Margin to top of screen |
| logo.margin.left | Number | Margin to left of screen |
| logo.margin.bottom | Number | Margin to bottom of screen |
| logo.margin.right | Number | Margin to right of screen |
| version | Object | Determines where the properties of the text in the launcher app, that states the current version of the app. |
| version.x | Number | X coordinate |
| version.y | Number | Y coordinate |
| version.color | Number | Font color |
| version.fontSize | Number | Font size |
| volumeBoost | Object | Volume boost for tablet |
| volumeBoost.enabled | Boolean | If true, then volume boost is enabled |
| volumeBoost.level | Number | Amount of volume added to the tablet's volume (max is 3000) |
| lock | Object | Determines lock functionality of the tablet |
| lock.activation | String (ENUM) | Possible values are OFF, ALWAYS, and MANUAL. If off, then the device does not lock. If always, the tablet locks after a specified delay. If manual, then the user must lock it manually. |
| lock.x | Number | X coordinate |
| lock.y | Number | Y coordinate |
| apps | Array | List of apps that this tablet profile. This is used to determine which version and which apps the users of this tablet profile has, and which apps will be installed on the tablet |
| apps[]._id | Id | Package ID of the app, e.g 'com.skype.android'. |
| apps[].version | String | Version number of the app. If null, it will use the latest version. |
| apps[].locked | Boolean | The property is set to true if a user manually adds an app to a tablet profile. It is false in case that the app is added dynamically, because an app is used on a button. Apps with locked set to false will be removed from the list, in case the app is no longer used in the tablet profile. |
| apps[].install | Boolean | True if FlexMDM should try to install the app. False if the app should merely be whitelisted on the device, but FlexMDM will not try to install it (in case multiple MDMs are used on a device) |
| apps[].name | String | Name of the app. ONLY if the query parameter full = true |
| apps[].apks | Array | List of the available version and links to their APKs. ONLY if the query parameter full = true |
| apps[].apks[].file | Id | Id of the APK |
| apps[].apks[].url | String | URL to download the APK |
| apps[].apks[].version | String | Version of this APK |
| apps[].apks[].default | Boolean | If this version is the default version |
| pages | Array | List of pages that the profile has. |
| Page | Object | Contains page specific properties, and a list of buttons for the given page |
|---|---|---|
| page.background | String | URL to a background image |
| page.useDefaultBackground | Boolean | If true, then the page uses the FlexCare background given in IPTV settings |
| page.clockColor | String | Hex-color for the clock |
| page.leftSpacing | Integer | Distance from left border of the screen |
| page.rowSpacing | Integer | Vertical distance between apps in pixels |
| page.topRowSpacing | Integer | Distance from apps to the top border of the screen |
| clock | Object | Contains properties concerning the clock on each page. |
| clock.x | Number | X coordinate |
| clock.y | Number | Y.coordinate |
| clock.fontSize | Number | Font size |
| clock.enabled | Boolean | If true, then the clock is visible on the current page |
| power | Object | Contains properties concerning the power button on each page. |
| power.x | Number | X coordinate |
| power.y | Number | Y coordinate |
| power.width | Number | Width of power button |
| power.height | Number | Height of power button |
| power.enabled | Boolean | If true, then the power button is visible. If false, the power button is invisible |
| power.image | Id | Id of the fileId on Telecom X' image server. |
| buttons | Array | Array of the buttons for this page |
| Button | Object | The buttons that make up the layout of the tablet |
|---|---|---|
| row | Integer | Row that the button is positioned in |
| position | Integer | Position that the button has in its row |
| x | Number | X coordinate |
| y | Number | Y coordinate |
| fontSize | Number | Font size of button label |
| label | String | Button label, shown below icon |
| labelColor | String | Hex-formatted text color for the label |
| enabled | Boolean | True if button is active and visible |
| type | Enum | Determines the functionality of the button. “PAGE” jumps to another page with a page number, “NAMED_PAGE goes to a page with a name (TV, RADIO, etc), “APP” opens an app installed on the device, and “WEBVIEW” opens a web view with a given url. “NAMED_PAGE” “PAGE”, “APP”, “VIDEO”, “MQTT” or “WEBVIEW” |
| value | String | The value of the button, used together with type. If the type is a page, it will be a page number. If the type is an app, it will be an app name (package name). If the type is webview or video, it will be an URL. |
| clearAppData | Boolean | True if the app data (cache, logins, etc) will be deleted when the app is closed |
| includeToken | Boolean | True launcher send tcx token on app start |
| includeDeviceId | Boolean | True launcher send device id on app start |
| includeTechnicalRoomNumber | Boolean | True launcher send technica room number on app start |
| appId | Number | App ID, used for Pinfo apps. |
| useStats | Boolean | True if interactions with button should be logged to FlexCMS |
| mqtt | Object | Properties for the button's mqtt settings |
| mqtt.function | Enum | Defines what type of mqtt button it is. “concierge”, “slider”, “controller”, “toggle”, “info” |
| mqtt.cardBackgroundColor | String | Background of the whole card |
| mqtt.cardCornerRadius | String | Corner radius of card |
| mqtt.infoTextFontColor | String | Color of info text |
| mqtt.infoTextFontSize | Number | Font size of info text |
| mqtt.stateIconOn | ObjectId | File id of icon |
| mqtt.stateIconOff | ObjectId | File id of icon |
| mqtt.stateIconWidth | Number | Width of “stateIcon” |
| mqtt.stateIconHeight | Number | Height of “stateIcon” |
| mqtt.valuePrefix | String | Value to show before value from mqtt broker |
| mqtt.valuePostfix | string | Value to show after value from mqtt broker |
| mqtt.incrementIcon | ObjectId | File id to icon |
| mqtt.incrementIconWidth | Number | Width of “incrementIcon” |
| mqtt.decrementIcon | ObjectId | File id to icon |
| mqtt.decrementIconWidth | Number | Width of “decrementIcon” |
| mqtt.sliderIcon | ObjectId | id of icon file for the slider |
| mqtt.sliderIconWidth | Number | Width of given slider icon |
| mqtt.sliderIconHeight | Number | Height of given slider icon |
| mqtt.sliderColor | String | Color of selected area of slider |
| mqtt.sliderWidth | Number | Width of slider |
| mqtt.sliderCornerRadius | Number | Border radius of slider |
| mqtt.sliderBackgroundColor | String | Background color of slider |
| mqtt.sliderAngle | Enum | Angle of slider. 0, 90, -90, 180 |
| mqtt.minValue | Number | Minimum value of slider |
| mqtt.maxValue | Number | Max value of slider |
| mqtt.steps | Number | Step value of slider |
| mqtt.conciergeImageWidth | Number | Width of “conciergeImage” |
| mqtt.conciergeImageHeight | Number | Height of “conciergeImage” |
| mqtt.subscribeValueType | Enum | Whether to use a simple/raw value to save on mqtt broker or to save a “json” object “raw”, “json” |
| mqtt.subscribeTemplate | String | Json template if subscribeValueType is “json” |
| mqtt.subscribeTopic | String | Path to where device is located on mqtt broker |
| mqtt.subscribeDevice | String | Device name on mqtt broker |
| mqtt.jsonSubsribeOnValue | String | Value that is set when type is “toggle” and value is on |
| mqtt.jsonSubscribeOffValue | String | Value that is set when type is “toggle” and value is off |
| mqtt.rawSubscribeOnValue | String | Value that is set when function is “toggle” and subscribeValueType “raw” and value is “on” |
| mqtt.rawSubscribeOffValue | String | Value that is set when function is “toggle” and subscribeValueType “raw” and value is “off” |
| mqtt.publishValueType | Enum | Whether to use a simple/raw value to save on mqtt broker or to save a “json” object “raw”, “json” |
| mqtt.publishTemplate | String | Json template if publishValueType is “json” |
| mqtt.publishTopic | String | Path to where device is located on mqtt broker |
| mqtt.publishDevice | String | Device name on mqtt broker |
| mqtt.jsonPublishOnValue | String | Value that is set when type is “toggle” and value is on |
| mqtt.jsonPublishOffValue | String | Value that is set when type is “toggle” and value is off |
| mqtt.rawPublishOnValue | String | Value that is set when function is “toggle” and publishValueType “raw” and value is “on” |
| mqtt.rawPublishOffValue | String | Value that is set when function is “toggle” and publishValueType “raw” and value is “off” |
| Icon | Object | Properties for the button/app icon |
| icon.image | ObjectId | Id of the image |
| icon.url | String | URL for the image |
| icon.width | Integer | Width of the image |
| icon.height | Integer | Width of the image |
| icon.hoverIcon | String | [optional] Alternate icon if user is hovering (using keyboard or fly mouse) |
Example
{ _id: '1234567890ABCDEFGHIJKLMN', customer '2345678901ABCDEFGHIJKLMN', rowSpacing: 60, horizontalTopSpacing: 30, topRowSpacing: 20, powerButton: false, externalPowerOff: false, deviceType: 'ANDROID_TABLET', mdm: 'FLEXCARE', battery: false, useLegacy: true, lock: { activation: 'MANUAL', x: 50, y: 50 }, version: { x: 5, y: 5, color: '#ffffff', fontSize: 13 } webViewWifiButton: { active: true, topSpacing: 20, leftSpacing: 20, rightSpacing: 35 }, hotspot: { active: true, url: 'https://hotspot.hospitalnorth.dk', checkUrl: 'https://google.dk' }, apps: [ { _id: 'com.skype.android', version: null }, { _id: 'com.google.android.apps.translate', version: '1.2' } ], pages: [ { background: '#FFAABB', clockColor: '#000000', leftSpacing: 20, rowSpacing: 20, topRowSpacing: 20, clock: { x: 20, y: 40, fontSize: 14, enabled: true } power: { x: 10, y: 30, width: 100, height: 100, enabled: true, image: '1234567890ABCDEFGHIJKLMN' }, buttons: [ { row: 0, position: 0, fontSize: 13, label: 'TV', labelColor: '#FFFFFF', type: 'NAMED_PAGE', value: 'tv', clearAppData: false, icon: { image: '1234567890ABCD1234567890', url: 'https://placeholder.com/img/tv.png', width: 20, height: 30, hoverIcon: 'https://placeholder.com/img/tv_hover.png' } }, { row: 0, position: 1, fontSize: 14, label: 'RADIO', labelColor: '#FFFFFF', type: 'NAMED_PAGE', value: 'radio', clearAppData: false, icon: { image: '1234567890ABCD1234567890', url: 'https://placeholder.com/img/radio.png', width: 20, height: 30, hoverIcon: 'https://placeholder.com/img/radio_hover.png' } } ] }, { background: '#1ECCBB', clockColor: '#000000', leftSpacing: 20, rowSpacing: 20, topRowSpacing: 20, clock: { x: 20, y: 40, fontSize: 14, enabled: true }, power: { x: 10, y: 30, width: 100, height: 100, enabled: true, image: '1234567890ABCDEFGHIJKLMN' }, buttons: [ { row: 0, position: 0, fontSize: 13, label: 'Skype', labelColor: '#FFFFFF', type: 'APP', value: 'com.skype', clearAppData: false, includeToken: false, includeDeviceId: false, includeTechnicalRoomNumber: false, icon: { image: '1234567890ABCD1234567890', url: 'https://placeholder.com/img/skype.png', width: 20, height: 30, hoverIcon: 'https://placeholder.com/img/skype_hover.png' } }, { row: 0, position: 1, fontSize: 15, label: 'Chess', labelColor: '#FFFFFF', type: 'app', value: 'com.chess_fun', clearAppData: false, includeToken: false, includeDeviceId: false, includeTechnicalRoomNumber: false, icon: { url: 'https://placeholder.com/img/chess.png', width: 20, height: 30, hoverIcon: 'https://placeholder.com/img/chess_hover.png' } } ] } ] }
Errors
| Error code | Message | Description |
|---|---|---|
| 403 | access_denied | Insufficient access level |
| 403 | customer | Customer does not have required feature |
| 404 | id | Tablet profile not found |
| 500 | internal_error | <Unspecified> |
api/iptv/tabletprofile/get.txt · Last modified: 2025/01/10 11:07 by Gudni Sigurdsson