Hi Ramindu,

I have just exposed two jax-rs apis for the following gadgets of the
landing dashboard page as discussed in the last UX/UI meeting held on April
11th.
[1] Device-overview-gadget (GET https://localhost:9443/mdm-admin/dashboard/
device-overview) :
     To show device counts as TOTAL, ACTIVE, INACTIVE and REMOVED
[2] Potential-vlunerabilities (GET https://localhost:9443/mdm-admin/
dashboard/potential-vulnerabilities) :
     To show device counts as NON-COMPLIANT, UNMONITORED (NO-PASSCODE and
NO-ENCRYPTION data capturing in still under development)

Would you be able to get a build of product-emm and try these APIs from the
portal app?

I would be able to provide all the first-cut APIs for the landing dashboard
page by this evening.

Cheers,
Dilan.


*Dilan U. Ariyaratne*
Software Engineer
WSO2 Inc. <http://wso2.com/>
Mobile: +94766405580 <%2B94766405580>
lean . enterprise . middleware


On Wed, Apr 20, 2016 at 12:07 PM, Ramindu De Silva <ramin...@wso2.com>
wrote:

> Hi all,
>
> The following are the request-response structures for the IoT dashboard
> API. Please mention any suggestion or changes to the following
>
>
> 1. Retrieve connectivity status.
>
>>
>> *Request: *POST /connectivityStatus
>
> *{}*
>
> *response:* [
>>
> {
>
> "context": "deviceInfo",
>
> "data": [
>
> {
>
> "group": "active",
>
> "label": "active",
>
> "count": activeNo
>
> },
>
> {
>
> "group": "all",
>
> "label": "all",
>
> "count": activeNo + inactiveNo
>
> },
>
> {
>
> "group": "inactive",
>
> "label": "inactive",
>
> "count": inactiveNo
>
> }
>
> ]
>
> }
>
> ]
>
> 2. Retrieve vulnerabilities
>
>
>> *Request: *POST /securityConcerns
>> *{*
>> *}**response:* [
>>
> {
>
> "context": "securityConcerns",
>
> "data": [
>
> {
>
> "group": "no-passcode",
>
> "label": "No Passcode",
>
> "countChange": randint(100, 500),
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "no-encryption",
>
> "label": "Non encrypted",
>
> "countChange": randint(100, 500),
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "unmonitored",
>
> "label": "Unmonitored",
>
> "countChange": randint(100, 500),
>
> "count": randint(100, 500)
>
> }
>
> ]
>
> }
>
> ]
>
>
> 3. Retrieve non compliant features
>
>
>> *Request: *POST /nonCompliantDevices
>> *{*
>
> fromIndex: 10,
>
> count: 5
>
> *}*
>
> *response:*[
>
>  {
>
> "context": "nonCompliantDevices",
>
> "data":[
>
> {
>
> "group": "non-compliant-1",
>
> "label": "Non Compliant-1",
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "non-compliant-2",
>
> "label": "non-compliant-2",
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "non-compliant-3",
>
> "label": "non-compliant-3",
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "non-compliant-4",
>
> "label": "non-compliant-4",
>
> "count": randint(100, 500)
>
> },
>
> {
>
> "group": "non-compliant-5",
>
> "label": "non-compliant-5",
>
> "count": randint(100, 500)
>
> }
>
> ]
>
> }
>
> ]
>
>
> 4. Retrieve grouping: This has two types of requests request 1 without
> mentioning any filters and request 2 with a filter
>
>
>> *Request1: *POST /nonCompliantDevices
>> *[]*
>
> *response1:*[
>>     {
>>         "context": "platforms",
>>         "data": [
>>             {
>>                 "group": "ios",
>>                 "label": "iOS",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "android",
>>                 "label": "Android",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     },
>>     {
>>         "context": "ownerships",
>>         "data": [
>>             {
>>                 "group": "cope",
>>                 "label": "COPE",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "byod",
>>                 "label": "BYOD",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     },
>>     {
>>         "context": "userGroups",
>>         "data": [
>>             {
>>                 "group": "sales",
>>                 "label": "Sales",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "marketing",
>>                 "label": "Marketing",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "engineering",
>>                 "label": "Engineering",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     }
>
> ]
>
>
>
>> *Request2: *POST /nonCompliantDevices
>> {
>> "filters": [
>>            {
>>             "filteringContext": "platform",
>> "filteringGroups" : ["Android"]
>>            }
>
>         ]
>
> }
>>
> *response2:*[
>>     {
>>         "context": "platforms",
>>         "data": [
>>             {
>>                 "group": "ios",
>>                 "label": "iOS",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "android",
>>                 "label": "Android",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     },
>>     {
>>         "context": "ownerships",
>>         "data": [
>>             {
>>                 "group": "cope",
>>                 "label": "COPE",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "byod",
>>                 "label": "BYOD",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     },
>>     {
>>         "context": "userGroups",
>>         "data": [
>>             {
>>                 "group": "sales",
>>                 "label": "Sales",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "marketing",
>>                 "label": "Marketing",
>>                 "count": randint(100, 500)
>>             },
>>             {
>>                 "group": "engineering",
>>                 "label": "Engineering",
>>                 "count": randint(100, 500)
>>             }
>>         ]
>>     }
>
> ]
>
> 5. Retrieve Device table:
> *Request:*
>
>> POST /devices
>> {
>> "filters": [
>>         {
>>             "filter": "platform",
>> "selections" : ["Android", "iOS"]
>>         },
>>         {
>>             "filteringContext": "NonCompliantDevices",
>> "filteringGroups" : ["non-compliant-1"]
>>         }
>>     ],
>> }
>
>
>
> *response:* [
>
>
>
> {
>
> "context": "devices",
>
> "data": [
>
> {
>
> "id": "001",
>
> "label": "Nexus P",
>
> "status": "Blocked",
>
> "platform": "Android",
>
> "model": "HNP001",
>
> "actions": "Action"
>
> },
>
> {
>
> "id": "002",
>
> "label": "Galaxy Note 5",
>
> "status": "Unmonitored",
>
> "platform": "Android",
>
> "model": "SGN002",
>
> "actions": "Action"
>
> },
>
> {
>
> "id": "003",
>
> "label": "iPhone 6",
>
> "status": "Compliant",
>
> "platform": "iOS",
>
> "model": "AIP003",
>
> "actions": "Action"
>
> }
>
> ]
>
> }
>
> ]
>
>
> Best Regards,
>
>
> ---------- Forwarded message ----------
> From: Grainier Perera <grain...@wso2.com>
> Date: Tue, Mar 29, 2016 at 11:59 AM
> Subject: Re: API Requirements for IoT Snapshot Dashboard
> To: WSO2 Developers' List <dev@wso2.org>, Sriskandarajah Suhothayan <
> s...@wso2.com>, Dilan Udara Ariyaratne <dil...@wso2.com>, Prabath
> Abeysekera <praba...@wso2.com>, Sumedha Rubasinghe <sume...@wso2.com>
>
>
> Hi all,
> As per offline discussion, following are the finalized request-response
> structures for IoT snapshot dashboard API;
>
> 1. Retrieve security concerns for the given filters.
>
>>
>> *Request: *POST /securityConcerns
>> *[*
>>     {
>>         "*filteringContext*":"connectivityStatus",
>>         "*filteringGroups*":*[*"active"*]*
>>     },
>>     {
>>         "filteringContext":"alerts",
>>         "filteringGroups":["high"]
>>     }
>> *]*
>>
>> *Response:**[*
>>     {
>>         "*context*": "securityConcerns",
>>         "*data*": *[*
>>             {
>>                 "*group*": "non-compliant",
>>                 "*label*": "Non Compliant",
>>                 "*count*": 5
>>             },
>>             {
>>                 "group": "no-passcode",
>>                 "label": "No Passcode",
>>                 "count": 18
>>             },
>>             {
>>                 "group": "no-encryption",
>>                 "label": "Non encrypted",
>>                 "count": 23
>>             },
>>             {
>>                 "group": "unmonitored",
>>                 "label": "Unmonitored",
>>                 "count": 12
>>             }
>>         *]*
>>     }
>> *]*
>
>
> 2. Retrieve all devices.
>
>>
>> *Request:*POST /devices
>> *[]*
>>
>> *Response:**[*
>>     {
>>         "*context*": "devices",
>>         "*data*": *[*
>>             {
>>                 "*id*": "001",
>>                 "*label*": "Nexus P",
>>                 "*status*": "Blocked",
>>                 "*platform*": "Android",
>>                 "*model*": "HNP001",
>>                 "*actions*": URL,
>>             },
>>             {
>>                 "id": "002",
>>                 "label": "iPad Mini",
>>                 "status": "Inactive",
>>                 "platform": "iOS",
>>                 "model": "IPM005",
>>                 "actions": URL,
>>             }
>>         *]*
>>     }
>> *]*
>
>
> 3. Retrieve devices count for the given filters.
>
>>
>> *Request:*POST /devicesCount
>> *[*
>>     {
>>         "*filteringContext*":"connectivityStatus",
>>         "*filteringGroups*":*[*"active"*]*
>>     },
>>     {
>>         "filteringContext":"alerts",
>>         "filteringGroups":["high"]
>>     }
>> *]*
>>
>> *Response:**[*
>>     {
>>         "*context*": "deviceCount",
>>         "*data*": *[*
>>             {
>>                 "*group*": "totalCount",
>>                 "*label*": "Total Count",
>>                 "*count*": 210
>>             },
>>             {
>>                 "group": "filteredCount",
>>                 "label": "Filtered Count",
>>                 "count": 57
>>             }
>>        * ]*
>>     }
>> *]*
>
>
> Regards,
>
> On Fri, Mar 11, 2016 at 2:02 PM, Grainier Perera <grain...@wso2.com>
> wrote:
>
>> Hi all,
>>
>> I'm in the process of implementing the first phase of IoT Snapshot
>> Dashboard. So far I have managed to create generic bar (both vertical &
>> horizontal), stack charts (with inter gadget communication) and a LeafletJS
>> based OSM map gadget to be used with the IoT Snapshot Dashboard.
>>
>> However, there ain't any API to get required data to populate gadgets.
>> [1] describes the API requirements for the IoT Snapshot Dashboard.
>> Furthermore, as per offline discussion had with DilanA, we decided to use
>> following request/response structure and implement the required APIs.
>>
>> WDYT?
>>
>> i.e. : all security concerns for the given filters.
>> *Request:*
>>
>>> POST /iot-analytics/securityConcerns
>>> {
>>> "filters": [
>>>         {
>>>             "filter": "platform",
>>> "selections" : ["Android", "iOS"]
>>>         },
>>>         {
>>>             "filter": "ownership",
>>> "selections" : ["BYOD"]
>>>         }
>>>     ],
>>> }
>>
>>
>> *Response:*
>>
>>> {
>>> "status": "success",
>>> "message": null,
>>>   "data": {
>>>     [
>>>        {
>>>                "filter_id":"non-compliant",
>>>                "name":"Non Compliant Devices",
>>>                "count":12
>>>        },
>>>        {
>>>                "filter_id":"unmonitored",
>>>                "name":"Unmonitored Devices",
>>>                "count":15
>>>        }
>>> ]
>>>   },
>>> }
>>
>>
>>
>> [1]
>> https://docs.google.com/a/wso2.com/spreadsheets/d/1EjGCgMvo8Hgi8HQC9AjHxKVdfYYYMwwQ9Rxugk7lwIE/edit?usp=sharing
>>
>> Regards,
>> --
>> Grainier Perera
>> Software Engineer
>> Mobile : +94716122384
>> WSO2 Inc. | http://wso2.com
>> lean.enterprise.middleware
>>
>
>
>
> --
> Grainier Perera
> Software Engineer
> Mobile : +94716122384
> WSO2 Inc. | http://wso2.com
> lean.enterprise.middleware
>
>
>
>
> --
> *Ramindu De Silva*
> Software Engineer
> WSO2 Inc.: http://wso2.com
> lean.enterprise.middleware
>
> email: ramin...@wso2.com <sanj...@wso2.com>
> mob: +94 772339350
> mob: +94 782731766
>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to