{"action":"created","comment":{"url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/comments/43737570","id":43737570,"diff_hunk":"@@ -0,0 +1,428 @@\n+# How to develop a new IOTAgent\n+\n+## Index\n+\n+* [Overview](#overview)\n+* [Basic IOTA](#basic)\n+* [IOTA With active attributes](#active)\n+* [IOTA With lazy attributes](#lazy)\n+* [IOTA With commands](#commands)\n+* [Configuration control](#configuration)\n+\n+## <a name=\"overview\"/> Overview\n+This document's goal is to show how to develop a new IOT Agent step by step. To do so, a simple invented HTTP protocol\n+will be used, so it can be tested with simple command line instructions as `curl` and `nc`. \n+\n+### Protocol\n+The invented protocol will be freely adapted from Ultralight 2.0. Whenever a device wants to send an update, it will\n+send a request as the following:\n+```\n+curl -X GET 'http://127.0.0.1:8080/iot/d?i=ULSensor&k=abc&d=t|15,l|19.6' -i\n+```\n+Where:\n+* **i**: is the device ID.\n+* **k**: the API Key for the device's service.\n+* **d**: the data payload, consisting of key/value pairs separated by a pipe ('|'), with each pair separated by comma (',');\n+\n+### Requirements\n+\n+This tutorial expects a Node.js v0.10 (at least) installed and working on your machine. It also expects you to have\n+access to a Context Broker (without any security proxies).\n+\n+## <a name=\"basic\"/> Basic IOTA\n+In this first chapter, we will develop an IOT Agent with a fully working northbound API and no southbound\n+API. This may seem useless (and indeed it is) but will serve us weel on showing the basic steps in the creation\n+of a IOTA.\n+ \n+First of all, we have to create the Node project. Create a folder to hold your project and type the following \n+instruction:\n+```\n+npm init\n+```\n+This will create the `package.json` file for our project. Now, add the following lines to your project file:\n+```\n+  \"dependencies\": {\n+    \"iotagent-node-lib\": \"*\"\n+  },\n+\n+```\n+\n+And install the dependencies, executing, as usual:\n+```\n+npm install\n+```\n+\n+Now we can begin with the code of our IOTA. The very minimum code we need to start a IOTA is the following:\n+```\n+var iotAgentLib = require('iotagent-node-lib'),\n+    config = require('./config');\n+\n+iotAgentLib.activate(config, function(error) {\n+  if (error) {\n+    console.log('There was an error activating the IOTA');\n+    process.exit(1);\n+  }\n+});\n+```\n+\n+The last step is to write a configuration file, that will be used to tune the behavior of our IOTA. The contents\n+can be copied from the `config-basic-example.js` file, in this same folder. Create a `config.js` file with it \n+in the root folder of your project. Remember to change the Context Broker IP to your local Context Broker.\n+\n+The IOTA is now ready to be used. Execute it with the following command:\n+```\n+node index.js\n+```\n+\n+The northbound interface should now be fully functional, i.e.: management of device registrations and configurations.\n+\n+## <a name=\"active\"/> IOTA With Active attributes\n+\n+In the previous section we created a IOTA that exposed just the Northbound interface, but that was pretty useless\n+(aside from its didactic use). In this section we are going to create a simple Southbound interface. It's important\n+to remark that the nature of the Southbound API itself has nothing to do with the creation process of an IoT Agent.\n+Each device protocol will use its own mechanisms and it is up to the IoTA developer to find any libraries that would \n+help him in its development. In this example, we will use Express as such library. \n+\n+In order to add the Express dependency to your project, add the following line to the `dependencies` section of the\n+`package.json`:\n+```\n+    \"express\": \"*\",\n+```\n+And install the dependencies as usual with `npm install`. You will have to require both `express` and `http` in\n+your code as well.\n+\n+Now, in order to accept connections in our code, we have to start express first. With this purpose in mind, we will\n+create a new functino `initSouthbound()`, that will be called from the initialization code of our IOTA:\n+```\n+function initSouthbound(callback) {\n+    southboundServer = {\n+        server: null,\n+        app: express(),\n+        router: express.Router()\n+    };\n+\n+    southboundServer.app.set('port', 8080);\n+    southboundServer.app.set('host', '0.0.0.0');\n+\n+    southboundServer.router.get('/iot/d', manageULRequest);\n+    southboundServer.server = http.createServer(southboundServer.app);\n+    southboundServer.app.use('/', southboundServer.router);\n+    southboundServer.server.listen(southboundServer.app.get('port'), southboundServer.app.get('host'), callback);\n+}\n+```\n+\n+This Express code set up a HTTP server, listening in the 8080 port, that will handle incoming requests targeting \n+path `/iot/d` using the middleware `manageULRequest()`. This middleware will contain all the Southbound logic, and \n+the library methods we need in order to progress the information to the Context Broker. The code of this middleware\n+would be as follows:\n+\n+```\n+function manageULRequest(req, res, next) {\n+    var values;\n+\n+    iotAgentLib.getDevice(req.query.i, function(error, device) {\n+        if (error) {\n+            res.status(404).send({\n+                message: 'Couldn\\'t find the device: ' + JSON.stringify(error)\n+            });\n+        } else {\n+            values = parseUl(req.query.d, device);\n+            iotAgentLib.update(device.name, device.type, '', values, device, function(error) {\n+                if (error) {\n+                    res.status(500).send({\n+                        message: 'Error updating the device'\n+                   });\n+                } else {\n+                    res.status(200).send({\n+                        message: 'Device successfully updated'\n+                    });\n+                }        \n+            });\n+        }\n+    });  \n+}\n+```\n+\n+For this middleware we have made use of a function `parseUl()` that parses the data payload and transforms it \n+in the data map expected by the update function:\n+```\n+function parseUl(data, device) {\n+    function findType(name) {\n+        for (var i=0; i < device.active.length; i++) {\n+            if (device.active[i].name === name) {\n+                return device.active[i].type;\n+            }\n+        }\n+\n+        return null;\n+    }\n+\n+    function createAttribute(element) {\n+        var pair = element.split('|'),\n+            attribute = {\n+                name: pair[0],\n+                value: pair[1],\n+                type: findType(pair[0])\n+            };\n+        \n+        return attribute;\n+    }\n+    \n+    return data.split(\",\").map(createAttribute);\n+}\n+```\n+\n+The last thing to do is to invoke the initialization function inside the IOTA startup function. The next excerpt\n+show the modifications in the `activate()` function:\n+```","path":"doc/howto.md","position":178,"original_position":178,"commit_id":"4f927d1fe307229a13a09053be3c32ed5113906d","original_commit_id":"4fdf5d01b58908ab891899f0911248aaac78ee37","user":{"login":"gtorodelvalle","id":667284,"avatar_url":"https://avatars.githubusercontent.com/u/667284?v=3","gravatar_id":"","url":"https://api.github.com/users/gtorodelvalle","html_url":"https://github.com/gtorodelvalle","followers_url":"https://api.github.com/users/gtorodelvalle/followers","following_url":"https://api.github.com/users/gtorodelvalle/following{/other_user}","gists_url":"https://api.github.com/users/gtorodelvalle/gists{/gist_id}","starred_url":"https://api.github.com/users/gtorodelvalle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gtorodelvalle/subscriptions","organizations_url":"https://api.github.com/users/gtorodelvalle/orgs","repos_url":"https://api.github.com/users/gtorodelvalle/repos","events_url":"https://api.github.com/users/gtorodelvalle/events{/privacy}","received_events_url":"https://api.github.com/users/gtorodelvalle/received_events","type":"User","site_admin":false},"body":"For better syntax highlighting maybe you would like to use ````javascript` instead... :) Please, feel free to ignore this comment... :)","created_at":"2015-11-03T11:25:27Z","updated_at":"2015-11-03T11:25:27Z","html_url":"https://github.com/telefonicaid/iotagent-node-lib/pull/177#discussion_r43737570","pull_request_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177","_links":{"self":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/comments/43737570"},"html":{"href":"https://github.com/telefonicaid/iotagent-node-lib/pull/177#discussion_r43737570"},"pull_request":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177"}}},"pull_request":{"url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177","id":49542091,"html_url":"https://github.com/telefonicaid/iotagent-node-lib/pull/177","diff_url":"https://github.com/telefonicaid/iotagent-node-lib/pull/177.diff","patch_url":"https://github.com/telefonicaid/iotagent-node-lib/pull/177.patch","issue_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/177","number":177,"state":"open","locked":false,"title":"IoT Agent creation Howto","user":{"login":"dmoranj","id":1152892,"avatar_url":"https://avatars.githubusercontent.com/u/1152892?v=3","gravatar_id":"","url":"https://api.github.com/users/dmoranj","html_url":"https://github.com/dmoranj","followers_url":"https://api.github.com/users/dmoranj/followers","following_url":"https://api.github.com/users/dmoranj/following{/other_user}","gists_url":"https://api.github.com/users/dmoranj/gists{/gist_id}","starred_url":"https://api.github.com/users/dmoranj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmoranj/subscriptions","organizations_url":"https://api.github.com/users/dmoranj/orgs","repos_url":"https://api.github.com/users/dmoranj/repos","events_url":"https://api.github.com/users/dmoranj/events{/privacy}","received_events_url":"https://api.github.com/users/dmoranj/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-11-03T11:01:06Z","updated_at":"2015-11-03T11:25:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"42f1972e3b36d34efcaad29ba428e33d0df2abd9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177/commits","review_comments_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177/comments","review_comment_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/comments{/number}","comments_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/177/comments","statuses_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/statuses/4f927d1fe307229a13a09053be3c32ed5113906d","head":{"label":"telefonicaid:task/iotaHowto","ref":"task/iotaHowto","sha":"4f927d1fe307229a13a09053be3c32ed5113906d","user":{"login":"telefonicaid","id":968363,"avatar_url":"https://avatars.githubusercontent.com/u/968363?v=3","gravatar_id":"","url":"https://api.github.com/users/telefonicaid","html_url":"https://github.com/telefonicaid","followers_url":"https://api.github.com/users/telefonicaid/followers","following_url":"https://api.github.com/users/telefonicaid/following{/other_user}","gists_url":"https://api.github.com/users/telefonicaid/gists{/gist_id}","starred_url":"https://api.github.com/users/telefonicaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/telefonicaid/subscriptions","organizations_url":"https://api.github.com/users/telefonicaid/orgs","repos_url":"https://api.github.com/users/telefonicaid/repos","events_url":"https://api.github.com/users/telefonicaid/events{/privacy}","received_events_url":"https://api.github.com/users/telefonicaid/received_events","type":"Organization","site_admin":false},"repo":{"id":25203883,"name":"iotagent-node-lib","full_name":"telefonicaid/iotagent-node-lib","owner":{"login":"telefonicaid","id":968363,"avatar_url":"https://avatars.githubusercontent.com/u/968363?v=3","gravatar_id":"","url":"https://api.github.com/users/telefonicaid","html_url":"https://github.com/telefonicaid","followers_url":"https://api.github.com/users/telefonicaid/followers","following_url":"https://api.github.com/users/telefonicaid/following{/other_user}","gists_url":"https://api.github.com/users/telefonicaid/gists{/gist_id}","starred_url":"https://api.github.com/users/telefonicaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/telefonicaid/subscriptions","organizations_url":"https://api.github.com/users/telefonicaid/orgs","repos_url":"https://api.github.com/users/telefonicaid/repos","events_url":"https://api.github.com/users/telefonicaid/events{/privacy}","received_events_url":"https://api.github.com/users/telefonicaid/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/telefonicaid/iotagent-node-lib","description":"IoT Agent library to interface with NGSI Context Broker","fork":false,"url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib","forks_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/forks","keys_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/teams","hooks_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/hooks","issue_events_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/events{/number}","events_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/events","assignees_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/assignees{/user}","branches_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/branches{/branch}","tags_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/tags","blobs_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/refs{/sha}","trees_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/statuses/{sha}","languages_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/languages","stargazers_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/stargazers","contributors_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/contributors","subscribers_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/subscribers","subscription_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/subscription","commits_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/commits{/sha}","git_commits_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/commits{/sha}","comments_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/comments{/number}","issue_comment_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/comments{/number}","contents_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/contents/{+path}","compare_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/merges","archive_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/downloads","issues_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues{/number}","pulls_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls{/number}","milestones_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/milestones{/number}","notifications_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/labels{/name}","releases_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/releases{/id}","created_at":"2014-10-14T11:48:27Z","updated_at":"2015-10-30T13:16:22Z","pushed_at":"2015-11-03T11:21:29Z","git_url":"git://github.com/telefonicaid/iotagent-node-lib.git","ssh_url":"git@github.com:telefonicaid/iotagent-node-lib.git","clone_url":"https://github.com/telefonicaid/iotagent-node-lib.git","svn_url":"https://github.com/telefonicaid/iotagent-node-lib","homepage":null,"size":1808,"stargazers_count":12,"watchers_count":12,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":10,"forks":5,"open_issues":10,"watchers":12,"default_branch":"master"}},"base":{"label":"telefonicaid:develop","ref":"develop","sha":"c95c734cc1d0c47edd155dd7ac0b84e32e513abb","user":{"login":"telefonicaid","id":968363,"avatar_url":"https://avatars.githubusercontent.com/u/968363?v=3","gravatar_id":"","url":"https://api.github.com/users/telefonicaid","html_url":"https://github.com/telefonicaid","followers_url":"https://api.github.com/users/telefonicaid/followers","following_url":"https://api.github.com/users/telefonicaid/following{/other_user}","gists_url":"https://api.github.com/users/telefonicaid/gists{/gist_id}","starred_url":"https://api.github.com/users/telefonicaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/telefonicaid/subscriptions","organizations_url":"https://api.github.com/users/telefonicaid/orgs","repos_url":"https://api.github.com/users/telefonicaid/repos","events_url":"https://api.github.com/users/telefonicaid/events{/privacy}","received_events_url":"https://api.github.com/users/telefonicaid/received_events","type":"Organization","site_admin":false},"repo":{"id":25203883,"name":"iotagent-node-lib","full_name":"telefonicaid/iotagent-node-lib","owner":{"login":"telefonicaid","id":968363,"avatar_url":"https://avatars.githubusercontent.com/u/968363?v=3","gravatar_id":"","url":"https://api.github.com/users/telefonicaid","html_url":"https://github.com/telefonicaid","followers_url":"https://api.github.com/users/telefonicaid/followers","following_url":"https://api.github.com/users/telefonicaid/following{/other_user}","gists_url":"https://api.github.com/users/telefonicaid/gists{/gist_id}","starred_url":"https://api.github.com/users/telefonicaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/telefonicaid/subscriptions","organizations_url":"https://api.github.com/users/telefonicaid/orgs","repos_url":"https://api.github.com/users/telefonicaid/repos","events_url":"https://api.github.com/users/telefonicaid/events{/privacy}","received_events_url":"https://api.github.com/users/telefonicaid/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/telefonicaid/iotagent-node-lib","description":"IoT Agent library to interface with NGSI Context Broker","fork":false,"url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib","forks_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/forks","keys_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/teams","hooks_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/hooks","issue_events_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/events{/number}","events_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/events","assignees_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/assignees{/user}","branches_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/branches{/branch}","tags_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/tags","blobs_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/refs{/sha}","trees_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/statuses/{sha}","languages_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/languages","stargazers_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/stargazers","contributors_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/contributors","subscribers_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/subscribers","subscription_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/subscription","commits_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/commits{/sha}","git_commits_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/git/commits{/sha}","comments_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/comments{/number}","issue_comment_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/comments{/number}","contents_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/contents/{+path}","compare_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/merges","archive_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/downloads","issues_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues{/number}","pulls_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls{/number}","milestones_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/milestones{/number}","notifications_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/labels{/name}","releases_url":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/releases{/id}","created_at":"2014-10-14T11:48:27Z","updated_at":"2015-10-30T13:16:22Z","pushed_at":"2015-11-03T11:21:29Z","git_url":"git://github.com/telefonicaid/iotagent-node-lib.git","ssh_url":"git@github.com:telefonicaid/iotagent-node-lib.git","clone_url":"https://github.com/telefonicaid/iotagent-node-lib.git","svn_url":"https://github.com/telefonicaid/iotagent-node-lib","homepage":null,"size":1808,"stargazers_count":12,"watchers_count":12,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":10,"forks":5,"open_issues":10,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177"},"html":{"href":"https://github.com/telefonicaid/iotagent-node-lib/pull/177"},"issue":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/177"},"comments":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/issues/177/comments"},"review_comments":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177/comments"},"review_comment":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/pulls/177/commits"},"statuses":{"href":"https://api.github.com/repos/telefonicaid/iotagent-node-lib/statuses/4f927d1fe307229a13a09053be3c32ed5113906d"}}}}