{"id":14444,"date":"2020-07-21T08:29:45","date_gmt":"2020-07-21T06:29:45","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/"},"modified":"2020-07-21T08:29:45","modified_gmt":"2020-07-21T06:29:45","slug":"java-and-influxdb-http-api","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/","title":{"rendered":"Java and InfluxDB http api"},"content":{"rendered":"<h1>InfluxDB<\/h1>\n<p>InfluxDB is a powerfull open source time series database (TSDB) developped by InfluxData. It&#8217;s a database optimized for time-stamped or time series data. Time series data are simply measurements or events that are tracked.<br \/>\nIt is particully interresting for metric tracking like server cpu, ram, application performances and so on.<\/p>\n<p>It is similar to SQL databases but different in many ways. The key here is the time. The database engine is optimized for high ingest and data compression. It is wrtten in Go and compiles in one single binary without any dependencies.<br \/>\nWe can use it through a cli but the most interesting part is it&#8217;s HTTP API which will allow us to perform actions on the measurements without any third party api.<br \/>\nIt can be installed on a single server or in the cloud. It is highly compatible with Telegraf, a time series data collector, but we will discuss it on another blog.<\/p>\n<h1>Installation<\/h1>\n<p>I did the installation on a CentOS but it can be installed on other linux distributions, OS X and windows. You can download the rpm\/zip\/tar on the <a href=\"https:\/\/portal.influxdata.com\/downloads\/\">download page<\/a> or you can install it directly like following:<\/p>\n<p>Add the repo:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">cat &lt;&lt;EOF | sudo tee \/etc\/yum.repos.d\/influxdb.repo\n[influxdb]\nname = InfluxDB Repository - RHEL $releasever\nbaseurl = https:\/\/repos.influxdata.com\/rhel\/$releasever\/$basearch\/stable\nenabled = 1\ngpgcheck = 1\ngpgkey = https:\/\/repos.influxdata.com\/influxdb.key\nEOF<\/pre>\n<p>Ensure the cache is up to date:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">sudo yum makecache fast<\/pre>\n<p>Install the database, we install curl in order to test the HTTP API:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">sudo yum -y install influxdb vim curl<\/pre>\n<p>We enable the HTTP API:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">sudo vim \/etc\/influxdb\/influxdb.conf\n[http]\n  enabled = true\n  bind-address = \":8086\"\n  auth-enabled = true\n  log-enabled = true\n  write-tracing = false\n  pprof-enabled = true\n  pprof-auth-enabled = true\n  debug-pprof-enabled = false\n  ping-auth-enabled = true<\/pre>\n<p>We start and enable the service:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">sudo systemctl start influxdb &amp;&amp; sudo systemctl enable influxdb<\/pre>\n<p>We need to open the port used by InfluxDB:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">sudo firewall-cmd --add-port=8086\/tcp --permanent\nsudo firewall-cmd --reload<\/pre>\n<p>Now we create an admin account:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">curl -XPOST \"http:\/\/localhost:8086\/query\" --data-urlencode \"q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES\"<\/pre>\n<p>If the query executed correctly you shouldn&#8217;t have any response.<\/p>\n<p>You can now test your connection with the cli:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">influx -username 'username' -password 'password'<\/pre>\n<p>You can list the databases with:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">SHOW DATABASES<\/pre>\n<p>To create a database do the following:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">CREATE DATABASE mymetrics<\/pre>\n<p>And to navigate to your created DB:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">USE mymetrics<\/pre>\n<p>Once you&#8217;ll have some entries you will be able to list them like:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">SHOW MEASUREMENTS<\/pre>\n<p>And then you can execute basic SQL like queries (only when you have measurements):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">SELECT * FROM metric_cpu_load<\/pre>\n<p>&nbsp;<\/p>\n<h1>Measurements via Java<\/h1>\n<p>Now that we have our DB setup and a user to connect, we will generate measurements with Java. But you can do it with any HTTP request compatible languages. It exists a Java api to discuss with the database directly (<a href=\"https:\/\/github.com\/influxdata\/influxdb-java\">here<\/a>) but I wanted to do it through the HTTP API.<\/p>\n<p>You will need httpclient.jar and httpcore.jar from Apache Commons to use the latest http api. The version I used was:<\/p>\n<ul>\n<li>httpclient5-5.0.1.jar<\/li>\n<li>httpcore5-5.0.1.jar<\/li>\n<\/ul>\n<pre class=\"brush: java; gutter: true; first-line: 1\">String data = \"metric_cpu_load value=0.5\"\n\/\/ We create a default HTTP client\nHttpClient httpclient = HttpClients.createDefault();\n\/\/ We create the URI with all informations\nURI uri = new URIBuilder()\n        .setScheme(\"http\") \/\/ Can be https if ssl is enabled\n        .setHost(\"localhost\") \/\/ The hostname of the database\n        .setPort(8086) \/\/ Default InfluxDB port\n        .setPath(\"\/write\") \/\/ We call write to put data into the database\n        .setParameter(\"db\", \"mymetrics\") \/\/ The name of the database we created\n        .setParameter(\"u\", \"username\") \/\/ The username of the account we created\n        .setParameter(\"p\", \"password\") \/\/ The password of the account\n        .build();\nHttpPost httppost = new HttpPost(uri); \/\/ We create a POST request in order to add data\nStringEntity entity = new StringEntity(data, ContentType.create(\"plain\/text\")); \/\/ The metric name and value is set as the body of the post request\nhttppost.setEntity(entity); \/\/ We link the entity to the post request\nhttpclient.execute(httppost); \/\/ Executes the post request, the result is an HttpResponse object, if the query went well, you should have a code 204<\/pre>\n<p>InfluxDB stores measurements in &#8220;tables&#8221;. One measure type is a table, you can specify several columns in the table, but note that the &#8220;value&#8221; column is mandatory. Here is the explanation of the body of the post request:<\/p>\n<p>&#8220;table_name, col1=value1, col2=value2 value=value0 timestamp&#8221;<\/p>\n<ul>\n<li>table_name is the name of the metric, if the table doesn&#8217;t exist it will be created, if it exists, a new row will be add to this &#8220;table&#8221;<\/li>\n<li>colx are optionnal, they are tags or info that will specify this row, you can even have some rows with theses options while others don&#8217;t<\/li>\n<li>value is the mandatory field, it must be specified or the post request will fail<\/li>\n<li>timestamp is the timestamp of the row, you can specify it or remove it. If not specified, it will be set to the time when the row was added<\/li>\n<\/ul>\n<h1>Example<\/h1>\n<p>Here a simple example<\/p>\n<p>We register several values:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[POST] http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password\nBODY: \"metric_cpu_load,hostname=localhost value=0.1\"\n\n[POST] http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password\nBODY: \"metric_cpu_load,hostname=localhost  value=0.4\"\n\n[POST] http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password\nBODY: \"metric_cpu_load,hostname=localhost  value=0.8\"\n\n[POST] http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password\nBODY: \"metric_cpu_load,hostname=localhost  value=0.5\"<\/pre>\n<p>Or in CURL we create the DB if it doesn&#8217;t exist:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">curl -i -XPOST 'http:\/\/localhost:8086\/query?u=username&amp;p=password' --data-urlencode \"q=CREATE DATABASE mymetrics\" -&gt; returns code 200 OK\ncurl -i -XPOST 'http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password' --data-binary 'metric_cpu_load,hostname=localhost value=0.1' -&gt; returns 204 NO CONTENT\ncurl -i -XPOST 'http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password' --data-binary 'metric_cpu_load,hostname=localhost value=0.4'\ncurl -i -XPOST 'http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password' --data-binary 'metric_cpu_load,hostname=localhost value=0.8'\ncurl -i -XPOST 'http:\/\/localhost:8086\/write?db=mymetrics&amp;u=username&amp;p=password' --data-binary 'metric_cpu_load,hostname=localhost value=0.5'<\/pre>\n<p>Now you can see the result from the cli:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">influx -username 'username' -password 'password'\n\nConnected to http:\/\/localhost:8086 version 1.8.1\nInfluxDB shell version: 1.8.1\n\n&gt; SHOW DATABASES\nname: databases\nname\n----\n_internal\nmymetrics\n\n&gt; USE mymetrics\nUsing database mymetrics\n\n&gt; SHOW MEASUREMENTS\nname: measurements\nname\n----\nmetric_cpu_load\n\n&gt; SELECT * FROM metric_cpu_load\nname: metric_cpu_load\ntime                hostname  value\n----                --------  -----\n1595318363624096578 localhost 0.1\n1595318430152497136 localhost 0.4\n1595318433209434527 localhost 0.8\n1595318436384650878 localhost 0.5<\/pre>\n<p>We can also get it from HTTP:<\/p>\n<pre class=\"brush: xhtml; gutter: true; first-line: 1\">http:\/\/localhost:8086\/query?db=mymetrics&amp;u=username&amp;p=password&amp;q=select * from metric_cpu_load<\/pre>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">{\"results\":\n  [{\n    \"statement_id\":0,\n    \"series\":[{\n       \"name\":\"metric_cpu_load\",\n       \"columns\":[\"time\",\"hostname\",\"value\"],\n       \"values\":[\n           [\"2020-07-21T07:59:23.624096578Z\",\"localhost\",0.1],\n           [\"2020-07-21T08:00:30.152497136Z\",\"localhost\",0.4],\n           [\"2020-07-21T08:00:33.209434527Z\",\"localhost\",0.8],\n           [\"2020-07-21T08:00:36.384650878Z\",\"localhost\",0.5]]}]}]}<\/pre>\n<h1>Next steps<\/h1>\n<p>And now what? We have a time based database where we can list and add measurements through Java and CURL, what can we do with this?<\/p>\n<p>Next time we will see how to display the results in shiny graphs thanks to Grafana.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>InfluxDB InfluxDB is a powerfull open source time series database (TSDB) developped by InfluxData. It&#8217;s a database optimized for time-stamped or time series data. Time series data are simply measurements or events that are tracked. It is particully interresting for metric tracking like server cpu, ram, application performances and so on. It is similar to [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[],"type_dbi":[],"class_list":["post-14444","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Java and InfluxDB http api - dbi Blog<\/title>\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.dbi-services.com\/blog\/java-and-influxdb-http-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java and InfluxDB http api\" \/>\n<meta property=\"og:description\" content=\"InfluxDB InfluxDB is a powerfull open source time series database (TSDB) developped by InfluxData. It&#8217;s a database optimized for time-stamped or time series data. Time series data are simply measurements or events that are tracked. It is particully interresting for metric tracking like server cpu, ram, application performances and so on. It is similar to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-21T06:29:45+00:00\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"Java and InfluxDB http api\",\"datePublished\":\"2020-07-21T06:29:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\"},\"wordCount\":631,\"commentCount\":0,\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\",\"name\":\"Java and InfluxDB http api - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-07-21T06:29:45+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java and InfluxDB http api\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java and InfluxDB http api - dbi Blog","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.dbi-services.com\/blog\/java-and-influxdb-http-api\/","og_locale":"en_US","og_type":"article","og_title":"Java and InfluxDB http api","og_description":"InfluxDB InfluxDB is a powerfull open source time series database (TSDB) developped by InfluxData. It&#8217;s a database optimized for time-stamped or time series data. Time series data are simply measurements or events that are tracked. It is particully interresting for metric tracking like server cpu, ram, application performances and so on. It is similar to [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/","og_site_name":"dbi Blog","article_published_time":"2020-07-21T06:29:45+00:00","author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"Java and InfluxDB http api","datePublished":"2020-07-21T06:29:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/"},"wordCount":631,"commentCount":0,"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/","url":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/","name":"Java and InfluxDB http api - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-07-21T06:29:45+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/java-and-influxdb-http-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java and InfluxDB http api"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14444"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14444\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14444"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}