
{"id":12584,"date":"2025-11-12T03:40:13","date_gmt":"2025-11-12T03:40:13","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/?page_id=12584"},"modified":"2025-11-26T07:34:30","modified_gmt":"2025-11-26T07:34:30","slug":"webconfig-metadata-for-supported-docs-and-versioning-of-groups","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/","title":{"rendered":"Metadata Guide"},"content":{"rendered":"<div class=\"contentLayout2\">\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<div class=\"toc-macro client-side-toc-macro conf-macro output-block\" data-headerelements=\"H1,H2,H3,H4,H5,H6,H7\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/div><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p>This document defines the mechanism by which the CPE communicates its supported features to the cloud. To ensure compatibility, especially in cases where the cloud introduces support for new groups or blobs not yet implemented in the CPE, RDK adopts a metadata-based approach.<\/p>\n\n<p>When the CPE contacts the cloud server to retrieve the latest version of documents, during either a forced sync or a bootup sync then it includes the header <strong><em>X-System-Supported-Docs:<\/em><\/strong> in the request. This header contains a bitmask string that indicates which features are supported in the CPE firmware.<\/p>\n\n<p>Within RDK, different features are managed by separate components. Accordingly, subdocs are organized into groups, each represented by a bit masked value. These values are comma-separated within the header. Each group&#8217;s position in the header is predefined and identified by its two most significant (MS) nibbles. The cloud can parse these bitstreams based on the group ID provided by RDK. Within each group&#8217;s bitmap, the cloud can check which bits are set to identify the supported features.<\/p>\n\n<p>RDK reserves two MS nibbles for identifying the group; these remain constant. The remaining bits are used to indicate whether a specific subdoc is supported.<\/p>\n\n<p>To specify the schema versions supported for each group, the metadata header <strong><em>X-System-Schema-Version<\/em><\/strong> is included. This header contains comma-separated entries, each combining a bitmask subdoc ID with its corresponding version number. This allows the cloud to determine the schema version supported by the CPE for each subdoc in a given firmware release. The order of versions in this header may differ from the bitstream order used in the supported-docs metadata. Since all subdoc versions begin at 1.0, RDK does not include this header or subdoc version information unless a version change has occurred.<\/p>\n\n<p>Both version and supported-docs information are generated at build time and remain unchanged during CPE runtime.<\/p>\n\n<hr>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">RDK Subdoc Group Placeholders<\/h2>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\">Metadata for supported features in CPE<\/h3>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">X-System-Supported-Docs: &lt;Group1&gt;,&lt;Group2&gt;,&lt;Group3&gt;,...,&lt;GroupN&gt;<\/pre>\n<\/div>\n<\/div>\n<p><em>Points for future:<\/em><\/p>\n\n<ul>\n<li>New supported groups <strong>WILL NOT<\/strong> be added in between the existing list.<\/li>\n<li>If a group\/component uses all 24 bits available, then we will have to use a new bitstream at the end of existing ones with a different Group Id (2 MS nibble).<\/li>\n<li>For simplicity, during initial rollouts, groups are segregated based on RDKB components but there is no hard rule to tie a subdoc to a group as subdocs are identified based on the group Id.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\">Version metadata<\/h3>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">X-System-Schema-version: &lt;bitmask1:version_1&gt;,&lt;bitmask2:version_2&gt;,&lt;bitmask3:version_3&gt;,&lt;bitmask4:version_4&gt;,...<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\">Bitstream patterns<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2\" \/><\/p>\n\n<p>In supported subdoc metadata, the bitmask represents a value in which all bits corresponding to supported subdocs are set within the least significant (LS) 6 nibbles.<\/p>\n\n<p>In version metadata, bitmask value generated for identifying subdoc will have only a single bit set within the 6 LS nibbles.<\/p>\n\n<p>As illustrated in the figure above, the two most significant (MS) nibbles serve as the group identifier field.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\">Sample Header with metadata<\/h3>\n\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">X-System-Product-Class: XB3\nX-System-Model-Name: BananapiBPI-R4\nAuthorization: Bearer \nIF-NONE-MATCH:NONE\nSchema-Version: v1.0\nTransaction-ID: 79098228695636680012\nX-System-Schema-Version: 16777217-1.1, 16777218-1.2, 33554433-1.1, 50331649-2.0,....\nX-System-Supported-Docs: 16777247,33554435,50331649,67108865,...\nX-System-Boot-Time: 1557198030\nX-System-Ready-Time: 1557199130\nX-System-Current-Time: 1557199333\nX-System-Status: Operational\\Non-Operational\nX-System-Firmware-Version: rdkb-generic-broadband-image_rdkb-2025q2-kirkstone_20<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h4 class=\"wp-sub-header\">X-System-Supported-Docs:<\/h4>\n<p>This header will contain metadata for supported docs, populated according to the placeholders defined in this <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\">section<\/a>.<\/p>\n\n<p>As per the placeholders, in this sample request header<\/p>\n\n<ul>\n<li>16777219 corresponds to Subdocs of Group-1 of RDK<\/li>\n<li>33554435 corresponds to Subdocs of Group-2<\/li>\n<li>50331649 corresponds to Subdocs of Group-3 and so on<\/li>\n<\/ul>\n\n<p>The cloud converts each decimal bitmask value into its corresponding binary pattern for decoding the supported subdocs.<\/p>\n\n<p>Example:<\/p>\n\n<table class=\"wrapped\">\n<thead>\n<tr>\n<th scope=\"col\">Decimal Bitmask<\/th>\n<th scope=\"col\">Binary Conversion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>16777219<\/td>\n<td>00000001 0000 0000 0000 0000 0000 0011<\/td>\n<\/tr>\n<tr>\n<td>33554435<\/td>\n<td>00000010 0000 0000 0000 0000 0000 0011<\/td>\n<\/tr>\n<tr>\n<td>50331649<\/td>\n<td>00000011 0000 0000 0000 0000 0000 0001<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<p>Each binary bit represents the enablement status of a specific subdoc within that group.<\/p>\n\n<p>The mapping between bit positions and subdocs is <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\">explained here<\/a>.<\/p>\n\n<p><strong>If only two MS nibbles have bits turned ON, that means no feature is supported by that Group in that FW version<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h4 class=\"wp-sub-header\">X-System-Schema-Version<\/h4>\n<p>This header will hold comma separated strings where each string will have 2 parts.<\/p>\n\n<ol>\n<li>A bit mask generated from the combination of two MS nibbles and a subdoc position in the bitstream.<\/li>\n<li>The version supported by that subdoc.<\/li>\n<\/ol>\n\n<p>Example:<\/p>\n\n<table class=\"wrapped\">\n<thead>\n<tr>\n<th><strong>Example (Decimal\u2013Version)<\/strong><\/th>\n<th scope=\"col\">Binary Conversion<\/th>\n<th scope=\"col\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>16777218\u20131.2<\/td>\n<td>00000001 0000 0000 0000 0000 0000 0010<\/td>\n<td>Represents the version of the subdoc corresponding to the second least significant bit of the first group in the supported docs metadata.<br \/>Version: 1.2<\/td>\n<\/tr>\n<tr>\n<td>16777217\u20131.1<\/td>\n<td>00000001 0000 0000 0000 0000 0000 0001<\/td>\n<td>Represents the version of subdoc represented by least significant bit of first group in the list of supported docs metadata.<br \/>Version: 1.1<\/td>\n<\/tr>\n<tr>\n<td>33554433\u20131.1<\/td>\n<td>00000010 0000 0000 0000 0000 0000 0001<\/td>\n<td>Represents the version of the last subdoc of the second group in the list of supported docs.<br \/>Version: 1.1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<p>Here, two MS nibbles can be directly translated to decimal to identify the position\/group in the list represented by supported docs.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\">Component to feature mapping<\/h3>\n<p>The following table outlines the mapping between groups and features, as the cloud may not be aware of which RDK group is responsible for a specific subdoc.<\/p>\n\n<p><strong>Subdoc to bit position mapping<\/strong><\/p>\n\n<table class=\"wrapped\">\n<thead>\n<tr>\n<th><strong>Group Identifier (MS nibble)<\/strong><\/th>\n<th><strong>Subdocs of group<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td rowspan=\"9\">00000001<\/td>\n<td>portforwarding<\/td>\n<\/tr>\n<tr>\n<td>lan<\/td>\n<\/tr>\n<tr>\n<td>wan<\/td>\n<\/tr>\n<tr>\n<td>macbinding<\/td>\n<\/tr>\n<tr>\n<td>hotspot<\/td>\n<\/tr>\n<tr>\n<td>bridge<\/td>\n<\/tr>\n<tr>\n<td>connectedbuilding<\/td>\n<\/tr>\n<tr>\n<td>xmspeedboost<\/td>\n<\/tr>\n<tr>\n<td>webui<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\">00000010<\/td>\n<td>privatessid<\/td>\n<\/tr>\n<tr>\n<td>homessid<\/td>\n<\/tr>\n<tr>\n<td>radio<\/td>\n<\/tr>\n<tr>\n<td>00000011<\/td>\n<td>moca<\/td>\n<\/tr>\n<tr>\n<td>00000100<\/td>\n<td>xdns<\/td>\n<\/tr>\n<tr>\n<td>00000101<\/td>\n<td>advsecurity<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"7\">00000110<\/td>\n<td>mesh<\/td>\n<\/tr>\n<tr>\n<td>clienttosteeringprofile<\/td>\n<\/tr>\n<tr>\n<td>meshsteeringprofiles<\/td>\n<\/tr>\n<tr>\n<td>wifistatsconfig<\/td>\n<\/tr>\n<tr>\n<td>mwoconfigs<\/td>\n<\/tr>\n<tr>\n<td>interference<\/td>\n<\/tr>\n<tr>\n<td>wifimotionsettings<\/td>\n<\/tr>\n<tr>\n<td>00000111<\/td>\n<td>aker<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\">00001000<\/td>\n<td>telemetry<\/td>\n<\/tr>\n<tr>\n<td>defaultrfc<\/td>\n<\/tr>\n<tr>\n<td>rfc<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">00001001<\/td>\n<td>trafficreport<\/td>\n<\/tr>\n<tr>\n<td>statusreport<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">00001010<\/td>\n<td>radioreport<\/td>\n<\/tr>\n<tr>\n<td>interfacereport<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">00001011<\/td>\n<td>telcovoip<\/td>\n<\/tr>\n<tr>\n<td>telcovoice<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">00001100<\/td>\n<td>wanmanager<\/td>\n<\/tr>\n<tr>\n<td>wanfailover<\/td>\n<\/tr>\n<tr>\n<td>00001101<\/td>\n<td>voiceservice<\/td>\n<\/tr>\n<tr>\n<td>00001110<\/td>\n<td>cellularconfig<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">00001111<\/td>\n<td>gwfailover<\/td>\n<\/tr>\n<tr>\n<td>gwrestore<\/td>\n<\/tr>\n<tr>\n<td>00010000<\/td>\n<td>prioritizedmacs<\/td>\n<\/tr>\n<tr>\n<td>00010001<\/td>\n<td>lldqoscontrol<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<hr>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">Bit Pattern Mapping<\/h2><p>This section will depict what feature\/subdoc each bit field denotes in the bitmask:<\/p>\n\n<p><strong>Group-1<\/strong><\/p>\n\n<p><img decoding=\"async\" src=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-33-32.png?api=v2\" \/><\/p>\n\n<table class=\"wrapped\">\n\n<tbody>\n<tr class=\"header\">\n<th>Group Number<\/th>\n<th><p>Group ID (1-8 digit)<\/p>\n<p>(Fixed Nibbles)\n\u00a0<\/p><\/th>\n<th colspan=\"10\"><p>Bit Position for each subdoc (24 digit)<\/p><\/th>\n<\/tr>\n&#010;<tr class=\"odd\">\n<td><p>Group 1<\/p><\/td>\n<td><p>0000\n0001\u00a0<\/p><\/td>\n<td><p>0000\n\u00a0&#010;0000\n\u00a0&#010;0000\n\u00a0&#010;000\n\u00a0<\/p><\/td>\n<td><p>webui\n\u00a0<\/p><\/td>\n<td><p>xmspeedboost\n\u00a0<\/p><\/td>\n<td>connectedbuilding\n\u00a0<\/td>\n<td>bridge\n\u00a0<\/td>\n<td>hotspot\n\u00a0<\/td>\n<td>macbinding<\/td>\n<td>lan\n\u00a0<\/td>\n<td>wan\n\u00a0<\/td>\n<td>portforwarding\n\u00a0<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 2\u00a0<\/td>\n<td><p>0000 0010\n\u00a0<\/p><\/td>\n<td><p>0000 0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0\n\u00a0<\/td>\n<td>radio\n\u00a0<\/td>\n<td>homessid\n\u00a0<\/td>\n<td>privatessid\n\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 3\u00a0<\/td>\n<td><p>0000\u00a0\n0011\u00a0\n\u00a0<\/p><\/td>\n<td><p>0000 0000\n\u00a0&#010;0000\n000\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>moca<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 4<\/td>\n<td><p>0000\u00a0\n0\n100\n\u00a0&#010;\u00a0<\/p><\/td>\n<td><p>0000\n0000\n0000\n000\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>xdns\n\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 5<\/td>\n<td><p>0000\u00a0\n0\n101\n\u00a0<\/p><\/td>\n<td><p>0000 0000\n\u00a0&#010;0000\n000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>advsecurity\n\u00a0<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 6<\/td>\n<td><p>0000 0110\n\u00a0<\/p><\/td>\n<td><p>0000\n\u00a0&#010;0000\n\u00a0&#010;0000\n\u00a0&#010;000\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td>0<\/td>\n<td><p>wifimotionsettings\n\u00a0<\/p><\/td>\n<td><p>interference\n\u00a0<\/p><\/td>\n<td><p>mwoconfigs<\/p><\/td>\n<td><p>\u00a0\nwifistatsconfig\n\u00a0<\/p><\/td>\n<td><p>meshsteeringprofiles<\/p><\/td>\n<td><p>clienttosteeringprofile\n\u00a0<\/p><\/td>\n<td>mesh\n\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 7<\/td>\n<td><p>0000\u00a0\n0\n111\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>aker\n\u00a0<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 8<\/td>\n<td><p>0000 1000\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>rfc\n\u00a0<\/p><\/td>\n<td><p>defaultrfc\n\u00a0<\/p><\/td>\n<td>telemetry\n\u00a0&#010;\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td><p>Group 9<\/p><\/td>\n<td><p>0000 1001\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>\u00a00<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>statusreport<\/td>\n<td>trafficreport<\/td>\n<\/tr>\n<tr class=\"even\">\n<td><p>Group 10<\/p><\/td>\n<td><p>0000 1010\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>interfacereport\n\u00a0<\/td>\n<td>radioreport<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 11<\/td>\n<td><p>0000 1011\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>telcovoice<\/td>\n<td>\u00a0\ntelcovoip<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 12<\/td>\n<td><p>0000 1100\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>wanfailover\n\u00a0&#010;\u00a0<\/td>\n<td>wanmanager\n\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 13<\/td>\n<td><p>0000 1101\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>voiceservice\n\u00a0<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 14<\/td>\n<td><p>0000 1110\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\u00a0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>c\nellularconfig<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 15<\/td>\n<td><p>0000 1111\n\u00a0<\/p><\/td>\n<td><p>0000\n0000 0000 000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>\u00a00<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>gwrestore<\/td>\n<td>gwfailover\n\u00a0<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Group 16<\/td>\n<td><p>0001 0000\n\u00a0<\/p><\/td>\n<td><p>0000\n0000\n0000\n000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0\n\u00a0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>prioritizedmacs\n\u00a0<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Group 17<\/td>\n<td><p>0001 000\n1\n\u00a0<\/p><\/td>\n<td><p>0000\n0000\n0000\n000<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td><p>0<\/p><\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>lldqoscontrol\n\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n<hr>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">Component Versioning<\/h2><p>In RDKB, a common JSON file named <code>webconfig_metadata.json<\/code> is shared among components during build time. This file defines the subdocs supported for each platform. When a new feature is introduced for a specific platform, its corresponding details must be added under that platform&#8217;s section in <code>webconfig_metadata.json<\/code> as part of the feature&#8217;s code check-in.<\/p>\n\n<p>During the build process, the scripts convert this JSON file into webconfig.properties and install it into the root file system.<\/p>\n\n<p><code>webconfig_metadata.json<\/code> will provide following details:<\/p>\n\n<ul>\n<li>Platform for which a subdoc is added<\/li>\n<li>Group Id<\/li>\n<li>Name of the subdoc<\/li>\n<li>Bit position in the 32-bit long bitstream for a group<\/li>\n<li>Whether support is enabled or not<\/li>\n<li>Version of schema<\/li>\n<\/ul>\n\n<p>Sample json file:<\/p>\n\n<p>The placeholder for each group is predefined; however, the component owner can determine the bit position for any new subdoc added within that group. The bit positions for all defined features are identified and <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\">shown here<\/a>.<\/p>\n\n<p>The following example illustrates how the bitstream mapping is used to generate the webconfig.properties file.<\/p>\n\n<table class=\"wrapped\">\n<thead>\n<tr>\n<th>Group-1<\/th>\n<th>Group-2<\/th>\n<th>Group-3<\/th>\n<th>Group-4<\/th>\n<th>Group-5<\/th>\n<th>Group-6<\/th>\n<th>Group-7<\/th>\n<th>Group-8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0000 0001 0000 0000 0000 0000 0000 0011<\/td>\n<td>0010 0000 0000 0000 0000 0000 0000 0011<\/td>\n<td>0011 0000 0000 0000 0000 0000 0000 0001<\/td>\n<td>0100 0000 0000 0000 0000 0000 0000 0000<\/td>\n<td>0101 0000 0000 0000 0000 0000 0000 0000<\/td>\n<td>0110 0000 0000 0000 0000 0000 0000 0000<\/td>\n<td>0111 0000 0000 0000 0000 0000 0000 0000<\/td>\n<td>1000 0000 0000 0000 0000 0000 0000 0000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<table class=\"wrapped\">\n<tbody>\n<tr>\n<td>0000 0001<br \/>(Fixed Nibbles)<\/td>\n<td>0000 0000 0000 0000<\/td>\n<td>00<\/td>\n<td>bridge<\/td>\n<td>hotspot<\/td>\n<td>macbinding<\/td>\n<td>lan<\/td>\n<td>wan<\/td>\n<td>portforwarding<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<p>Group-1 bitstream as mentioned in <a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\">here<\/a>.<\/p>\n\n<p>Sample <strong><em>webconfig.properties<\/em><\/strong> file with contents:<\/p>\n\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\" style=\"max-width:100%\">\n  <div class=\"codeContent panelContent pdl\">\n    <pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\n\/* WEBCONFIG_SUPPORTED_DOCS_BIT variable holds the bitstream of supported docs in each component.\nPlaceholder will be as:\n,,,,,,,,,\n*\/\nWEBCONFIG_SUPPORTED_DOCS_BIT=16777247,33554435,50331649,67108865,83886081,100663297,117440513,134217729,201326594,218103809,251658241\n\/* WEBCONFIG_DOC_SCHEMA_VERSION variable will hold the hex conversion of each nibble in above bit pattern.\nIf the supported schema version of a subdoc hasn't changed from base version \"1.0\" then that need not have to be applied to header.*\/\nWEBCONFIG_DOC_SCHEMA_VERSION=16777217-2.0,16777220-1.3,16777224-2.1,33554433-1.1,67108865-2.0,117440513-3.0,...\n\/* Subdoc mapping as per bit position for each group.\nFormat:::\n*\/\nWEBCONFIG_SUBDOC_MAP_1=portforwarding:1:true,wan:2:true,lan:3:true,macbinding:4:true,hotspot:5:true,bridge:6:false,connectedbuilding:7:true\nWEBCONFIG_SUBDOC_MAP_2=privatessid:1:true,homesid:2:true,radio:3:false\nWEBCONFIG_SUBDOC_MAP_3=moca:1:true\nWEBCONFIG_SUBDOC_MAP_4=xdns:1:true\nWEBCONFIG_SUBDOC_MAP_5=advsecurity:1:true\nWEBCONFIG_SUBDOC_MAP_6=mesh:1:true,clienttosteeringprofile:2:true\nWEBCONFIG_SUBDOC_MAP_7=aker:1:true\nWEBCONFIG_SUBDOC_MAP_8=telemetry:1:true\nWEBCONFIG_SUBDOC_MAP_9=trafficreport:1:false,statusreport:2:false\nWEBCONFIG_SUBDOC_MAP_10=radioreport:1:false,interfacereport:2:false\nWEBCONFIG_SUBDOC_MAP_11=telcovoip:1:false,telcovoice:2:false\nWEBCONFIG_SUBDOC_MAP_12=wanmanager:1:false,wanfailover:2:true\nWEBCONFIG_SUBDOC_MAP_13=voiceservice:1:true\nWEBCONFIG_SUBDOC_MAP_14=cellularconfig:1:false\nWEBCONFIG_SUBDOC_MAP_15=gwfailover:1:true,gwrestore:2:false\nWEBCONFIG_SUBDOC_MAP_16=prioritizedmacs:1:true\nWEBCONFIG_SUBDOC_MAP_17=lldqoscontrol:1:true\nWEBCONFIG_SUPPLEMENTARY_DOCS=telemetry\n    <\/pre>\n  <\/div>\n<\/div>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>This document defines the mechanism by which the CPE communicates its supported features to the [&hellip;]<\/p>\n","protected":false},"author":1008,"featured_media":0,"parent":11919,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-12584","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Metadata Guide - RDK Documentation Portal | Documentation<\/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:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Metadata Guide - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"This document defines the mechanism by which the CPE communicates its supported features to the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-26T07:34:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\",\"name\":\"Metadata Guide - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2\",\"datePublished\":\"2025-11-12T03:40:13+00:00\",\"dateModified\":\"2025-11-26T07:34:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage\",\"url\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2\",\"contentUrl\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Device Management\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"WebConfig\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Metadata Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Metadata Guide - RDK Documentation Portal | Documentation","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:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/","og_locale":"en_US","og_type":"article","og_title":"Metadata Guide - RDK Documentation Portal | Documentation","og_description":"This document defines the mechanism by which the CPE communicates its supported features to the [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-11-26T07:34:30+00:00","og_image":[{"url":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/","name":"Metadata Guide - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"primaryImageOfPage":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage"},"image":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage"},"thumbnailUrl":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2","datePublished":"2025-11-12T03:40:13+00:00","dateModified":"2025-11-26T07:34:30+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#primaryimage","url":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2","contentUrl":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/438731151\/image-2025-11-6_16-21-49.png?api=v2"},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"Device Management","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/"},{"@type":"ListItem","position":4,"name":"WebConfig","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/"},{"@type":"ListItem","position":5,"name":"Metadata Guide"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/1008"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=12584"}],"version-history":[{"count":23,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12584\/revisions"}],"predecessor-version":[{"id":12620,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12584\/revisions\/12620"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11919"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}