{"id":69311,"date":"2015-09-10T13:42:17","date_gmt":"2015-09-10T13:42:17","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\/"},"modified":"2018-03-26T21:06:34","modified_gmt":"2018-03-26T21:06:34","slug":"quartz-architecture-deep-dive","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive","title":{"rendered":"Quartz Architecture Deep Dive"},"author":6371,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[],"tags":[23451,28511],"industry":[],"product":[],"class_list":["post-69311","blog","type-blog","status-publish","format-standard","hentry","tag-arcgis-runtime","tag-quartz"],"acf":{"short_description":"As we said in the Quartz intro post, the Quartz release of ArcGIS Runtime is a significant release.\u00a0 You will see many new APIs that wil...","flexible_content":[{"acf_fc_layout":"content","content":"<p>As we said in the Quartz intro post, the Quartz release of ArcGIS Runtime is a significant release.\u00a0 You will see many new APIs that will allow you to build amazing Apps for your users on a wide variety of devices.\u00a0\u00a0 This posts takes a look under the hood to highlight some of the architectural changes present within the runtime.\u00a0\u00a0 While you, as a user of a runtime API, do not need to know about these details, we are after all builders and if you\u2019re like me you love to understand what makes something tick, so let\u2019s take a look at the internal architecture of the runtime at Quartz.<\/p>\n<p>The ArcGIS Runtime\u2019s architecture is design to fully exploit the capabilities of the platforms it runs on and the APIs that you code against are designed to integrate seamlessly with the other native APIs that you use on these platforms.\u00a0\u00a0 This is a challenge, but by combing native C++ code with platform specific API code it has been possible to achieve.<\/p>\n<p>The diagram below is a high level overview of the ArcGIS Runtime\u2019s architecture.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-54259\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/Diagram-11.png\" alt=\"\" width=\"437\" height=\"319\" \/><\/p>\n<p>The C++ runtime core is compiled natively on each platform and therefore offers the best possible performance.\u00a0\u00a0 It full utilizes the hardware of the platform including the GPU to ensure high performance both for map display and analytical calculations, all while being as efficient as possible on battery usage.\u00a0\u00a0 The C++ core is not exposed directly to you but via APIs specifically built for each platform.\u00a0\u00a0 These APIs are designed to ensure that they expose the full capabilities of the core.<\/p>\n<p>The initial releases of the ArcGIS Runtime were primarily focused on providing a high performance mapping engine for the display of content delivered to the client via web services and to provide a native client side API for working with remote GIS services, such as geocoding, routing and analysis.\u00a0\u00a0 These web services are typically implemented using ArcGIS Server, ArcGIS Online or when running on a desktop ArcGIS Runtime\u2019s Local Server.<\/p>\n<p>With the 10.2.3 release of ArcGIS Runtime the C++ runtime core grew significantly in terms of the GIS functionality that it supported.\u00a0\u00a0\u00a0 At 10.2.3 local data management was added with the development of the runtime geodatabase (managed in a SQLite database).\u00a0 The runtime geodatabase supports the simple feature model and enables you to build sophisticated editing solutions that can optionally sync changes back to feature services.\u00a0\u00a0 In addition, the ability to find directions and address based on local content was also introduced.\u00a0\u00a0 These additions to the runtime have allowed you to build many kinds of apps that function fully disconnected from, fully connected to, and partially connect to the internet.<\/p>\n<p>The 10.2.3 release heralded a new era for you as ArcGIS app developers who need to build sophisticated apps that required mapping and GIS technology.\u00a0\u00a0\u00a0\u00a0 In the past your only choice was to use ArcGIS Engine running on Windows and Linux desktops.\u00a0\u00a0\u00a0 At 10.2.3 ArcGIS Runtime made this type of app development possible on all the supported ArcGIS Runtime platforms.\u00a0\u00a0 Over the last year subsequent releases continued to add more capabilities, however, as many of you will have seen these capabilities have not been available on all platforms.<\/p>\n<p><strong>Evolving the ArcGIS Runtime Architecture<\/strong><\/p>\n<p>The Quartz release will be the largest release in terms of new capabilities that the runtime has seen.\u00a0 New layer types, more renderers and symbols, support for reading and writing web maps, 3D, local vector and raster layer support and GPU based spatial analysis are all included.<\/p>\n<p>All this new functionality means there are many new APIs for you to use.\u00a0\u00a0 It also means some changes to existing APIs to accommodate a number of fundamentally new concepts.<\/p>\n<p>Here is a diagram that shows the 10.2 API Architecture<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/Diagram-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/Diagram-2.png\" alt=\"\" width=\"437\" height=\"208\" \/><\/a><\/p>\n<p>As discussed earlier, the native APIs wrap the functionality of the C++ runtime core.\u00a0\u00a0\u00a0 In order to achieve this there is a certain amount of interop code required.\u00a0\u00a0\u00a0 Some of this interop code is mandated by the technologies at play, for example, in the case of Java and Android; Java Native Interface (JNI) code is required to enable Java to call into the C++ runtime core.\u00a0\u00a0 Some platform APIs do not require this interop layer, for example, the Objective C used by iOS and OS X APIs allows for direct calling of C++ code.\u00a0\u00a0 Even in these cases where direct calls are possible it is not simply a matter of exposing the C++ runtime core API to you as it has many concepts important to the implementation of the core, but not important to you as a consumer.<\/p>\n<p>These API interops are designed and built for each specific native API, and while that allows for an API that looks and feels like all the other native APIs for a specific platform, it also allows for differences to creep into the Runtime APIs.\u00a0 Those of you who have developed for more than one runtime API are only too aware of these differences.\u00a0\u00a0\u00a0 Differences due to platform design patterns are acceptable, however, differences in logical model caused by 2 different designers implementing the same API on a different platform are not.<\/p>\n<p>Over the last several releases the runtime\u2019s architecture has evolved.\u00a0\u00a0 It has adapted to new platforms, exposed new ArcGIS capabilities and it has moved on from being a pure web service client to a powerful GIS runtime capable of performing many operations solely on the device .\u00a0 All this has been achieved by modifying and growing the existing architecture, and while this has been done successfully the process has exposed limitations, both internally to the architecture as well as externally to API consumers.<\/p>\n<p><strong>Quartz API Architecture <\/strong><\/p>\n<p>As stated earlier the Quartz release is a large functional release for the runtime resulting in many new APIs.\u00a0\u00a0 Because of this and the fact that we knew of architectural limitations with the 10.2 architecture the Quartz release will see a new internal architecture.\u00a0\u00a0\u00a0 There are many benefits to this new architecture but 4 will be obvious to you as consumers of an API; API consistency in terms of its logical model and behavior, higher quality, improved performance and the delivery of functionality on all platforms in a more synchronized way. \u00a0 While some interop code is required to enable cross-architecture calls the goal of the new architecture is to keep API specific interop code to a minimum.\u00a0\u00a0 In order to achieve this we have created a new internal common API for the runtime core illustrated in the diagram below.<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/Diagram-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-54262\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/Diagram-3.png\" alt=\"\" width=\"437\" height=\"248\" \/><\/a>This common API encapsulates the implementation that maps the public API\u2019s logical model to the runtime core\u2019s implementation.\u00a0\u00a0 Since this is now in one place all the APIs share the same logical model with the same behavior.\u00a0\u00a0 It also ensures that the API specific interop code (shown in green in the diagram above) is kept to a minimum.\u00a0\u00a0 This means that there is less duplicated code across the APIs, which in turn improves quality and means that new functionality can be rolled out across all the APIs in a more consistent way.<\/p>\n<p>Despite this new architecture differences between the APIs still do exist, but these differences are minimal and caused by the specific platform\u2019s architecture and capabilities; after all it is important that this is not a generic least common denominator API.<\/p>\n<p>The API teams have taken great care to ensure that the common conceptual model of the runtime common API is exposed to you on your platform of choice using appropriate design patterns that will feel natural for you.<\/p>\n<p><strong>Impact of New Architecture on Existing APIs<\/strong><\/p>\n<p>As discussed above there are significant advantages to this new architecture, however, there is a cost in terms of API changes from 10.2.6; due to the API harmonization.\u00a0\u00a0 Not every API has changed, but there are changes to the Mapping, Geometry and Portal APIs.\u00a0\u00a0 These changes will be covered in detail in subsequent articles.<\/p>\n<p>No one likes change for change sake, but we feel that the architectural changes we have made at Quartz have significant benefit and are worth the effort, and as we roll out the Quartz release we are confident that you will agree.<\/p>\n"}],"authors":[{"ID":6371,"user_firstname":"Euan","user_lastname":"Cameron","nickname":"euan","user_nicename":"euan","display_name":"Euan Cameron","user_email":"ecameron@esri.com","user_url":"","user_registered":"2018-03-02 00:18:19","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}]},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Quartz Architecture Deep Dive<\/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.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quartz Architecture Deep Dive\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-26T21:06:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\"},\"author\":{\"name\":\"Euan Cameron\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a2c55c4f13cbdcc6d26daf7946cf0c8b\"},\"headline\":\"Quartz Architecture Deep Dive\",\"datePublished\":\"2015-09-10T13:42:17+00:00\",\"dateModified\":\"2018-03-26T21:06:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\"},\"wordCount\":4,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS Runtime\",\"Quartz\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\",\"name\":\"Quartz Architecture Deep Dive\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2015-09-10T13:42:17+00:00\",\"dateModified\":\"2018-03-26T21:06:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quartz Architecture Deep Dive\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a2c55c4f13cbdcc6d26daf7946cf0c8b\",\"name\":\"Euan Cameron\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=96&d=blank&r=g\",\"caption\":\"Euan Cameron\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Quartz Architecture Deep Dive","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.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive","og_locale":"en_US","og_type":"article","og_title":"Quartz Architecture Deep Dive","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-03-26T21:06:34+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive"},"author":{"name":"Euan Cameron","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a2c55c4f13cbdcc6d26daf7946cf0c8b"},"headline":"Quartz Architecture Deep Dive","datePublished":"2015-09-10T13:42:17+00:00","dateModified":"2018-03-26T21:06:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive"},"wordCount":4,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS Runtime","Quartz"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive","name":"Quartz Architecture Deep Dive","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2015-09-10T13:42:17+00:00","dateModified":"2018-03-26T21:06:34+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/quartz-architecture-deep-dive#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Quartz Architecture Deep Dive"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/a2c55c4f13cbdcc6d26daf7946cf0c8b","name":"Euan Cameron","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9251f8aa06d31df1b8163c84dbe345cb3a680101f67092473b349208d0e7a56c?s=96&d=blank&r=g","caption":"Euan Cameron"},"url":""}]}},"text_date":"September 10, 2015","author_name":"Euan Cameron","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":false,"tag_data":[{"term_id":23451,"name":"ArcGIS Runtime","slug":"arcgis-runtime","term_group":0,"term_taxonomy_id":23451,"taxonomy":"post_tag","description":"","parent":0,"count":91,"filter":"raw"},{"term_id":28511,"name":"Quartz","slug":"quartz","term_group":0,"term_taxonomy_id":28511,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"}],"category_data":[],"product_data":[],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/69311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/6371"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=69311"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/69311\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=69311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=69311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=69311"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=69311"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=69311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}