openapi: 3.0.0 info: title: Enable Enterprise Local Management Server description: | This REST API provide several remote control and management operations on the H200 Enable Enterprise Media Player version: 2.1.0 servers: - url: http://{host}:8090/api/v2 variables: host: default: api.aminocom.com - url: https://{host}:10444/api/v2 variables: host: default: api.aminocom.com paths: /openapi.yaml: get: tags: - api summary: Get API document in yaml format responses: 200: description: OK content: text/plain: schema: type: string /debug/logcat: get: tags: - debug summary: Get logcat Buffer description: Retrieves the complete current logcat circular buffer responses: 200: description: OK content: text/plain: schema: type: string example: "03-29 03:10:15.145 3559 3559 I vold : Vold 3.0 (the awakening) firing up" /device/serialNumber: get: tags: - device summary: Get serial number of STB description: Retrieves serial number in the format of {product number}-{device serial} responses: 200: description: OK content: application/json: schema: type: object properties: serialNumber: type: string example: 107-12345678 /device/macAddress: get: tags: - device summary: Get MAC address of STB description: Retrieves mac address in the format of XX:XX:XX:XX:XX:XX responses: 200: description: OK content: application/json: schema: type: object properties: macAddress: type: string example: 5C:0F:FB:11:F1:6E /device/hardwareModel: get: tags: - device summary: Get hardware model of STB description: Retrieves hardware model in number responses: 200: description: OK content: application/json: schema: type: object properties: macAddress: type: integer example: 107 /input/key: post: tags: - input summary: Inject keycode(s) description: | Inject keycode(s) into Android Input Subsystem. Will be forward to either global or local handler depending on the keycode and any key remap See https://developer.android.com/reference/android/view/KeyEvent responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: type: array minItems: 1 items: type: object required: - keycode properties: keycode: description: Android Keycode Decimal value example: 166 type: integer delay: description: Optional delay in ms after the keycode has been injected. example: 500 type: integer /firmware/upgrade: post: tags: - firmware summary: Initiate Upgrade from URI description: Upgrade the device from the specified URI responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: type: object required: - uri properties: uri: description: URI from where Upgrade zipfile to be downloaded from example: "http://www.webstorage.com/25.5.2021.3.zip" type: string /system/reboot: post: tags: - system summary: Reboot Device description: Reboots the device immediately without prompt responses: 200: description: OK /system/prop: get: tags: - system summary: Get System Property description: Returns Android System Property as specified by key parameters: - name: key in: query required: true schema: type: string example: "persist.sys.usb.config" responses: 200: description: OK content: application/json: schema: type: object example: { persist.sys.usb.config: adb } 400: description: Bad Request put: tags: - system summary: Set Property Value description: | Sets the provided value into the Android Property as specified in key. There are limitations of property that can be set. It is limited by SE policy. You can add new properties under the existing domain, e.g. persist.sys., persist.vendor.amino. responses: 200: description: OK requestBody: content: application/json: schema: type: object required: - key - value properties: key: description: Key of the property to set example: "persist.sys.amino.hdmi.cec.one_touch_play" type: string value: description: Value to set in the property example: "on" type: string /system/deeplink: post: tags: - system summary: Send a Android Launch intent description: Send a intent for Android system to launch a new activity responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: $ref: "#/components/schemas/LaunchIntent" /system/application: get: tags: - system summary: Get list of Android applications installed description: Retrieves array of information of applications installed responses: 200: description: OK content: application/json: schema: $ref: "#/components/schemas/Applications" /zapper/channels: get: tags: - zapper summary: Returns complete channel lineup operationId: listChannels description: | Complete channel lineup will be returns in JSON format or empty json obtain {} if no channels have been provisioned responses: 200: description: OK content: application/json: schema: $ref: "#/components/schemas/Channels" 400: description: Bad Request post: tags: - zapper summary: Adds new channel to the lineup operationId: addChannelToLineup description: | Add a new channel to the lineup. If the channel already exists then an error will be returned responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: $ref: "#/components/schemas/Channel" /zapper/channels/{name}: get: tags: - zapper summary: Get the channel info operationId: getChannelByName parameters: - name: name in: path required: true description: Return the channel object for number provided as name param schema: type: integer minimum: 0 maximum: 1023 responses: 200: description: OK content: application/json: schema: $ref: "#/components/schemas/Channel" 400: description: Bad Request put: tags: - zapper summary: Create or change the channel info of a channel operationId: updateChannelByName parameters: - name: name in: path required: true description: Update the channel object for number provided as name param. If the channel does not exist and error will be returned schema: type: integer minimum: 0 maximum: 1023 responses: 200: description: OK 400: description: Bad Request delete: tags: - zapper summary: Delete the channel operationId: deleteChannelByName parameters: - name: name in: path required: true description: Delete the channel for number provided as name param. If the channel does not exist and error will be returned schema: type: integer minimum: 0 maximum: 1023 responses: 200: description: OK 400: description: Bad Request /zapper/changeChannel: post: tags: - zapper summary: Change Channel on Zapper operationId: changeChannelOnZapper description: | Built-in Zapper Application will be restarted and attempt to tune to the specified channel by name or desc If the channel name or desc is not found, it will tune to the channel configured from the Lineup File responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: oneOf: - type: object properties: name: description: Channel Number (Name) example: "2" type: string - type: object properties: desc: description: Channel Description example: "CNN" type: string /zapper/tuneToUrl: post: tags: - zapper summary: Force Tune to Video URL operationId: forceURLOnZapper description: | Provide channel lineup entry and force tune the channel zapper to tune to the entry withouth persisting Upon Ch+/_ the channel zapper to continue going through the lineup if configured If NO channel lineup has been configure CH+/- will have no effect the the Forced Tuned URL will continue responses: 200: description: OK 400: description: Bad Request requestBody: content: application/json: schema: $ref: "#/components/schemas/Channel" components: schemas: Channels: type: array items: $ref: "#/components/schemas/Channel" Channel: type: object required: - name - type - addr properties: name: type: string example: "101" type: type: string enum: ['udp', 'igmpv3', 'nativedash', 'rtsp', 'http', 'https'] addr: type: string example: "233.22.133.1" port: type: integer format: int32 maximum: 65536 minimum: 1 example: 8110 desc: type: string example: "UDP 1" starting: type: boolean example: true encryption_type: type: string encrypting_server: type: string drm_session_type: type: string example: 'persistent' encrypting_request_header: type: object igmpv3_mode: type: string enum: ['asm','include','exclude'] igmpv3_addr_list: type: array items: type: string format: ipv4 LaunchIntent: type: object properties: data: description: data or uri example: https://www.yahoo.com type: string package: description: Explicit package id should be target to instead of broadcast example: com.aminocom.browser type: string action: description: Action Name type: string example: android.intent.action.VIEW activity: description: Classname inside of the application package type: string example: com.aminocom.browser.MainActivity extras: description: Additional parameters to be passed in JSON format type: object example: { configA: true, configB: "String", configC: 123 } Application: type: object properties: app_label: description: Display name of application type: string example: Browser package_name: description: Package name of application type: string example: com.aminocom.browser launch_intent: $ref: "#/components/schemas/LaunchIntent" in_system_image: description: Whether the application is part of system image type: boolean example: true Applications: type: array items: $ref: "#/components/schemas/Application"