{"action":"created","comment":{"url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/comments/33798346","id":33798346,"diff_hunk":"@@ -968,87 +964,119 @@ Value gettradessince_MP(const Array& params, bool fHelp)\n   return response;\n }\n \n-Value getopenorders_MP(const Array& params, bool fHelp)\n-{\n-   if (fHelp)\n-        throw runtime_error(\n-            \"getorderbook_MP\\n\"\n-            \"\\nAllows user to request active order information from the order book\\n\"\n-            \n-            \"\\nArguments:\\n\"\n-            \"1. property_id1            (int, required) amount owned to up on sale\\n\"\n-            \"2. property_id2         (int, optional) property owned to put up on sale\\n\"\n-            \n-            \"\\nResult:\\n\"\n-            \"[                (array of string)\\n\"\n-            \"  \\\"hash\\\"         (string) Transaction id\\n\"            \n-            \"  ,...\\n\"\n-            \"]\\n\"\n-\n-            \"\\nbExamples\\n\"\n-            //+ HelpExampleCli(\"trade_MP\", \"50\", \"3\", \"500\", \"5\" )\n-            //+ HelpExampleRpc(\"trade_MP\", \"50\", \"3\", \"500\", \"5\" )\n-        );\n-  return \"\\nNot Implemented\";\n-}\n-\n-Value gettradehistory_MP(const Array& params, bool fHelp)\n+/* TODO: point for discussion - \"trade history\" is ambiguous; providing trade history for a\n+ * pair is likely to be more useful than trade history for an address.  Regardless the existing\n+ * function did neither (only showing open trades, not trade history) so has been rewritten.\n+ *\n+ * Perhaps consider renaming this to gettradehistoryforaddress_OMNI to match existing naming\n+ * (eg getallbalancesforaddress_MP) then look at addition of new gettradehistoryforpair_OMNI\n+ * call.\n+ */\n+Value gettradehistoryforaddress_OMNI(const Array& params, bool fHelp)\n {\n-   if (fHelp || params.size() < 1)\n+    if (fHelp || params.size() < 1 || params.size() > 3)\n         throw runtime_error(\n             \"gettradehistory_MP\\n\"\n-            \"\\nAllows user to retreive trade history for some address on the Metadex\\n\"\n-            \n+            \"\\nAllows user to retrieve MetaDEx trade history for the supplied address\\n\"\n             \"\\nArguments:\\n\"\n-            \"1. address          (string, required) address to query history on\\n\"\n-            \"2. number            (int, optional ) number of trades to retreive\\n\"\n-            \"3. property_id         (int, optional) filter by propertyid on one side\\n\"\n+            \"1. address          (string, required) address to retrieve history for\\n\"\n+            \"2. count            (int, optional) number of trades to retrieve (default: 10)\\n\"\n+            \"3. propertyid       (int, optional) filter by propertyid transacted\\n\"\n         );\n \n-  string address = params[0].get_str();\n-  unsigned int number_trades = (params.size() == 2 ? (unsigned int) params[1].get_int64() : 512);\n-  unsigned int propertyIdFilter = 0;\n+    Array response;\n+\n+    string address = params[0].get_str();\n+    int64_t count = 10;\n+    if (params.size() > 1) {\n+        count = params[1].get_int64();\n+        if (count < 1) // TODO: do we need a maximum here?\n+            throw JSONRPCError(RPC_INVALID_PARAMETER, \"Invalid value for count parameter\");\n+    }\n+    uint32_t propertyId = 0;\n+    if (params.size() > 2) {\n+        int64_t tmpPropertyId = params[2].get_int64();\n+        if (tmpPropertyId < 1 || tmpPropertyId > 4294967295) // not safe to do conversion\n+            throw JSONRPCError(RPC_INVALID_PARAMETER, \"Invalid property identifier\");\n+        propertyId = boost::lexical_cast<uint32_t>(tmpPropertyId);\n+        CMPSPInfo::Entry sp;\n+        if (false == _my_sps->getSP(propertyId, sp))\n+            throw JSONRPCError(RPC_INVALID_PARAMETER, \"Property identifier does not exist\");\n+    }\n \n-  bool filter_by_one = (params.size() == 3) ? true : false;\n+    // to provide a proper trade history for an address we must utilize a two part methodology:\n+    // 1) check the metadex maps for open trades\n+    // 2) check the trades database for closed trades\n+\n+    // vector vecTransactions will hold the txids from both stage 1 and stage 2 to avoid duplicates\n+    std::vector<uint256> vecTransactions;\n+\n+    // stage 1\n+    for (md_PropertiesMap::iterator my_it = metadex.begin(); my_it != metadex.end(); ++my_it) {\n+        md_PricesMap & prices = my_it->second;\n+        for (md_PricesMap::iterator it = prices.begin(); it != prices.end(); ++it) {\n+            md_Set & indexes = (it->second);\n+            for (md_Set::iterator it = indexes.begin(); it != indexes.end(); ++it) {\n+                CMPMetaDEx obj = *it;\n+                if (obj.getAddr() == address) {\n+                    if (propertyId != 0 && propertyId != obj.getProperty() && propertyId != obj.getDesProperty()) continue;\n+                    vecTransactions.push_back(obj.getHash());\n+                }\n+            }\n+        }\n+    }\n \n-  if( filter_by_one ) {\n-    propertyIdFilter = check_prop_valid( params[2].get_int64() , \"Invalid property identifier (Sale)\", \"Property identifier does not exist (Sale)\"); \n-  }\n-  \n-  std::vector<CMPMetaDEx> vMetaDexObjects;\n+    // stage 2\n+    t_tradelistdb->getTradesForAddress(address, &vecTransactions, propertyId);\n \n-  {\n-  LOCK(cs_tally);\n+    // populate\n+    for(std::vector<uint256>::iterator it = vecTransactions.begin(); it != vecTransactions.end(); ++it) {\n+        Object txobj;\n+        int populateResult = populateRPCTransactionObject(*it, txobj, \"\", true);\n+        if (0 == populateResult) response.push_back(txobj);\n+    }\n \n-  for (md_PropertiesMap::iterator my_it = metadex.begin(); my_it != metadex.end(); ++my_it)\n-  {\n-    md_PricesMap & prices = my_it->second;\n-    for (md_PricesMap::iterator it = prices.begin(); it != prices.end(); ++it)\n-    {\n-      md_Set & indexes = (it->second);\n-      for (md_Set::iterator it = indexes.begin(); it != indexes.end(); ++it)\n-      {\n-          CMPMetaDEx obj = *it;\n+    // TODO: sort response array on confirmations attribute and crop response to (count) most recent transactions\n+    return response;\n+}\n \n-          bool filter = 1;\n+Value gettradehistoryforpair_OMNI(const Array& params, bool fHelp)\n+{\n+    if (fHelp || params.size() < 1 || params.size() > 3)\n+        throw runtime_error(\n+            \"gettradehistory_MP\\n\"\n+            \"\\nAllows user to retrieve MetaDEx trade history for the specified market\\n\"\n+            \"\\nArguments:\\n\"\n+            \"1. propertyid           (int, required) the first side of the pair\\n\"\n+            \"2. propertyid           (int, required) the second side of the pair\\n\"\n+            \"3. count                (int, optional) number of trades to retrieve (default: 10)\\n\"\n+        );\n \n-          //this filter, the first part is filtering by two currencies, the second part is filtering by the first only\n-          filter = (obj.getAddr() == address) && \n-                   ( ( ( filter_by_one && (obj.getProperty() == propertyIdFilter) == 1 ) ) || !filter_by_one ) && \n-                   (vMetaDexObjects.size() < number_trades);\n-          if ( filter ) {\n-            vMetaDexObjects.push_back(obj);\n-          }\n-      }\n-    }\n-  }\n+    Array response;\n \n-  }\n+    // obtain property identifiers for pair & check valid parameters\n+    uint32_t propertyIdSideA = 0, propertyIdSideB = 0;\n+    int64_t tmpPropertyIdSideA = params[0].get_int64();\n+    int64_t tmpPropertyIdSideB = params[1].get_int64();\n+    if (tmpPropertyIdSideA < 1 || tmpPropertyIdSideA > 4294967295 || tmpPropertyIdSideB < 1 || tmpPropertyIdSideB > 4294967295)\n+         throw JSONRPCError(RPC_INVALID_PARAMETER, \"Invalid property identifier\");\n+    propertyIdSideA = boost::lexical_cast<uint32_t>(tmpPropertyIdSideA);\n+    propertyIdSideB = boost::lexical_cast<uint32_t>(tmpPropertyIdSideB);\n+    if (!_my_sps->hasSP(propertyIdSideA) || !_my_sps->hasSP(propertyIdSideB))\n+        throw JSONRPCError(RPC_INVALID_PARAMETER, \"Property identifier does not exist\");\n+    if ((propertyIdSideA != 1 && propertyIdSideA != 2 && propertyIdSideB != 1 && propertyIdSideB != 2) || propertyIdSideA == propertyIdSideB)\n+        throw JSONRPCError(RPC_INVALID_PARAMETER, \"Invalid trade pair\");\n+\n+    // obtain count parameter if supplied\n+    int64_t count = 10;\n+    if (params.size() > 2) count = params[2].get_int64();\n+    if (count < 1) // TODO: do we need a maximum here?\n+        throw JSONRPCError(RPC_INVALID_PARAMETER, \"Invalid value for count parameter\");\n+\n+    // metadex maps are irrelevant for this call, we are looking for completed trades which are stored in tradelistdb\n+    t_tradelistdb->getTradesForPair(propertyIdSideA, propertyIdSideB, response);","path":"src/omnicore/rpc.cpp","position":334,"original_position":334,"commit_id":"3b54b3dd3977b57e02268dcfab1b23b06b426cf3","original_commit_id":"3b54b3dd3977b57e02268dcfab1b23b06b426cf3","user":{"login":"dexX7","id":5836089,"avatar_url":"https://avatars.githubusercontent.com/u/5836089?v=3","gravatar_id":"","url":"https://api.github.com/users/dexX7","html_url":"https://github.com/dexX7","followers_url":"https://api.github.com/users/dexX7/followers","following_url":"https://api.github.com/users/dexX7/following{/other_user}","gists_url":"https://api.github.com/users/dexX7/gists{/gist_id}","starred_url":"https://api.github.com/users/dexX7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dexX7/subscriptions","organizations_url":"https://api.github.com/users/dexX7/orgs","repos_url":"https://api.github.com/users/dexX7/repos","events_url":"https://api.github.com/users/dexX7/events{/privacy}","received_events_url":"https://api.github.com/users/dexX7/received_events","type":"User","site_admin":false},"body":"```c++\r\n{\r\n    LOCK(cs_tally):\r\n    t_tradelistdb->getTradesForPair(propertyIdSideA, propertyIdSideB, response);\r\n}\r\n```\r\n\r\nOther than that, the `threadSafe` flag for this call can also be removed in `rpcserver.cpp`.","created_at":"2015-07-02T16:52:00Z","updated_at":"2015-07-02T16:52:00Z","html_url":"https://github.com/OmniLayer/omnicore/pull/105#discussion_r33798346","pull_request_url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105","_links":{"self":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/comments/33798346"},"html":{"href":"https://github.com/OmniLayer/omnicore/pull/105#discussion_r33798346"},"pull_request":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105"}}},"pull_request":{"url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105","id":38837885,"html_url":"https://github.com/OmniLayer/omnicore/pull/105","diff_url":"https://github.com/OmniLayer/omnicore/pull/105.diff","patch_url":"https://github.com/OmniLayer/omnicore/pull/105.patch","issue_url":"https://api.github.com/repos/OmniLayer/omnicore/issues/105","number":105,"state":"open","locked":false,"title":"0.0.10 RPC changes","user":{"login":"zathras-crypto","id":5633351,"avatar_url":"https://avatars.githubusercontent.com/u/5633351?v=3","gravatar_id":"","url":"https://api.github.com/users/zathras-crypto","html_url":"https://github.com/zathras-crypto","followers_url":"https://api.github.com/users/zathras-crypto/followers","following_url":"https://api.github.com/users/zathras-crypto/following{/other_user}","gists_url":"https://api.github.com/users/zathras-crypto/gists{/gist_id}","starred_url":"https://api.github.com/users/zathras-crypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zathras-crypto/subscriptions","organizations_url":"https://api.github.com/users/zathras-crypto/orgs","repos_url":"https://api.github.com/users/zathras-crypto/repos","events_url":"https://api.github.com/users/zathras-crypto/events{/privacy}","received_events_url":"https://api.github.com/users/zathras-crypto/received_events","type":"User","site_admin":false},"body":"Primarily brings in the new RPC population function to centralize data retrieval.  \r\n\r\nWIP.","created_at":"2015-06-30T02:47:06Z","updated_at":"2015-07-02T16:52:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e5a0bc844c8486576ac4a1bce794e8b1c2522b60","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105/commits","review_comments_url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105/comments","review_comment_url":"https://api.github.com/repos/OmniLayer/omnicore/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OmniLayer/omnicore/issues/105/comments","statuses_url":"https://api.github.com/repos/OmniLayer/omnicore/statuses/3b54b3dd3977b57e02268dcfab1b23b06b426cf3","head":{"label":"zathras-crypto:0.0.10-Z-MetaDExRPC","ref":"0.0.10-Z-MetaDExRPC","sha":"3b54b3dd3977b57e02268dcfab1b23b06b426cf3","user":{"login":"zathras-crypto","id":5633351,"avatar_url":"https://avatars.githubusercontent.com/u/5633351?v=3","gravatar_id":"","url":"https://api.github.com/users/zathras-crypto","html_url":"https://github.com/zathras-crypto","followers_url":"https://api.github.com/users/zathras-crypto/followers","following_url":"https://api.github.com/users/zathras-crypto/following{/other_user}","gists_url":"https://api.github.com/users/zathras-crypto/gists{/gist_id}","starred_url":"https://api.github.com/users/zathras-crypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zathras-crypto/subscriptions","organizations_url":"https://api.github.com/users/zathras-crypto/orgs","repos_url":"https://api.github.com/users/zathras-crypto/repos","events_url":"https://api.github.com/users/zathras-crypto/events{/privacy}","received_events_url":"https://api.github.com/users/zathras-crypto/received_events","type":"User","site_admin":false},"repo":{"id":19960841,"name":"omnicore","full_name":"zathras-crypto/omnicore","owner":{"login":"zathras-crypto","id":5633351,"avatar_url":"https://avatars.githubusercontent.com/u/5633351?v=3","gravatar_id":"","url":"https://api.github.com/users/zathras-crypto","html_url":"https://github.com/zathras-crypto","followers_url":"https://api.github.com/users/zathras-crypto/followers","following_url":"https://api.github.com/users/zathras-crypto/following{/other_user}","gists_url":"https://api.github.com/users/zathras-crypto/gists{/gist_id}","starred_url":"https://api.github.com/users/zathras-crypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zathras-crypto/subscriptions","organizations_url":"https://api.github.com/users/zathras-crypto/orgs","repos_url":"https://api.github.com/users/zathras-crypto/repos","events_url":"https://api.github.com/users/zathras-crypto/events{/privacy}","received_events_url":"https://api.github.com/users/zathras-crypto/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zathras-crypto/omnicore","description":"mastercore info","fork":true,"url":"https://api.github.com/repos/zathras-crypto/omnicore","forks_url":"https://api.github.com/repos/zathras-crypto/omnicore/forks","keys_url":"https://api.github.com/repos/zathras-crypto/omnicore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zathras-crypto/omnicore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zathras-crypto/omnicore/teams","hooks_url":"https://api.github.com/repos/zathras-crypto/omnicore/hooks","issue_events_url":"https://api.github.com/repos/zathras-crypto/omnicore/issues/events{/number}","events_url":"https://api.github.com/repos/zathras-crypto/omnicore/events","assignees_url":"https://api.github.com/repos/zathras-crypto/omnicore/assignees{/user}","branches_url":"https://api.github.com/repos/zathras-crypto/omnicore/branches{/branch}","tags_url":"https://api.github.com/repos/zathras-crypto/omnicore/tags","blobs_url":"https://api.github.com/repos/zathras-crypto/omnicore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zathras-crypto/omnicore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zathras-crypto/omnicore/git/refs{/sha}","trees_url":"https://api.github.com/repos/zathras-crypto/omnicore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zathras-crypto/omnicore/statuses/{sha}","languages_url":"https://api.github.com/repos/zathras-crypto/omnicore/languages","stargazers_url":"https://api.github.com/repos/zathras-crypto/omnicore/stargazers","contributors_url":"https://api.github.com/repos/zathras-crypto/omnicore/contributors","subscribers_url":"https://api.github.com/repos/zathras-crypto/omnicore/subscribers","subscription_url":"https://api.github.com/repos/zathras-crypto/omnicore/subscription","commits_url":"https://api.github.com/repos/zathras-crypto/omnicore/commits{/sha}","git_commits_url":"https://api.github.com/repos/zathras-crypto/omnicore/git/commits{/sha}","comments_url":"https://api.github.com/repos/zathras-crypto/omnicore/comments{/number}","issue_comment_url":"https://api.github.com/repos/zathras-crypto/omnicore/issues/comments{/number}","contents_url":"https://api.github.com/repos/zathras-crypto/omnicore/contents/{+path}","compare_url":"https://api.github.com/repos/zathras-crypto/omnicore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zathras-crypto/omnicore/merges","archive_url":"https://api.github.com/repos/zathras-crypto/omnicore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zathras-crypto/omnicore/downloads","issues_url":"https://api.github.com/repos/zathras-crypto/omnicore/issues{/number}","pulls_url":"https://api.github.com/repos/zathras-crypto/omnicore/pulls{/number}","milestones_url":"https://api.github.com/repos/zathras-crypto/omnicore/milestones{/number}","notifications_url":"https://api.github.com/repos/zathras-crypto/omnicore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zathras-crypto/omnicore/labels{/name}","releases_url":"https://api.github.com/repos/zathras-crypto/omnicore/releases{/id}","created_at":"2014-05-19T23:15:09Z","updated_at":"2015-05-18T06:43:01Z","pushed_at":"2015-07-02T09:40:14Z","git_url":"git://github.com/zathras-crypto/omnicore.git","ssh_url":"git@github.com:zathras-crypto/omnicore.git","clone_url":"https://github.com/zathras-crypto/omnicore.git","svn_url":"https://github.com/zathras-crypto/omnicore","homepage":"mastercoin.org","size":53846,"stargazers_count":1,"watchers_count":1,"language":"TypeScript","has_issues":true,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":9,"forks":0,"open_issues":9,"watchers":1,"default_branch":"0.0.8-Z-UIAlpha"}},"base":{"label":"OmniLayer:omnicore-0.0.10","ref":"omnicore-0.0.10","sha":"968eb67041340acd7f1969eae9aa4205692afc6c","user":{"login":"OmniLayer","id":10849356,"avatar_url":"https://avatars.githubusercontent.com/u/10849356?v=3","gravatar_id":"","url":"https://api.github.com/users/OmniLayer","html_url":"https://github.com/OmniLayer","followers_url":"https://api.github.com/users/OmniLayer/followers","following_url":"https://api.github.com/users/OmniLayer/following{/other_user}","gists_url":"https://api.github.com/users/OmniLayer/gists{/gist_id}","starred_url":"https://api.github.com/users/OmniLayer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OmniLayer/subscriptions","organizations_url":"https://api.github.com/users/OmniLayer/orgs","repos_url":"https://api.github.com/users/OmniLayer/repos","events_url":"https://api.github.com/users/OmniLayer/events{/privacy}","received_events_url":"https://api.github.com/users/OmniLayer/received_events","type":"Organization","site_admin":false},"repo":{"id":32829630,"name":"omnicore","full_name":"OmniLayer/omnicore","owner":{"login":"OmniLayer","id":10849356,"avatar_url":"https://avatars.githubusercontent.com/u/10849356?v=3","gravatar_id":"","url":"https://api.github.com/users/OmniLayer","html_url":"https://github.com/OmniLayer","followers_url":"https://api.github.com/users/OmniLayer/followers","following_url":"https://api.github.com/users/OmniLayer/following{/other_user}","gists_url":"https://api.github.com/users/OmniLayer/gists{/gist_id}","starred_url":"https://api.github.com/users/OmniLayer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OmniLayer/subscriptions","organizations_url":"https://api.github.com/users/OmniLayer/orgs","repos_url":"https://api.github.com/users/OmniLayer/repos","events_url":"https://api.github.com/users/OmniLayer/events{/privacy}","received_events_url":"https://api.github.com/users/OmniLayer/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OmniLayer/omnicore","description":"OmniCore staging tree","fork":true,"url":"https://api.github.com/repos/OmniLayer/omnicore","forks_url":"https://api.github.com/repos/OmniLayer/omnicore/forks","keys_url":"https://api.github.com/repos/OmniLayer/omnicore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OmniLayer/omnicore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OmniLayer/omnicore/teams","hooks_url":"https://api.github.com/repos/OmniLayer/omnicore/hooks","issue_events_url":"https://api.github.com/repos/OmniLayer/omnicore/issues/events{/number}","events_url":"https://api.github.com/repos/OmniLayer/omnicore/events","assignees_url":"https://api.github.com/repos/OmniLayer/omnicore/assignees{/user}","branches_url":"https://api.github.com/repos/OmniLayer/omnicore/branches{/branch}","tags_url":"https://api.github.com/repos/OmniLayer/omnicore/tags","blobs_url":"https://api.github.com/repos/OmniLayer/omnicore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OmniLayer/omnicore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OmniLayer/omnicore/git/refs{/sha}","trees_url":"https://api.github.com/repos/OmniLayer/omnicore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OmniLayer/omnicore/statuses/{sha}","languages_url":"https://api.github.com/repos/OmniLayer/omnicore/languages","stargazers_url":"https://api.github.com/repos/OmniLayer/omnicore/stargazers","contributors_url":"https://api.github.com/repos/OmniLayer/omnicore/contributors","subscribers_url":"https://api.github.com/repos/OmniLayer/omnicore/subscribers","subscription_url":"https://api.github.com/repos/OmniLayer/omnicore/subscription","commits_url":"https://api.github.com/repos/OmniLayer/omnicore/commits{/sha}","git_commits_url":"https://api.github.com/repos/OmniLayer/omnicore/git/commits{/sha}","comments_url":"https://api.github.com/repos/OmniLayer/omnicore/comments{/number}","issue_comment_url":"https://api.github.com/repos/OmniLayer/omnicore/issues/comments{/number}","contents_url":"https://api.github.com/repos/OmniLayer/omnicore/contents/{+path}","compare_url":"https://api.github.com/repos/OmniLayer/omnicore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OmniLayer/omnicore/merges","archive_url":"https://api.github.com/repos/OmniLayer/omnicore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OmniLayer/omnicore/downloads","issues_url":"https://api.github.com/repos/OmniLayer/omnicore/issues{/number}","pulls_url":"https://api.github.com/repos/OmniLayer/omnicore/pulls{/number}","milestones_url":"https://api.github.com/repos/OmniLayer/omnicore/milestones{/number}","notifications_url":"https://api.github.com/repos/OmniLayer/omnicore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OmniLayer/omnicore/labels{/name}","releases_url":"https://api.github.com/repos/OmniLayer/omnicore/releases{/id}","created_at":"2015-03-24T22:48:50Z","updated_at":"2015-05-23T07:04:18Z","pushed_at":"2015-07-02T13:45:06Z","git_url":"git://github.com/OmniLayer/omnicore.git","ssh_url":"git@github.com:OmniLayer/omnicore.git","clone_url":"https://github.com/OmniLayer/omnicore.git","svn_url":"https://github.com/OmniLayer/omnicore","homepage":"http://www.omnilayer.org/","size":43658,"stargazers_count":3,"watchers_count":3,"language":"C++","has_issues":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":22,"forks":0,"open_issues":22,"watchers":3,"default_branch":"omnicore-0.0.10"}},"_links":{"self":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105"},"html":{"href":"https://github.com/OmniLayer/omnicore/pull/105"},"issue":{"href":"https://api.github.com/repos/OmniLayer/omnicore/issues/105"},"comments":{"href":"https://api.github.com/repos/OmniLayer/omnicore/issues/105/comments"},"review_comments":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105/comments"},"review_comment":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OmniLayer/omnicore/pulls/105/commits"},"statuses":{"href":"https://api.github.com/repos/OmniLayer/omnicore/statuses/3b54b3dd3977b57e02268dcfab1b23b06b426cf3"}}}}