{"action":"created","comment":{"url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/comments/29753196","id":29753196,"diff_hunk":"@@ -39,98 +41,165 @@ Current stable release is able to persist Orion context data in:\n * [CKAN](http://ckan.org/), an Open Data platform.\n * [MongoDB](https://www.mongodb.org/), the NoSQL document-oriented database.\n \n-Cygnus is a (conceptual) derivative work of [ngsi2cosmos](https://github.com/telefonicaid/fiware-livedemoapp/tree/master/package/ngsi2cosmos).\n+Cygnus is a (conceptual) derivative work of the deprecated [ngsi2cosmos](https://github.com/telefonicaid/fiware-livedemoapp/tree/master/package/ngsi2cosmos).\n \n [Top](#top)\n \n-##<a name=\"section2\"></a>Design\n+##<a name=\"section2\"></a>Design on top of Apache Flume\n \n All the details about Flume can be found at [flume.apache.org](http://flume.apache.org/), but, as a reminder, some concepts will be explained here:\n \n-* A Flume source is an agent gathering event data from the real source (Twitter stream, a notification system, etc.), either by polling the source or listening for incoming pushes of data. Gathered data is sent to a Flume channel.\n-* A Flume channel is a passive store (implemented by means of a file, memory, etc.) that holds the event until it is consumed by the Flume sink.\n-* A Flume sink connects with the final destination of the data (a local file, HDFS, a database, etc.), taking events from the channel and consuming them (processing and/or persisting it).\n+* A Flume **source** is an agent gathering event data from the real source (Twitter stream, a notification system, etc.), either by polling the source or listening for incoming pushes of data. Gathered data is sent to a Flume channel in the form of a Flume event (metadata headers + data body).\n+    * Certain sources behaviour is governed through Flume **handlers**.\n+    * Flume events may be transformed (by adding new metadata headers) or directly dropped by Flume **interceptors** before the events are put in the channel.\n+* A Flume **channel** is a passive store (implemented by means of a file, memory, etc.) that holds the event until it is consumed by the Flume sink.\n+* A Flume **sink** connects with the final destination of the data (a local file, HDFS, a database, etc.), taking events from the channel and consuming them (processing and/or persisting it).\n \n There exists a wide collection of already developed sources, channels and sinks. The Flume-based connector, also called Cygnus, development extends that collection by adding:\n \n-* **OrionRestHandler**. A custom HTTP source handler for the default HTTP source. The existing HTTP source behaviour can be governed depending on the request handler associated to it in the configuration. In this case, the custom handler takes care of the method, the target and the headers (specially the Content-Type one) within the request, cheking everything is according to the expected [request format](https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#ONCHANGE). This allows for a certain degree of control on the incoming data. The header inspection step allows for a content type identification as well by sending, together with the data, the Content-Type header.\n-* **OrionHDFSSink**. A custom sink that persists Orion content data in a HDFS deployment. There already exists a native Flume HDFS sink persisting each event in a new file, but this is not suitable for Cygnus. Within Cygnus, the data coming from Orion must be persisted in the Cosmos HDFS in the form of files (a file per entity) containing Json-like lines about the values such entity's attributes have had along time. Several HDFS backends can be used for the data persistence (WebHDFS, HttpFS, Infinity), all of them based on the native WebHDFS REST API from Hadoop.\n-* **OrionCKANSink**. A custom sink that persists Orion context data in CKAN server instances (see http://docs.ckan.org/en/latest/).\n-* **OrionMySQLSink**. A custom sink for persisting Orion context data in a MySQL server. Each user owns a database, and each entity is mapped to a table within that database. Tables contain rows about the values such entity's attributes have had along time.\n-* **OrionMongoSink**. A custom sink for persisting Orion context data in a MongoDB server. Each user owns a database, and each entity is mapped to a collection within that database. Collections contain documents about the values such entity's attributes have had along time.\n+* `OrionRestHandler`. A custom HTTP source handler for the default HTTP source. The existing HTTP source behaviour can be governed depending on the request handler associated to it in the configuration. In this case, the custom handler takes care of the method, the target and the headers (specially the Content-Type one) within the request, cheking everything is according to the expected [request format](https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#ONCHANGE). This allows for a certain degree of control on the incoming data. The header inspection step allows for a content type identification as well by sending, together with the data, the Content-Type header.\n+* `OrionHDFSSink`. A custom sink that persists Orion content data in a [HDFS](http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html) deployment under a HDFS path structure. There already exists a native Flume HDFS sink persisting each event in a new file, but this is not suitable for Cygnus. Check for specific details [here](doc/design/OrionHDFSSink.md).\n+* `OrionCKANSink`. A custom sink that persists Orion context data in [CKAN](http://ckan.org/) server instances under a organization, package, resource and Datastore structure. Check for specific details [here](doc/design/OrionCKANSink.md).\n+* `OrionMySQLSink`. A custom sink for persisting Orion context data in [MySQL](https://www.mysql.com/) server instances under a database and table structure. Check for specific details [here](doc/design/OrionMySQLSink.md).\n+* `OrionMongoSink`. A custom sink for persisting Orion context data in [MongoDB](https://www.mongodb.org/) server instances under a database and collection structure. Check for specific details [here](doc/design/OrionMongoSink.md).\n+* `DestinationExtractorInterceptor`. A custom Flume interceptor in charge of modifying the default behaviour of Cygnus when deciding the destination (HDFS file, MySQL table, CKAN resource or MongoDB collection) for the context data.\n \n-All these new components (OrionRestHandler, OrionHDFSSink, etc) are combined with other native ones included in Flume itself (e.g. HttpSource), with the purpose of implementing the following data flow:\n+All these new components (`OrionRestHandler`, `OrionHDFSSink`, etc) are combined with other native ones included in Flume itself (e.g. `HTTPSource` or `MemoryChannel`), with the purpose of implementing the following basic data flow:\n \n-1.  On behalf of Cygnus, subscribe to Orion for certain context information.\n-2.  Receive from Orion notifications about new update context data; this notification will be handled by the native HttpSource together with the custom OrionRestHandler.\n-3.  Translate the notification into the Flume event format, and put them into the different sink channels (native memory ones).\n-4.  For each enabled custom sink (OrionHDFSSink, OrionCKANSink, OrionMySQLSink, OrionMongoSink), get the Flume events from the sink channel and persist the data in the appropriate format.\n+1.  On behalf of Cygnus, subscribe to certain NGSI-like source (typically Orion Context Broker) for certain context information.\n+2.  Receive from the NGSI-like source notifications about new updated context data; this notification will be handled by the native `HttpSource` together with the custom `OrionRestHandler`.\n+3.  Translate the notification into the Flume event format (metadata headers + data body), and put them into the different sink channels, typically of type `MemoryChannel`.\n+4.  In the meantime, some interceptors such as the native `Timestamp` one or the custom `DestinationExtractorInterceptor` may modify the event before it is put in the channel or channels.\n+5.  For each enabled custom sink (`OrionHDFSSink`, `OrionCKANSink`, `OrionMySQLSink`, `OrionMongoSink`), get the Flume events from the sink channels and persist the data in the appropriate format.\n+\n+More complex architectures and data flows can be checked in the [architecture](doc/design/architecture.md) document.\n \n [Top](#top)\n \n-##<a name=\"section3\"></a>Functionality explained (Json notification example)\n+##<a name=\"section3\"></a>Data flow example\n+Next sections will consider an example NGSI entity called 'car1' of type 'car', with attributes 'speed' (type 'kmh') and 'oil_level' (type 'percentage'). Is not a goal for this document to show you how to define a NGSI entity nor how to create it in the most common NGSI source for Cygnus, Orion Context Broker. Please, refer to the [official Orion documentation](https://forge.fiware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#Entity_Creation) for more details.\n \n-Let's consider the following notification in Json format coming from an Orion Context Broker instance:\n+[Top](#top)\n \n-    POST http://localhost:1028/notify\n-    Content-Length: 492\n-    User-Agent: orion/0.9.0\n-    Host: localhost:1028\n-    Accept: application/xml, application/json\n-    Content-Type: application/json\n-    Fiware-Service: my-company-name\n-    Fiware-ServicePath: /workingrooms/floor4 \n-    \n+###<a name=\"section3.1\"></a>Subscription to the NGSI-like source\n+Cygnus takes advantage of the subscription-notification mechanism of NGSI. Specifically, Cygnus needs to be notified each time certain entity's attributes change, and in order to do that, Cygnus must subscribe to those entity's attribute changes.\n+\n+As long as the typical NGSI-like source is Orion Context Broker, you can make a subscription about the example NGSI entity ('car1' of type 'car') by using the `curl` command in this [way](https://forge.fi-ware.eu/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#ONCHANGE) (assuming Orion runs in localhost and listens on the TCP/1026 port):\n+\n+    (curl localhost:1026/v1/subscribeContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF\n     {\n-      \"subscriptionId\" : \"51c0ac9ed714fb3b37d7d5a8\",\n-      \"originator\" : \"localhost\",\n-      \"contextResponses\" : [\n-        {\n-          \"contextElement\" : {\n-            \"attributes\" : [\n-              {\n-                \"name\" : \"temperature\",\n-                \"type\" : \"centigrade\",\n-                \"value\" : \"26.5\",\n-                \"metadatas\": [\n-                  {\n-                     \"name\": \"ID\",\n-                     \"type\": \"string\",\n-                     \"value\": \"ground\"\n-                  }\n+        \"entities\": [\n+            {\n+                \"type\": \"car\",\n+                \"isPattern\": \"false\",\n+                \"id\": \"car1\"\n+            }\n+        ],\n+        \"attributes\": [\n+            \"speed\",\n+            \"oil_level\"\n+        ],\n+        \"reference\": \"http://localhost:5050/notify\",\n+        \"duration\": \"P1M\",\n+        \"notifyConditions\": [\n+            {\n+                \"type\": \"ONCHANGE\",\n+                \"condValues\": [\n+                    \"speed\"\n                 ]\n-              }\n-            ],\n-            \"type\" : \"Room\",\n-            \"isPattern\" : \"false\",\n-            \"id\" : \"Room1\"\n-          },\n-          \"statusCode\" : {\n-            \"code\" : \"200\",\n-            \"reasonPhrase\" : \"OK\"\n-          }\n-        }\n-      ]\n+            }\n+        ],\n+        \"throttling\": \"PT1S\"\n     }\n+    EOF\n+\n+Which means: <i>Each time the the 'car1' entity, of type 'car', changes its value of 'speed' send a notification to http://localhost:5050/notify (where Cygnus will be listening) with the 'speed' and 'oil_level' values. This subscription will have a duration of one month, and please, do not send me notifications more than one per second</i>.\n+\n+[Top](#top)\n \n-Such a notification is sent by Orion to the default Flume HTTP source, which relies on the developed OrionRestHandler for checking its validity (that it is a POST request, that the target is 'notify' and that the headers are OK), detecting the content type (that it is in Json format), extracting the data (the Json part) and finally creating a Flume event to be put in the channel:\n+###<a name=\"section3.2\"></a>NGSI notification reception\n+Let's supose the 'speed' of the 'car1' entity changes to '112.9'; then the following NGSI notification (or NGSI event) would be sent as a Http POST to the configured Cygnus listener, i.e. the native `HTTPSource` (the code below is an <i>object representation</i>, not any real data format):\n+\n+    ngsi-event={\n+        http-headers={\n+            Content-Length: 492\n+            User-Agent: orion/0.9.0\n+            Host: localhost:1028\n+            Accept: application/xml, application/json\n+            Content-Type: application/json\n+            Fiware-Service: vehicles\n+            Fiware-ServicePath: 4wheels ","path":"README.md","position":null,"original_position":199,"commit_id":"5b6a45eb7c12d4db2e56ac0147eb6851b51c3d97","original_commit_id":"6ff043118862ac67b64aafc17b99910ada2cda90","user":{"login":"frbattid","id":3865056,"avatar_url":"https://avatars.githubusercontent.com/u/3865056?v=3","gravatar_id":"","url":"https://api.github.com/users/frbattid","html_url":"https://github.com/frbattid","followers_url":"https://api.github.com/users/frbattid/followers","following_url":"https://api.github.com/users/frbattid/following{/other_user}","gists_url":"https://api.github.com/users/frbattid/gists{/gist_id}","starred_url":"https://api.github.com/users/frbattid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frbattid/subscriptions","organizations_url":"https://api.github.com/users/frbattid/orgs","repos_url":"https://api.github.com/users/frbattid/repos","events_url":"https://api.github.com/users/frbattid/events{/privacy}","received_events_url":"https://api.github.com/users/frbattid/received_events","type":"User","site_admin":false},"body":"Fixed in https://github.com/telefonicaid/fiware-cygnus/commit/5b6a45eb7c12d4db2e56ac0147eb6851b51c3d9","created_at":"2015-05-06T12:32:39Z","updated_at":"2015-05-06T12:32:39Z","html_url":"https://github.com/telefonicaid/fiware-cygnus/pull/376#discussion_r29753196","pull_request_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376","_links":{"self":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/comments/29753196"},"html":{"href":"https://github.com/telefonicaid/fiware-cygnus/pull/376#discussion_r29753196"},"pull_request":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376"}}},"pull_request":{"url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376","id":34343939,"html_url":"https://github.com/telefonicaid/fiware-cygnus/pull/376","diff_url":"https://github.com/telefonicaid/fiware-cygnus/pull/376.diff","patch_url":"https://github.com/telefonicaid/fiware-cygnus/pull/376.patch","issue_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/376","number":376,"state":"open","locked":false,"title":"hardening/322 _specific_sink_docs","user":{"login":"frbattid","id":3865056,"avatar_url":"https://avatars.githubusercontent.com/u/3865056?v=3","gravatar_id":"","url":"https://api.github.com/users/frbattid","html_url":"https://github.com/frbattid","followers_url":"https://api.github.com/users/frbattid/followers","following_url":"https://api.github.com/users/frbattid/following{/other_user}","gists_url":"https://api.github.com/users/frbattid/gists{/gist_id}","starred_url":"https://api.github.com/users/frbattid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frbattid/subscriptions","organizations_url":"https://api.github.com/users/frbattid/orgs","repos_url":"https://api.github.com/users/frbattid/repos","events_url":"https://api.github.com/users/frbattid/events{/privacy}","received_events_url":"https://api.github.com/users/frbattid/received_events","type":"User","site_admin":false},"body":"* Implements the issue #322\r\n* No unit tests required\r\n* No e2e tests required\r\n* Assignee @fgalan  but LGTM from @gtorodelvalle  is also required\r\n\r\n","created_at":"2015-04-29T09:01:06Z","updated_at":"2015-05-06T12:32:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e70c383a6adbc260864ee899011e4190155e8ede","assignee":{"login":"fgalan","id":1534240,"avatar_url":"https://avatars.githubusercontent.com/u/1534240?v=3","gravatar_id":"","url":"https://api.github.com/users/fgalan","html_url":"https://github.com/fgalan","followers_url":"https://api.github.com/users/fgalan/followers","following_url":"https://api.github.com/users/fgalan/following{/other_user}","gists_url":"https://api.github.com/users/fgalan/gists{/gist_id}","starred_url":"https://api.github.com/users/fgalan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fgalan/subscriptions","organizations_url":"https://api.github.com/users/fgalan/orgs","repos_url":"https://api.github.com/users/fgalan/repos","events_url":"https://api.github.com/users/fgalan/events{/privacy}","received_events_url":"https://api.github.com/users/fgalan/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376/commits","review_comments_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376/comments","review_comment_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/376/comments","statuses_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/statuses/5b6a45eb7c12d4db2e56ac0147eb6851b51c3d97","head":{"label":"telefonicaid:hardening/322_specific_sink_docs","ref":"hardening/322_specific_sink_docs","sha":"5b6a45eb7c12d4db2e56ac0147eb6851b51c3d97","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":16607947,"name":"fiware-cygnus","full_name":"telefonicaid/fiware-cygnus","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/fiware-cygnus","description":"FI-WARE connectors","fork":false,"url":"https://api.github.com/repos/telefonicaid/fiware-cygnus","forks_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/forks","keys_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/teams","hooks_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/hooks","issue_events_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/events{/number}","events_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/events","assignees_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/assignees{/user}","branches_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/branches{/branch}","tags_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/tags","blobs_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/refs{/sha}","trees_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/statuses/{sha}","languages_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/languages","stargazers_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/stargazers","contributors_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/contributors","subscribers_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/subscribers","subscription_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/subscription","commits_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/commits{/sha}","git_commits_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/commits{/sha}","comments_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/comments{/number}","issue_comment_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/comments{/number}","contents_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/contents/{+path}","compare_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/merges","archive_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/downloads","issues_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues{/number}","pulls_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls{/number}","milestones_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/milestones{/number}","notifications_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/labels{/name}","releases_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/releases{/id}","created_at":"2014-02-07T07:57:41Z","updated_at":"2015-04-16T22:19:21Z","pushed_at":"2015-05-06T11:22:15Z","git_url":"git://github.com/telefonicaid/fiware-cygnus.git","ssh_url":"git@github.com:telefonicaid/fiware-cygnus.git","clone_url":"https://github.com/telefonicaid/fiware-cygnus.git","svn_url":"https://github.com/telefonicaid/fiware-cygnus","homepage":"","size":94906,"stargazers_count":13,"watchers_count":13,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":41,"forks":9,"open_issues":41,"watchers":13,"default_branch":"master"}},"base":{"label":"telefonicaid:develop","ref":"develop","sha":"bd7f10765846357be28c5da37aebd1aaab0c95bd","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":16607947,"name":"fiware-cygnus","full_name":"telefonicaid/fiware-cygnus","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/fiware-cygnus","description":"FI-WARE connectors","fork":false,"url":"https://api.github.com/repos/telefonicaid/fiware-cygnus","forks_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/forks","keys_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/teams","hooks_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/hooks","issue_events_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/events{/number}","events_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/events","assignees_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/assignees{/user}","branches_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/branches{/branch}","tags_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/tags","blobs_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/refs{/sha}","trees_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/statuses/{sha}","languages_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/languages","stargazers_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/stargazers","contributors_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/contributors","subscribers_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/subscribers","subscription_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/subscription","commits_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/commits{/sha}","git_commits_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/git/commits{/sha}","comments_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/comments{/number}","issue_comment_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/comments{/number}","contents_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/contents/{+path}","compare_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/merges","archive_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/downloads","issues_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues{/number}","pulls_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls{/number}","milestones_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/milestones{/number}","notifications_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/labels{/name}","releases_url":"https://api.github.com/repos/telefonicaid/fiware-cygnus/releases{/id}","created_at":"2014-02-07T07:57:41Z","updated_at":"2015-04-16T22:19:21Z","pushed_at":"2015-05-06T11:22:15Z","git_url":"git://github.com/telefonicaid/fiware-cygnus.git","ssh_url":"git@github.com:telefonicaid/fiware-cygnus.git","clone_url":"https://github.com/telefonicaid/fiware-cygnus.git","svn_url":"https://github.com/telefonicaid/fiware-cygnus","homepage":"","size":94906,"stargazers_count":13,"watchers_count":13,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":41,"forks":9,"open_issues":41,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376"},"html":{"href":"https://github.com/telefonicaid/fiware-cygnus/pull/376"},"issue":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/376"},"comments":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/issues/376/comments"},"review_comments":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376/comments"},"review_comment":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/pulls/376/commits"},"statuses":{"href":"https://api.github.com/repos/telefonicaid/fiware-cygnus/statuses/5b6a45eb7c12d4db2e56ac0147eb6851b51c3d97"}}}}