{"id":6657,"date":"2014-11-12T13:04:05","date_gmt":"2014-11-12T11:04:05","guid":{"rendered":"http:\/\/blog.zhaw.ch\/icclab\/?p=6657"},"modified":"2015-01-27T11:09:49","modified_gmt":"2015-01-27T09:09:49","slug":"dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/","title":{"rendered":"Dynamic Rating, charging &amp; billing for cloud &#8211; a micro service perspective"},"content":{"rendered":"<p>Rating, Charging &amp; Billing (RCB) has been an ongoing <a href=\"http:\/\/blog.zhaw.ch\/icclab\/category\/research-approach\/themes\/rating-charging-billing\/\" target=\"_blank\">research initiative<\/a> from ICCLab. As part of this, a proof of concept (PoC) for OpenStack\u00a0has been\u00a0developed and <a href=\"https:\/\/github.com\/icclab\/cyclops-web\" target=\"_blank\">released <\/a>under Apache Licence v2.0. The PoC is a standalone application which can collect the resource usage data from <a href=\"https:\/\/wiki.openstack.org\/wiki\/Ceilometer\" target=\"_blank\">Ceilometer <\/a>for a certain time period interval, define a pricing function per user, determine the price for the resource used per user and eventually generate a bill and display it via\u00a0a PDF. This is demonstrated through a <a href=\"https:\/\/www.youtube.com\/watch?v=ZIwwVxqCio0\" target=\"_blank\">video<\/a>.<\/p>\n<p>Even though\u00a0the architecture used in PoC was able to demonstrate all the basic functionality of RCB, it was not extensible and not suitable for being deployed in the distributed environment. It was also observed that the data produced at different stages for RCB process had the\u00a0potential to\u00a0create a platform upon which other applications using them, could be built. With these drawbacks, an attempt has been made to redesign the architecture from a modular &amp; micro service perspective.<\/p>\n<p><strong>Architecture<\/strong><\/p>\n<p><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7226\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\" alt=\"CYCLOPS Architecture\" width=\"997\" height=\"640\" \/><\/a><\/p>\n<p>The new architecture has been split into multiple micro services consisting of User Data Records (UDR) Generator\u00a0\u03bc service, Rating &amp; Charging\u00a0\u03bc service, Billing\u00a0\u03bc service, Message broker\u00a0\u03bc service and authentication service.<\/p>\n<p><!--more--><\/p>\n<p><strong>User Data Records Micro Service (UDR)<\/strong><\/p>\n<p>The UDR service interfaces with the <a href=\"http:\/\/developer.openstack.org\/api-ref-telemetry-v2.html\" target=\"_blank\">Telemetry API<\/a> to get the resource usage data from many meters which ceilometer provides access to. Using the statistics API end point, relevant data is grouped by instances, user &amp; tenant and later transformed to be ultimately persisted\u00a0in a usage <a href=\"http:\/\/en.wikipedia.org\/wiki\/Time_series_database\" target=\"_blank\">time series database<\/a>. Each of the meters associated with the Ceilometer is mapped to a time series in the database. The whole process of data collection and persistence is triggered by a scheduler for defined time intervals. UDR service also opens up an API for an external SaaS application to send usage data, which could eventually be persisted along with the resource usage data and considered for billing.<\/p>\n<p>The aggregated data stored in the time series databases aides in performing further mathematical &amp; analytical operations. This data is eventually passed on the the rating &amp; charging micro service.<\/p>\n<p>UDR Service has been released under Apache License v2 and the source code is available on GitHub at\u00a0<a title=\"https:\/\/github.com\/icclab\/cyclops-udr\" href=\"https:\/\/github.com\/icclab\/cyclops-udr\" target=\"_blank\">https:\/\/github.com\/icclab\/cyclops-udr<\/a><\/p>\n<p><strong>Rating &amp; Charging Micro Service (RC)<\/strong><\/p>\n<p>The RC service consist of a rating engine which consolidates\u00a0various data to determine the rate for a resource. As a major input to the rating engine, RC service interfaces with the server monitoring software to get the server load data. Also through the engine, different policies set for certain conditions can be set.\u00a0As the rate determination is dependent on a number of external factors, this gives an opportunity to being in an element of dynamism into the process of determining the rate.<\/p>\n<p>The rate value determined by the rating engine is used to combine with the usage data to determine the pricing value. This is persisted in the pricing time series database before being used by the billing micro service.<\/p>\n<p><strong>Billing Micro Service<\/strong><\/p>\n<p>Once the pricing value is determined for the collective resource used by a user, final stage of the RCB is carried out. Billing service consist of a Billing engine which consumes the pricing data and calculates the final bill value to be paid by the user. The engine is again rule based and is influenced by the discounts, plans, offers, etc.. for determining the expense. This data is persisted in a billing time series database before an invoice is generated. It also is integrated with the payment gateway to provide the last mile connectivity in terms of completing the RCB process.<\/p>\n<p><strong>Subsidiary services<\/strong><\/p>\n<p>Message broker service and authentication services are the subsidiary service. The message broker is used by the external SaaS application to send the usage data which is then collected by the UDR service asynchronously. The authentication service provides the inter service authentication which transporting the data between the micro services. The data stored in the time series database is visualized using various dashboards.<\/p>\n<p>Currently, we are actively implementing\u00a0the above architecture and are at an advanced stage of completion of the UDR \u03bc Service. Outcomes of the implementation\u00a0phase will be shared in the future blog posts.<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/billing-for-cloud\/\">billing for cloud<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/dynamic-rating\/\">dynamic rating<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/micro-service\/\">micro service<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/rating-charging-billing-2\/\">rating charging billing<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Rating, Charging &amp; Billing (RCB) has been an ongoing research initiative from ICCLab. As part of this, a proof of concept (PoC) for OpenStack\u00a0has been\u00a0developed and released under Apache Licence v2.0. The PoC is a standalone application which can collect the resource usage data from Ceilometer for a certain time period interval, define a pricing [&hellip;]<\/p>\n","protected":false},"author":154,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[5,8],"tags":[507,506,508,505],"features":[],"class_list":["post-6657","post","type-post","status-publish","format-standard","hentry","category-articles","category-charging","tag-billing-for-cloud","tag-dynamic-rating","tag-micro-service","tag-rating-charging-billing-2"],"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>Dynamic Rating, charging &amp; billing for cloud - a micro service perspective - Service Engineering (ICCLab &amp; SPLab)<\/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:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dynamic Rating, charging &amp; billing for cloud - a micro service perspective\" \/>\n<meta property=\"og:description\" content=\"Rating, Charging &amp; Billing (RCB) has been an ongoing research initiative from ICCLab. As part of this, a proof of concept (PoC) for OpenStack\u00a0has been\u00a0developed and released under Apache Licence v2.0. The PoC is a standalone application which can collect the resource usage data from Ceilometer for a certain time period interval, define a pricing [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-12T11:04:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-01-27T09:09:49+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\" \/>\n<meta name=\"author\" content=\"Srikanta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Srikanta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\"},\"author\":{\"name\":\"Srikanta\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366\"},\"headline\":\"Dynamic Rating, charging &amp; billing for cloud &#8211; a micro service perspective\",\"datePublished\":\"2014-11-12T11:04:05+00:00\",\"dateModified\":\"2015-01-27T09:09:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\"},\"wordCount\":713,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\",\"keywords\":[\"billing for cloud\",\"dynamic rating\",\"micro service\",\"rating charging billing\"],\"articleSection\":[\"Articles\",\"Charging\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\",\"name\":\"Dynamic Rating, charging &amp; billing for cloud - a micro service perspective - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\",\"datePublished\":\"2014-11-12T11:04:05+00:00\",\"dateModified\":\"2015-01-27T09:09:49+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage\",\"url\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\",\"contentUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamic Rating, charging &amp; billing for cloud &#8211; a micro service perspective\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366\",\"name\":\"Srikanta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g\",\"caption\":\"Srikanta\"},\"sameAs\":[\"http:\/\/blog.zhaw.ch\/icclab\/srikanta-patanjali\/\"],\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/pata\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dynamic Rating, charging &amp; billing for cloud - a micro service perspective - Service Engineering (ICCLab &amp; SPLab)","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:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/","og_locale":"en_US","og_type":"article","og_title":"Dynamic Rating, charging &amp; billing for cloud - a micro service perspective","og_description":"Rating, Charging &amp; Billing (RCB) has been an ongoing research initiative from ICCLab. As part of this, a proof of concept (PoC) for OpenStack\u00a0has been\u00a0developed and released under Apache Licence v2.0. The PoC is a standalone application which can collect the resource usage data from Ceilometer for a certain time period interval, define a pricing [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2014-11-12T11:04:05+00:00","article_modified_time":"2015-01-27T09:09:49+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png","type":"","width":"","height":""}],"author":"Srikanta","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Srikanta","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/"},"author":{"name":"Srikanta","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366"},"headline":"Dynamic Rating, charging &amp; billing for cloud &#8211; a micro service perspective","datePublished":"2014-11-12T11:04:05+00:00","dateModified":"2015-01-27T09:09:49+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/"},"wordCount":713,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png","keywords":["billing for cloud","dynamic rating","micro service","rating charging billing"],"articleSection":["Articles","Charging"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/","url":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/","name":"Dynamic Rating, charging &amp; billing for cloud - a micro service perspective - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png","datePublished":"2014-11-12T11:04:05+00:00","dateModified":"2015-01-27T09:09:49+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#primaryimage","url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png","contentUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/01\/OverallArchitecture1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/dynamic-rating-charging-billing-for-cloud-a-micro-service-perspective\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Dynamic Rating, charging &amp; billing for cloud &#8211; a micro service perspective"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8feb47fae96794fd9ce51f2f37743366","name":"Srikanta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/11dd8240ec12d579ea92e86e94c1ea4996e0d6323ee4634859581e47a09f6ba1?s=96&d=mm&r=g","caption":"Srikanta"},"sameAs":["http:\/\/blog.zhaw.ch\/icclab\/srikanta-patanjali\/"],"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/pata\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/154"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=6657"}],"version-history":[{"count":14,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6657\/revisions"}],"predecessor-version":[{"id":7456,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/6657\/revisions\/7456"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=6657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=6657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=6657"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=6657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}