{"id":31791,"date":"2023-01-24T18:55:14","date_gmt":"2023-01-24T13:25:14","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/"},"modified":"2023-01-24T18:55:14","modified_gmt":"2023-01-24T13:25:14","slug":"solved-manipulating-the-ui-of-existing-native-applications-at-runtime","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/","title":{"rendered":"[Solved] Manipulating the UI of existing native applications at runtime"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-42946852\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"42946852\" data-parentid=\"42768195\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Disclaimer: since the question is very general, so is this answer.<\/p>\n<hr>\n<p>Let&#8217;s consider the example of the CyanogenMod (now retired&#8230;) Theme Engine. Here are some excerpets from an <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20161224202141\/https:\/\/www.cyanogenmod.org\/blog\/developer-blog-the-theme-engine\">article that described how it worked<\/a> (emphasis added here):<\/p>\n<blockquote>\n<p><em>At the most basic level, themes are simply a mechanism to allow <strong>resources to be replaced at runtime<\/strong> &#8230; just think of them as the elements which make up the application\u2019s UI.  Whenever an application is started, Android loads up the resources associated with that app and the application makes requests for these resources.<\/em><\/p>\n<\/blockquote>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\"><img decoding=\"async\" src=\"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\" alt=\"Normally...\"><\/a><\/p>\n<blockquote>\n<p><em>That\u2019s the normal flow of retrieving resources, but what happens when a theme is applied?  When the system loads the resources for the application, it checks if there is a theme applied and if there is, it adds the themed resources to the original resources.  This is the point at which the magic happens. <strong>When the app requests a resource<\/strong>, the system will check if there is a themed version of it and if so, <strong>returns the themed resource<\/strong>, and if not it simply returns the original. The key point here is the original resources are never modified\/moved\/altered, the system simply returns a resource from the theme instead of the original. As you can see in the diagram below, there is no difference as far as the application is concerned.<\/em><\/p>\n<\/blockquote>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/1674566714_847_Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\"><img decoding=\"async\" src=\"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/1674566714_847_Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\" alt=\"With a Theme present\"><\/a><\/p>\n<blockquote>\n<p><em>This is done by leveraging a framework known as Runtime Resource Overlays, which was contributed to <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20150111052744\/http:\/\/developer.sonymobile.com\/knowledge-base\/open-source\/open-devices\/\">AOSP by Sony in 2014<\/a>. Part of the RRO framework is a tool called IDMAP.  IDMAP inspects the resources in an application and compares the resource types and names to those in the themed resources. For those resources that match it stores a mapping of the original resource to the matching resource in the theme. Once this process is complete we are left with an <strong>efficient way<\/strong> to determine if a resource is themed and where that resource resides.<\/em><\/p>\n<\/blockquote>\n<p>&#8230; and it goes on some more.<\/p>\n<p>A more recent tool that does this is called Substratum<sup><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/forum.xda-developers.com\/apps\/substratum\/projekt-substratum-t3423623\">1<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/Substratum\">2<\/a><\/sup>.<\/p>\n<p>I think these should get you on the right path.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Manipulating the UI of existing native applications at runtime <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Disclaimer: since the question is very general, so is this answer. Let&#8217;s consider the example of the CyanogenMod (now retired&#8230;) Theme Engine. Here are some excerpets from an article that described how it worked (emphasis added here): At the most basic level, themes are simply a mechanism to allow resources to be replaced at &#8230; <a title=\"[Solved] Manipulating the UI of existing native applications at runtime\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/\" aria-label=\"More on [Solved] Manipulating the UI of existing native applications at runtime\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[452,2109,952],"class_list":["post-31791","post","type-post","status-publish","format-standard","hentry","category-solved","tag-android","tag-apk","tag-cordova"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] Manipulating the UI of existing native applications at runtime - JassWeb<\/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:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Manipulating the UI of existing native applications at runtime - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Disclaimer: since the question is very general, so is this answer. Let&#8217;s consider the example of the CyanogenMod (now retired&#8230;) Theme Engine. Here are some excerpets from an article that described how it worked (emphasis added here): At the most basic level, themes are simply a mechanism to allow resources to be replaced at ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-24T13:25:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Manipulating the UI of existing native applications at runtime\",\"datePublished\":\"2023-01-24T13:25:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/\"},\"wordCount\":367,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\",\"keywords\":[\"android\",\"apk\",\"cordova\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/\",\"name\":\"[Solved] Manipulating the UI of existing native applications at runtime - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\",\"datePublished\":\"2023-01-24T13:25:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Manipulating the UI of existing native applications at runtime\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Manipulating the UI of existing native applications at runtime - JassWeb","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:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Manipulating the UI of existing native applications at runtime - JassWeb","og_description":"[ad_1] Disclaimer: since the question is very general, so is this answer. Let&#8217;s consider the example of the CyanogenMod (now retired&#8230;) Theme Engine. Here are some excerpets from an article that described how it worked (emphasis added here): At the most basic level, themes are simply a mechanism to allow resources to be replaced at ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/","og_site_name":"JassWeb","article_published_time":"2023-01-24T13:25:14+00:00","og_image":[{"url":"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png","type":"","width":"","height":""}],"author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Manipulating the UI of existing native applications at runtime","datePublished":"2023-01-24T13:25:14+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/"},"wordCount":367,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"image":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png","keywords":["android","apk","cordova"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/","url":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/","name":"[Solved] Manipulating the UI of existing native applications at runtime - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#primaryimage"},"image":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png","datePublished":"2023-01-24T13:25:14+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#primaryimage","url":"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/uploads\/2023\/01\/Solved-Manipulating-the-UI-of-existing-native-applications-at-runtime.png"},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-manipulating-the-ui-of-existing-native-applications-at-runtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Manipulating the UI of existing native applications at runtime"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/31791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=31791"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/31791\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=31791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=31791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=31791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}