diff --git a/redfish-core/lib/service_root.hpp b/redfish-core/lib/service_root.hpp
index 387b614..4afd650 100644
--- a/redfish-core/lib/service_root.hpp
+++ b/redfish-core/lib/service_root.hpp
@@ -30,7 +30,21 @@
 {
 
 inline void
-    handleServiceRootGet(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+    handleServiceRootHead(App& app, const crow::Request& req,
+                          const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+    if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+    {
+        return;
+    }
+
+    asyncResp->res.addHeader(
+        boost::beast::http::field::link,
+        "</redfish/v1/JsonSchemas/ServiceRoot/ServiceRoot.json>; rel=describedby");
+}
+
+inline void handleServiceRootGetImpl(
+    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
 {
     std::string uuid = persistent_data::getConfig().systemUuid;
     asyncResp->res.jsonValue["@odata.type"] =
@@ -85,20 +99,24 @@
     protocolFeatures["DeepOperations"]["DeepPOST"] = false;
     protocolFeatures["DeepOperations"]["DeepPATCH"] = false;
 }
+inline void
+    handleServiceRootGet(App& app, const crow::Request& req,
+                         const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+    handleServiceRootHead(app, req, asyncResp);
+    handleServiceRootGetImpl(asyncResp);
+}
 
 inline void requestRoutesServiceRoot(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/")
+        .privileges(redfish::privileges::headServiceRoot)
+        .methods(boost::beast::http::verb::head)(
+            std::bind_front(handleServiceRootHead, std::ref(app)));
+    BMCWEB_ROUTE(app, "/redfish/v1/")
         .privileges(redfish::privileges::getServiceRoot)
         .methods(boost::beast::http::verb::get)(
-            [&app](const crow::Request& req,
-                   const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
-        if (!redfish::setUpRedfishRoute(app, req, asyncResp))
-        {
-            return;
-        }
-        handleServiceRootGet(asyncResp);
-        });
+            std::bind_front(handleServiceRootGet, std::ref(app)));
 }
 
 } // namespace redfish
diff --git a/redfish-core/lib/ut/service_root_test.cpp b/redfish-core/lib/ut/service_root_test.cpp
index 9b8744a..673f84c 100644
--- a/redfish-core/lib/ut/service_root_test.cpp
+++ b/redfish-core/lib/ut/service_root_test.cpp
@@ -116,8 +116,8 @@
 
     shareAsyncResp->res.setCompleteRequestHandler(assertServiceRootGet);
 
-    handleServiceRootGet(shareAsyncResp);
+    redfish::handleServiceRootGetImpl(shareAsyncResp);
 }
 
 } // namespace
-} // namespace redfish
\ No newline at end of file
+} // namespace redfish
