{"id":19723,"date":"2016-04-28T21:58:15","date_gmt":"2016-04-28T18:58:15","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=19723"},"modified":"2018-08-01T17:13:44","modified_gmt":"2018-08-01T14:13:44","slug":"collecting-time-series-data-with-predix-a-golang-api-wrapper-included","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/","title":{"rendered":"Collecting Time-Series Data with Predix (a Golang API Wrapper Included)"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/predix-time-series-demo.png\" alt=\"predix-time-series-demo\" width=\"170\" style=\"margin: 0px 0px 0px 15px;\" class=\"alignright size-full wp-image-19734\" \/><\/p>\n<p>Recently, we\u2019ve created a wrapper to provide a more convenient way to interact with the <a href=\"https:\/\/www.predix.io\/docs\/#mnlfuvZz\" target=\"_blank\">Time Series<\/a> service from Go. In this post, we show how to work with the <a href=\"https:\/\/www.predix.io\/api#!\/Time_Series\" target=\"_blank\">Predix Time Series API<\/a> using <a href=\"https:\/\/github.com\/Altoros\/go-predix-timeseries\" target=\"_blank\">our Go library<\/a>. <\/p>\n<p>A demo application that we will deploy to Predix consists of two parts:<\/p>\n<ul>\n<li>a &#8220;sensor&#8221; pushing time-series data<\/li>\n<li>a web application reading the data from the Time Series service and visualizing it<\/li>\n<\/ul>\n<p>The source code for the application is available in <a href=\"https:\/\/github.com\/Altoros\/go-predix-timeseries\/tree\/master\/examples\/go-predix-timeseries-demo\/\" target=\"_blank\">this GitHub repository<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Prerequisites\" >Prerequisites<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Getting_code_and_creating_an_application_in_Predix\" >Getting code and creating an application in Predix<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Setting_up_services\" >Setting up services<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Creating_ingest_and_query_clients\" >Creating ingest and query clients<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Pushing_time-series_data\" >Pushing time-series data<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#Futher_reading\" >Futher reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To get started with the Time Series service, make sure you have the following:<\/p>\n<ul>\n<li>a Predix account<\/li>\n<li>the Cloud Foundry CLI<\/li>\n<li>the Cloud Foundry UAA CLI<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Getting_code_and_creating_an_application_in_Predix\"><\/span>Getting code and creating an application in Predix<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Clone the following repository and go to the demo application directory:<\/p>\n<pre style=\"padding-left: 30px;\"><code>git clone https:\/\/github.com\/Altoros\/go-predix-timeseries.git\r\ncd go-predix-timeseries\/examples\/go-predix-timeseries-demo\/\r\ncf push APP_NAME # This will create an application in Predix.<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Setting_up_services\"><\/span>Setting up services<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Then, create a UAA service instance and bind it to your application:<\/p>\n<pre style=\"padding-left: 30px;\"><code>cf create-service predix-uaa Tiered go-predix-timeseries-demo-uaa -c '{\"adminClientSecret\":\"<secret>\"}'\r\ncf bind-service APP_NAME go-predix-timeseries-demo-uaa<\/secret><\/code><\/pre>\n<p>Create and bind the Time Series service:<\/p>\n<pre style=\"padding-left: 30px;\"><code>cf create-service predix-timeseries Bronze go-predix-timeseries-demo-ts -c '{\"trustedIssuerIds\":[\"<issuerid of UAA service>\"]}'\r\ncf bind-service APP_NAME go-predix-timeseries-demo-ts<\/issuerid><\/code><\/pre>\n<p><\/p>\n<p>You can find <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">issuerId<\/code> in the output of the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">cf env APP_NAME<\/code> command:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/predix-time-series-credentials.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/predix-time-series-credentials.png\" alt=\"predix-time-series-credentials\" width=\"640\" class=\"aligncenter size-full wp-image-19733\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Creating_ingest_and_query_clients\"><\/span>Creating ingest and query clients<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Now, we need to create ingest and query clients in our UAA service with appropriate authorities. To find the required authorities, type the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">cf env APP_NAME<\/code> command and look for the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">zone-token-scopes<\/code> fields in <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">credentials<\/code> of the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">predix-timeseries<\/code> service:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/go-predix-time-series-demo.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/go-predix-time-series-demo.png\" alt=\"go-predix-time-series-demo\" width=\"640\" class=\"aligncenter size-full wp-image-19732\" \/><\/a><\/p>\n<p>To create the clients, we will use <a href=\"https:\/\/github.com\/cloudfoundry\/cf-uaac\" target=\"_blank\">uaac<\/a>:<\/p>\n<pre style=\"padding-left: 30px;\"><code>uaac target UAA_uri\r\nuaac token client get admin\r\nuaac client add ingest --authorized_grant_types client_credentials --authorities \"timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.user,timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.ingest\"\r\nuaac client add query --authorized_grant_types client_credentials --authorities \"timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.user,timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.query\"<\/code><\/pre>\n<p>Now, set the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CLIENT_ID<\/code> and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CLIENT_SECRET<\/code> environment variables and restage the application to ensure the environment variable changes take effect:<\/p>\n<pre style=\"padding-left: 30px;\"><code>cf set-env go-predix-timeseries-demo CLIENT_ID query\r\ncf set-env go-predix-timeseries-demo CLIENT_SECRET <secret_for_query_client>\r\ncf restage APP_NAME<\/secret_for_query_client><\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pushing_time-series_data\"><\/span>Pushing time-series data<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Run the &#8220;sensor&#8221; to start pushing time-series data:<\/p>\n<pre style=\"padding-left: 30px;\"><code>cd sensor\r\ngo run sensor.go -clientId=ingest -clientSecret=<secrer_for_ingest_client> -ingestUrl=\"ingest_url\" -uaaIssuerId=\"uaa_IssuerId\" -zoneId=\"zone_id\"<\/secrer_for_ingest_client><\/code><\/pre>\n<p>Look for the ingest URL and zone ID (the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">uri<\/code> and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">zone-http-header-value<\/code> fields) in the Time Series credentials:<\/p>\n<pre style=\"padding-left: 30px;\"><code>\"ingest\": {\r\n    \"uri\": \"wss:\/\/gateway-predix-data-services.run.aws-usw02-pr.ice.predix.io\/v1\/stream\/messages\",\r\n    \"zone-http-header-name\": \"Predix-Zone-Id\",\r\n    \"zone-http-header-value\": \"bfdd9bb0-0b0f-4667-8338-18b048c8ce31\",\r\n    \"zone-token-scopes\": [\r\n      \"timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.user\",\r\n      \"timeseries.zones.bfdd9bb0-0b0f-4667-8338-18b048c8ce31.ingest\"\r\n    ]\r\n  }<\/code><\/pre>\n<p>Now you can open the web application in a browser and see it populating data.<\/p>\n<p>The Time Series service enables you to quickly and efficiently ingest, store, and analyze time-series data. Our library, in its turn, provides an easy way to work with Time Series from Go.<\/p>\n<p><small><a href=\"https:\/\/github.com\/Altoros\/go-predix-timeseries\" target=\"_blank\">Go API Wrapper&#8217;s GitHub repo<\/a> | <a href=\"https:\/\/github.com\/Altoros\/go-predix-timeseries\/tree\/master\/examples\/go-predix-timeseries-demo\" target=\"_blank\">The demo app&#8217;s GitHub repo<\/a><\/small><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Futher_reading\"><\/span>Futher reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/introducing-cloud-foundry-cli-plugin-for-managing-predix-analytics-catalog\/\">Introducing Cloud Foundry CLI Plugin for Managing Predix Analytics Catalog<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/introducing-a-one-click-button-for-deploying-to-ge-predix\/\">Introducing a One-Click Button for Deploying to GE Predix<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<\/p>\n<p>Recently, we\u2019ve created a wrapper to provide a more convenient way to interact with the Time Series service from Go. In this post, we show how to work with the Predix Time Series API using our Go library. <\/p>\n<p>A demo application that we will deploy to Predix consists of two [&#8230;]<\/p>\n","protected":false},"author":90,"featured_media":33775,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,117,647],"class_list":["post-19723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-iot","tag-predix"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros<\/title>\n<meta name=\"description\" content=\"We&#039;re introducing a wrapper enabling successful API queries to return native Go structs that can be used immediately, with no need for type assertions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros\" \/>\n<meta property=\"og:description\" content=\"Recently, we\u2019ve created a wrapper to provide a more convenient way to interact with the Time Series service from Go. In this post, we show how to work with the Predix Time Series API using our Go library. A demo application that we will deploy to Predix consists of two [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-28T18:58:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-01T14:13:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Stas Turlo\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stas Turlo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/\",\"name\":\"Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif\",\"datePublished\":\"2016-04-28T18:58:15+00:00\",\"dateModified\":\"2018-08-01T14:13:44+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11d47ed3fb77ea65d2dd1af0af17f1f1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Collecting Time-Series Data with Predix (a Golang API Wrapper Included)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11d47ed3fb77ea65d2dd1af0af17f1f1\",\"name\":\"Stas Turlo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Turlo_Stanislav.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Turlo_Stanislav.png\",\"caption\":\"Stas Turlo\"},\"description\":\"Stas Turlo is a software engineer at Altoros. He has 10+ years of experience in reverse engineering, object-oriented programming, cloud computing, and data analysis. His expertise includes reconstructing algorithms, file formats, and structures of binary data. Using Golang and Ruby as his primary tools, Stas is also proficient in Python, C \/ C++, and C#. You can find Stas on GitHub.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/s-turlo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros","description":"We're introducing a wrapper enabling successful API queries to return native Go structs that can be used immediately, with no need for type assertions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/","og_locale":"en_US","og_type":"article","og_title":"Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros","og_description":"Recently, we\u2019ve created a wrapper to provide a more convenient way to interact with the Time Series service from Go. In this post, we show how to work with the Predix Time Series API using our Go library. A demo application that we will deploy to Predix consists of two [...]","og_url":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/","og_site_name":"Altoros","article_published_time":"2016-04-28T18:58:15+00:00","article_modified_time":"2018-08-01T14:13:44+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif","type":"image\/gif"}],"author":"Stas Turlo","twitter_misc":{"Written by":"Stas Turlo","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/","url":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/","name":"Collecting Time-Series Data with Predix (a Golang API Wrapper Included) | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif","datePublished":"2016-04-28T18:58:15+00:00","dateModified":"2018-08-01T14:13:44+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11d47ed3fb77ea65d2dd1af0af17f1f1"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/04\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included-v3.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/collecting-time-series-data-with-predix-a-golang-api-wrapper-included\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Collecting Time-Series Data with Predix (a Golang API Wrapper Included)"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11d47ed3fb77ea65d2dd1af0af17f1f1","name":"Stas Turlo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Turlo_Stanislav.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Turlo_Stanislav.png","caption":"Stas Turlo"},"description":"Stas Turlo is a software engineer at Altoros. He has 10+ years of experience in reverse engineering, object-oriented programming, cloud computing, and data analysis. His expertise includes reconstructing algorithms, file formats, and structures of binary data. Using Golang and Ruby as his primary tools, Stas is also proficient in Python, C \/ C++, and C#. You can find Stas on GitHub.","url":"https:\/\/www.altoros.com\/blog\/author\/s-turlo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/19723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=19723"}],"version-history":[{"count":12,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/19723\/revisions"}],"predecessor-version":[{"id":33780,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/19723\/revisions\/33780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/33775"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=19723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=19723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=19723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}