device-selection

command module
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

README

Tests

This service allowes a user to find devices (and services) which match given filter criteria.

the endpoint expects a jwt in the Authorization header.

Filter By Simple Query-Parameter

if the request correlates to a single bpmn process task (or event), the user can use the following query-parameters:

  • function_id
  • device_class_id
  • aspect_id

request:

GET /selectables?function_id=someId1&aspect_id=someOtherId

response:

[{
   "device":{
      "id":"example-id",
      "local_id":"example-local-id",
      "name":"example-name",
      "device_type_id":"example-device-type"
      "creator": "creator",
      "shared": true,
      "permission": {"r": true, "w": false, "x": true", "a": false"}
   },
   "services":[
      {
         "id":"example-service-id",
         "local_id":"example-local-id",
         "name":"example-name",
         ...
      }
   ]
}]

Filter By JSON

if the request correlates to multiple bpmn tasks in a bpmn lane, the simple query parameters and powerful enough. in this case the user may send a json list of the filter-criteria to the endpoint. the json has to be query-encoded and set to the 'json' query-parameter.

json example:

[
   {
      "function_id":"some-function-id",
      "device_class_id":"some-device-clsass-id",
      "aspect_id":"some-aspect-id"
   }
]

request:

GET /selectables?json=%5B%7B%22function_id%22%3A%22some-function-id%22%2C%22device_class_id%22%3A%22some-device-clsass-id%22%2C%22aspect_id%22%3A%22some-aspect-id%22%7D%5D

Filter By Base64 JSON

the json may also be send base64 encoded

request:

GET /selectables?base64=W3siZnVuY3Rpb25faWQiOiJzb21lLWZ1bmN0aW9uLWlkIiwiZGV2aWNlX2NsYXNzX2lkIjoic29tZS1kZXZpY2UtY2xzYXNzLWlkIiwiYXNwZWN0X2lkIjoic29tZS1hc3BlY3QtaWQifV0%3D

Protocol-Block-List

the user may filter the results additionally with a blocklist of brotocol ids, by using the query-parameter 'filter_protocols'. filter_protocols may be a ',' separated list of protocol-ids.

request:

GET /selectables?function_id=someId1&aspect_id=someOtherId&filter_protocols=id1,id2

the list of blocked protocols may also be set implicitly by using the query-parameter 'filter_interaction'. this creates a list of unwanted protocols, that use the given interaction.

the value of 'filter_interaction' may be one of the following values:

  • event
  • request
  • event+request

request:

GET /selectables?function_id=someId1&aspect_id=someOtherId&filter_interaction=event

Bulk Request

request:

POST /bulk/selectables
[
   {
      "id":"1",
      "filter_interaction":null,
      "filter_protocols":[
         "mqtt"
      ],
      "criteria":[
         {
            "function_id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
            "device_class_id":"dc1",
            "aspect_id":"a1"
         }
      ]
   },
   {
      "id":"2",
      "filter_interaction":"event",
      "filter_protocols":null,
      "criteria":[
         {
            "function_id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
            "device_class_id":"dc1",
            "aspect_id":"a1"
         }
      ]
   },
   {
      "id":"3",
      "filter_interaction":null,
      "filter_protocols":[
         "mqtt",
         "pid"
      ],
      "criteria":[
         {
            "function_id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
            "device_class_id":"unknown",
            "aspect_id":"a1"
         }
      ]
   }
]

response:

[
   {
      "id":"1",
      "selectables":[
         {
            "device":{
               "id":"1",
               "name":"1",
               "device_type_id":"dt1",
               "permissions":{
                  "r":true,
                  "w":false,
                  "x":true,
                  "a":false
               },
               "shared":false,
               "creator":""
            },
            "services":[
               {
                  "id":"11",
                  "local_id":"11_l",
                  "name":"11_name",
                  "aspects":[
                     {
                        "id":"a1",
                        "name":"",
                        "rdf_type":""
                     }
                  ],
                  "protocol_id":"pid",
                  "functions":[
                     {
                        "id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
                        "name":"",
                        "concept_id":"",
                        "rdf_type":"https://senergy.infai.org/ontology/MeasuringFunction"
                     }
                  ]
               }
            ]
         }
      ]
   },
   {
      "id":"2",
      "selectables":[
         {
            "device":{
               "id":"1",
               "name":"1",
               "device_type_id":"dt1",
               "permissions":{
                  "r":true,
                  "w":false,
                  "x":true,
                  "a":false
               },
               "shared":false,
               "creator":""
            },
            "services":[
               {
                  "id":"11",
                  "local_id":"11_l",
                  "name":"11_name",
                  "aspects":[
                     {
                        "id":"a1",
                        "name":"",
                        "rdf_type":""
                     }
                  ],
                  "protocol_id":"pid",
                  "functions":[
                     {
                        "id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
                        "name":"",
                        "concept_id":"",
                        "rdf_type":"https://senergy.infai.org/ontology/MeasuringFunction"
                     }
                  ]
               }
            ]
         }
      ]
   },
   {
      "id":"3",
      "selectables":null
   }
]

Bulk Request Combined Devices

similar to a request to '/bulk/selectables' but returns only the found (distinct) devices of all found selectables.

request:

POST /bulk/selectables/combined/devices
[
   {
      "id":"1",
      "filter_interaction":null,
      "filter_protocols":[
         "mqtt"
      ],
      "criteria":[
         {
            "function_id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
            "device_class_id":"dc1",
            "aspect_id":"a1"
         }
      ]
   },
   {
      "id":"2",
      "filter_interaction":"event",
      "filter_protocols":null,
      "criteria":[
         {
            "function_id":"https://senergy.infai.org/ontology/MeasuringFunction_1",
            "device_class_id":"dc1",
            "aspect_id":"a1"
         }
      ]
   }
]

response:

[
   {
      "id":"1",
      "name":"1",
      "device_type_id":"dt1",
      "permissions":{
         "r":true,
         "w":false,
         "x":true,
         "a":false
      },
      "shared":false,
      "creator":""
   }
]

Completed Services

by default the '/selectables' and '/bulk/selectables' endpoints return the services as known by the semantic repository. For completed services the query-parameter 'complete_services' can be set to true. In this case the additional field servicePathOptions is returned for each selectable.

examples:

GET /selectables?complete_services=true&function_id=someId1&aspect_id=someOtherId
POST /bulk/selectables/combined/devices?complete_services=true
...

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL