
{"id":11919,"date":"2024-11-13T11:26:30","date_gmt":"2024-11-13T11:26:30","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/"},"modified":"2026-02-27T07:08:18","modified_gmt":"2026-02-27T07:08:18","slug":"webconfig","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/","title":{"rendered":"WebConfig"},"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\"\n                    data-headerelements=\"H1,H2,H3,H4,H5,H6,H7\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/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\n                \n                <h2 class=\"wp-block-heading wp-main-header\">Introduction<\/h2>\n                \n\n                <p>WebConfig is an open-source cloud service for network configuration management. RDK devices download\n                    configurations from the WebConfig cloud during bootup or are notified when updates are available. It\n                    has significantly improved the reliability, effectiveness, and simplicity of the systems and tools\n                    used to manage, measure, maintain, and troubleshoot Customer Premise Equipment (CPE). It uses a\n                    single document with all configurations for devices to download.\u00a0<\/p>\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\">Key Features<\/h3>\n                            <ul>\n                                <li>Reduced operational costs<\/li>\n                                <li>Reduced latency between cloud applications and devices<\/li>\n                                <li>Reduced overall network load<\/li>\n                                <li><span class=\"inline-comment-marker\"\n                                        data-ref=\"994fa0f5-02a1-4a10-9bd0-b7955c46508a\">Atomic operation:<\/span>\u00a0If any\n                                    setting within the blob is deemed invalid, none of the settings should be applied.\n                                    Each blob transaction must be atomic; if a single failure occurs, the entire\n                                    transaction must be aborted, and appropriate failure codes should be provided.<\/li>\n                                <li>The client-pull from cloud model allows the CPE to fetch configurations on reboot or\n                                    poked at its own convenient time, while the cloud-push model requires the CPE to be\n                                    online and non-busy.<\/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\">\u00a0<\/div>\n                    <\/div>\n                <\/div>\n\n                \n                <h2 class=\"wp-block-heading wp-main-header\"><span>Architecture<\/span><\/h2>\n                \n\n                <div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n                    <div class=\"drawio-macro\" data-macroid=\"770acbe4-fe6a-4158-bcb5-fd995c4fc999\" data-buildnum=\"9012\"\n                        id=\"drawio-macro-content-770acbe4-fe6a-4158-bcb5-fd995c4fc999\"><\/div>\n                    <div id=\"drawio-macro-data-770acbe4-fe6a-4158-bcb5-fd995c4fc999\"><img decoding=\"async\"\n                            src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/12\/architecture-webconfig.png\"\n                            alt=\"architecture-webconfig\" title=\"architecture-webconfig\" \/><\/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\n                \n                <h2 class=\"wp-block-heading wp-main-header\">Comparison of Cloud Protocol Agents&nbsp;<\/h2>\n                \n\n                <div class=\"table-wrap\">\n\n                    \n                    <table class=\"wrapped relative-table confluenceTable\">\n                        <colgroup>\n                            <col style=\"width: 22.6108%\">\n                            <col style=\"width: 32.9241%\">\n                            <col style=\"width: 44.459%\">\n                        <\/colgroup>\n                        <tbody>\n                            <tr>\n                                <th scope=\"col\" class=\"confluenceTh\">Feature<\/th>\n                                <th scope=\"col\" class=\"confluenceTh\">WEBPA<\/th>\n                                <th scope=\"col\" class=\"confluenceTh\">WEBCONFIG<\/th>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">\n                                    <p>Logic<\/p>\n                                <\/td>\n                                <td class=\"confluenceTd\">Synchronous Cloud PUSH<\/td>\n                                <td class=\"confluenceTd\">Asynchronous Device PULL<\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Initiation<\/td>\n                                <td class=\"confluenceTd\">Cloud<\/td>\n                                <td class=\"confluenceTd\">Device<\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Data flow<\/td>\n                                <td class=\"confluenceTd\">Config pushed to device from Cloud<\/td>\n                                <td class=\"confluenceTd\">Config pulled in device from Cloud<\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Connection<\/td>\n                                <td class=\"confluenceTd\">Always connected when online<\/td>\n                                <td class=\"confluenceTd\">Connected only during sync<\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Functions supported<\/td>\n                                <td class=\"confluenceTd\">\n                                    <p>HTTP GET, PATCH, POST, PUT, DELETE, Asynch event notifications. &nbsp;<\/p>\n                                <\/td>\n                                <td class=\"confluenceTd\">SET i.e., configuration apply<\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Number of Requests<\/td>\n                                <td class=\"confluenceTd\">One for each use case<\/td>\n                                <td class=\"confluenceTd\">\n                                    <p>One for all use cases (Multipart response)<\/p>\n                                <\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">Cloud retries<\/td>\n                                <td class=\"confluenceTd\">\n                                    <p>Required Cloud will do retries when device is offline or apply fails<\/p>\n                                <\/td>\n                                <td class=\"confluenceTd\">\n                                    <p><span class=\"inline-comment-marker\"\n                                            data-ref=\"80210071-5eb4-4dd0-9e1e-ea6da55e715c\">Not Required, Config can be\n                                            saved in server and pulled on device whenever it comes online<\/span><\/p>\n                                <\/td>\n                            <\/tr>\n                            <tr>\n                                <td class=\"confluenceTd\">\n                                    <p><span class=\"inline-comment-marker\"\n                                            data-ref=\"e8fe0c87-24ec-4b41-89dd-c94c5cec0b37\">Error Handling, apply\n                                            settings and rollback<\/span><\/p>\n                                <\/td>\n                                <td class=\"confluenceTd\"><span class=\"inline-comment-marker\"\n                                        data-ref=\"842cb81b-4629-4efe-8ddf-ef4f28aa8159\">At webpa client<\/span><\/td>\n                                <td class=\"confluenceTd\">At RDK component using webconfig-framework&nbsp;<\/td>\n                            <\/tr>\n                        <\/tbody>\n                    <\/table>\n                    \n\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\n                \n                <h2 class=\"wp-block-heading wp-main-header\"><span><span class=\"inline-comment-marker\"\n                            data-ref=\"b47122f1-6f84-42ff-bbe1-763917aed190\">Schema<\/span><\/span><\/h2>\n                \n\n                <ul>\n                    <li>The Webconfig schema defines the structure and parameters of the data that the blob will\n                        contain. Each parameter within the blob\/schema is predefined.<\/li>\n                    <li>\n                        <p>All RDK TR181 parameters and non TR181 parameters can be mapped to &ldquo;name&rdquo;,\n                            &ldquo;value&rdquo; key value param schema<\/p>\n                    <\/li>\n                    <li>\n                        <p>DataType is optional from schema perspective but mandatory for RDKB TR181 parameters<\/p>\n                    <\/li>\n                    <li>\n                        <p>Dynamic table data will be a msgpack BLOB packed as string in the param msgpack string value\n                            field<\/p>\n                    <\/li>\n                    <li>\n                        <p>So basically, all parameters will be treated as scalar by Webconfig client<\/p>\n                    <\/li>\n                    <li>\n                        <p>Webconfig client will call bulk SET API for parameters in the doc response after grouping\n                            based on components<\/p>\n                    <\/li>\n                    <li>\n                        <p><span>The components owning the dynamic table need to support new scalar string parameter to\n                                accept the BLOB like Device.NAT.PortMapping.Data<\/span><\/p>\n                    <\/li>\n                    <li>\n                        <p>Support for parsing\/decoding the BLOB will be added in the RDK component handling the blob\n                            for each schema.<\/p>\n                    <\/li>\n                <\/ul>\n                <div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n                    <div class=\"drawio-macro\" data-macroid=\"d2d36222-162b-467e-bffd-4387a1bb066c\" data-buildnum=\"9012\"\n                        id=\"drawio-macro-content-d2d36222-162b-467e-bffd-4387a1bb066c\"><\/div>\n                    <div id=\"drawio-macro-data-d2d36222-162b-467e-bffd-4387a1bb066c\"><img decoding=\"async\"\n                            src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/12\/schema_diagram.png\"\n                            alt=\"schema_diagram\" title=\"schema_diagram\" \/><\/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\"><span>Multipart response<\/span><\/h3>\n                <ul>\n                    <li>\n                        <p>Device.X_RDK_WebConfig.URL defined per PARTNER-ID<\/p>\n                    <\/li>\n                    <li>\n                        <p>On every reboot, GET request will be done to Device.X_RDK_WebConfig.URL webconfig server<\/p>\n                    <\/li>\n                    <li>\n                        <p>ETAG HTTP request header will contain the comma separated list of the root and sub doc\n                            versions previously applied and saved on device<\/p>\n                    <\/li>\n                    <li>\n                        <p>Cloud Server will compare the version shared by device with what it has and returns only the\n                            multipart sub doc for the version mismatch cases<\/p>\n                    <\/li>\n                    <li>\n                        <p>Multipart response will have ROOT doc version in HTTP header Etag<\/p>\n                    <\/li>\n                    <li>\n                        <p>Multipart is HTTP response containing multiple content types or sections separated by\n                            boundary<\/p>\n                    <\/li>\n                    <li>\n                        <p>Multipart response received is parsed based on boundary to extract each sub doc headers and\n                            content<\/p>\n                    <\/li>\n                    <li>\n                        <p>Parse Namespace sub doc header to find the sub doc identifier\/name<\/p>\n                    <\/li>\n                    <li>\n                        <p>Parse ETAG sub doc header to find the sub doc version<\/p>\n                    <\/li>\n                    <li>\n                        <p>Parse body to get sub doc content<\/p>\n                    <\/li>\n                    <li>\n                        <p>Decode sub doc body msgpack to get the TR181 name value pairs.<\/p>\n                    <\/li>\n                    <li>\n                        <p>Group based on RDKB component and make bulk SET<\/p>\n                    <\/li>\n                    <li>\n                        <p>For BLOB value cases, pass the msgpack value over BUS to the component to handle<\/p>\n                    <\/li>\n                    <li>\n                        <p>After sync with the sub doc component if the doc apply status is success persist the new\n                            version<\/p>\n                    <\/li>\n                    <li>\n                        <p>In case of error, self-heal and error handling will be done&nbsp;<\/p>\n                    <\/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\n                \n                <h2 class=\"wp-block-heading wp-main-header\">Webconfig Sync Types<\/h2>\n                \n\n                <h3 class=\"wp-sub-header\">Primary or Bootup Sync<\/h3>\n                <ul>\n                    <li>Each time the device boots up, the Webconfig sends a multipart HTTP GET request to the\n                        Operator&nbsp;cloud containing the root and sub-document versions.<\/li>\n                    <li>The cloud compares these versions with those currently stored and sends only the <span\n                            class=\"inline-comment-marker\" data-ref=\"056e507f-da5d-4b45-8b44-bf5262d8b5dc\">mismatched\n                            sub-documents<\/span> as a multipart response (in a MsgPack-encoded BLOB structure) to the\n                        CPE.<\/li>\n                    <li>The Webconfig then parses the multipart response and forwards it to the RDKB component, which\n                        applies the updates and sends the status back to the cloud.<\/li>\n                <\/ul>\n                <p><span><\/p>\n                <div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n                    <div class=\"drawio-macro\" data-macroid=\"4d4af5bf-3b05-4f4f-a70c-e1722dd5be35\" data-buildnum=\"9012\"\n                        id=\"drawio-macro-content-4d4af5bf-3b05-4f4f-a70c-e1722dd5be35\"><\/div>\n                    <div id=\"drawio-macro-data-4d4af5bf-3b05-4f4f-a70c-e1722dd5be35\"><img decoding=\"async\"\n                            src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/12\/Bootup_sync.png\"\n                            alt=\"Bootup_sync\" title=\"Bootup_sync\" \/><\/div>\n                <\/div>\n                <p><\/span><\/p>\n                <h3 class=\"wp-sub-header\"><span>Force sync<\/span><\/h3>\n                <ul>\n                    <li>\n                        <p>For cases when cloud gets device configuration at a later point in time&nbsp;the Webconfig\n                            will initiate a POKE.<\/p>\n                    <\/li>\n                    <li>\n                        <p>Using WEBPA, poke or force sync SET request will be sent to the device.<\/p>\n                    <\/li>\n                    <li>\n                        <p><span>The Webconfig will then request the cloud for the root and sub-document versions,\n                                similar to the process during boot.<\/span><\/p>\n                    <\/li>\n                    <li>\n                        <p><span>The parameter X_RDK_WebConfig.ForceSync will be set to &ldquo;root.&rdquo;<\/span><\/p>\n                    <\/li>\n                    <li>\n                        <p><span>The new sub-document will be retrieved and applied.<\/span><\/p>\n                    <\/li>\n                    <li>\n                        <p><span>The RDKB component will apply the changes and send the status back to the cloud.<\/span>\n                        <\/p>\n                    <\/li>\n                <\/ul>\n                <p><span><\/p>\n                <div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n                    <div class=\"drawio-macro\" data-macroid=\"b5c6e6d5-29f8-41fa-b2bb-bef487c398df\" data-buildnum=\"9012\"\n                        id=\"drawio-macro-content-b5c6e6d5-29f8-41fa-b2bb-bef487c398df\"><\/div>\n                    <div id=\"drawio-macro-data-b5c6e6d5-29f8-41fa-b2bb-bef487c398df\"><img decoding=\"async\"\n                            src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/12\/Force_sync.png\"\n                            alt=\"Force_sync\" title=\"Force_sync\" \/><\/div>\n                <\/div>\n                <p><\/span><\/p>\n                <h3 class=\"wp-sub-header\">Supplementary sync<\/h3>\n                <ul>\n                    <li>The CPE should sync with the cloud at least once a day.<\/li>\n                    <li>This maintenance sync is performed to update various device configurations (such as boot time,\n                        health status, and other information) in the cloud for that day.<\/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\n                \n                <h2 class=\"wp-block-heading wp-main-header\"><span class=\"inline-comment-marker\"\n                        data-ref=\"ccecfddd-6e67-4fc3-96d3-5fcd05a43ae6\">Blob and Msgpack<\/span><\/h2>\n                \n\n                <h3 class=\"wp-sub-header\">Blob<\/h3>\n                <ul>\n                    <li>\n                        <p>RDK-B components receive bulk configuration in blobs from WebPA.<\/p>\n                    <\/li>\n                    <li>\n                        <p><span>An additional API allows them to set the entire blob configuration, including:<\/span>\n                        <\/p>\n                        <ul>\n                            <li>Deletion of existing tables<\/li>\n                            <li>Adding new tables<\/li>\n                            <li>Applying configurations<\/li>\n                        <\/ul>\n                    <\/li>\n                    <li>\n                        <p>The components also sync TR-181 to support TR-069.<\/p>\n                    <\/li>\n                    <li>\n                        <p><span>This approach minimizes ADD, DELETE, GET, and SET bus calls to a single call, enabling\n                                faster processing and reducing CPU load.<\/span><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\n                                &nbsp; &nbsp; &nbsp;<\/p>\n                        <div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n                            <div class=\"drawio-macro\" data-macroid=\"4d6b2759-c7ae-432d-a535-1599bad7c3da\"\n                                data-buildnum=\"9012\" id=\"drawio-macro-content-4d6b2759-c7ae-432d-a535-1599bad7c3da\">\n                            <\/div>\n                            <div id=\"drawio-macro-data-4d6b2759-c7ae-432d-a535-1599bad7c3da\"><img decoding=\"async\"\n                                    src=\"https:\/\/developer.rdkcentral.com\/documentation\/wp-content\/uploads\/sites\/16\/2024\/12\/RDKB_WebConfig_Client_BLOB_Support_Diag.png\"\n                                    alt=\"RDKB_WebConfig_Client_BLOB_Support_Diag\"\n                                    title=\"RDKB_WebConfig_Client_BLOB_Support_Diag\" \/><\/div>\n                        <\/div>\n                        <p><\/span><\/p>\n                    <\/li>\n                <\/ul>\n                <h3 class=\"wp-sub-header\">Msgpack<\/h3>\n                <ul>\n                    <li>The async device pull mechanism retrieves configuration instead of applying it online at runtime\n                        as in WebPA.<\/li>\n                    <li>It utilizes multipart document requests and responses with a root version, where the multipart\n                        HTTP response contains multiple content types separated by boundaries.<\/li>\n                    <li>We propose changing the current GET webconfig response format from JSON to MessagePack for\n                        faster processing and compression.<\/li>\n                    <li>BLOBs are MessagePack wrapped as strings, base64 encoded, and sent over the bus. The webconfig\n                        is transparent and sends SET commands to apply each config value as is to the owning components\n                        over the bus.<\/li>\n                <\/ul>\n                <p>For subdoc versioning in metadata please check &#8211; <a\n                        href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/webconfig\/webconfig-metadata-for-supported-docs-and-versioning-of-groups\/\">Metadata\n                        Guide<\/a>.\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\n                \n                <h2 class=\"wp-block-heading wp-main-header\"><span>RDKM Webconfig Server Setup<\/span><\/h2>\n                \n\n                <p><span>Webconfig supports two types of transport between the cloud and devices: HTTP\/WEBPA and MQTT.\n                        The RDKM reference server supports only HTTP\/WEBPA. For more details, refer to the <a\n                            href=\"https:\/\/wiki.rdkcentral.com\/display\/RDK\/RDKM+Webconfig+Server+Setup\">RDKM Webconfig\n                            Server Setup<\/a> and <a class=\"external-link\"\n                            href=\"https:\/\/github.com\/rdkcentral\/webconfig\/blob\/develop\/README.md\"\n                            rel=\"nofollow\">https:\/\/github.com\/rdkcentral\/webconfig\/blob\/develop\/README.md<\/a> .<\/span>\n                <\/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\n                \n                <h2 class=\"wp-block-heading wp-main-header\"><span>Releases&nbsp;<\/span><\/h2>\n                \n\n                <p>The Webconfig code is available on GitHub as open source and is designed generically for easy\n                    deployment on RDKB, RDKV, or PODs. The generic code can be found below:<\/p>\n                <ul>\n                    <li>\n                        <p><strong>Webcfg\/WebConfig Framework<\/strong>: webcfg is the client implementation of\n                            Webconfig. For more details, refer to\u00a0<a class=\"external-link\"\n                                href=\"https:\/\/github.com\/xmidt-org\/webcfg\" rel=\"nofollow\">xmidt-org\/webcfg<\/a><\/p>\n                    <\/li>\n                    <li>\n                        <p><strong>CPEABS<\/strong>: cpeabs serves as an abstraction layer for <span\n                                class=\"inline-comment-marker\" data-ref=\"c285970a-62a9-490b-a06a-14340dda26ac\">consumer\n                                preference equipment systems<\/span>. For more details, refer to <a class=\"external-link\"\n                                href=\"https:\/\/github.com\/xmidt-org\/cpeabs\" rel=\"nofollow\">xmidt-org\/cpeabs<\/a><\/p>\n                    <\/li>\n                    <li><strong>Webconfig<\/strong> <strong>Server<\/strong>: This project is to implement a configuration\n                        management server.\u00a0For more details, refer to\u00a0<a class=\"external-link\"\n                            href=\"https:\/\/github.com\/rdkcentral\/webconfig\/blob\/develop\/README.md\"\n                            rel=\"nofollow\">rdkcentral\/webconfig<\/a><\/li>\n                <\/ul>\n\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction WebConfig is an open-source cloud service for network configuration management. RDK devices download configurations [&hellip;]<\/p>\n","protected":false},"author":1029,"featured_media":0,"parent":9484,"menu_order":0,"comment_status":"open","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-11919","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>WebConfig - 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\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WebConfig - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Introduction WebConfig is an open-source cloud service for network configuration management. RDK devices download configurations [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-27T07:08:18+00:00\" \/>\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=\"6 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\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/\",\"name\":\"WebConfig - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2024-11-13T11:26:30+00:00\",\"dateModified\":\"2026-02-27T07:08:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/#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\"}]},{\"@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":"WebConfig - 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\/","og_locale":"en_US","og_type":"article","og_title":"WebConfig - RDK Documentation Portal | Documentation","og_description":"Introduction WebConfig is an open-source cloud service for network configuration management. RDK devices download configurations [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-02-27T07:08:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/","name":"WebConfig - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2024-11-13T11:26:30+00:00","dateModified":"2026-02-27T07:08:18+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/webconfig\/#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"}]},{"@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\/11919","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\/1029"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=11919"}],"version-history":[{"count":10,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11919\/revisions"}],"predecessor-version":[{"id":12741,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11919\/revisions\/12741"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9484"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=11919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}