diff --git a/examples/daemon/ledflasher/ledflasher.cc b/examples/daemon/ledflasher/ledflasher.cc
index 0019d2c..4733f18 100644
--- a/examples/daemon/ledflasher/ledflasher.cc
+++ b/examples/daemon/ledflasher/ledflasher.cc
@@ -35,16 +35,18 @@
 
     device->AddCommandDefinitionsFromJson(R"({
       "_ledflasher": {
-         "_set":{
-           "parameters": {
-             "_led": {"type": "integer", "minimum": 1, "maximum": 3},
-             "_on": {"type": "boolean"}
-           }
-         },
-         "_toggle":{
-           "parameters": {
-             "_led": {"type": "integer", "minimum": 1, "maximum": 3}
-           }
+        "_set":{
+          "minimalRole": "user",
+          "parameters": {
+            "_led": {"type": "integer", "minimum": 1, "maximum": 3},
+            "_on": {"type": "boolean"}
+          }
+        },
+        "_toggle":{
+          "minimalRole": "user",
+          "parameters": {
+            "_led": {"type": "integer", "minimum": 1, "maximum": 3}
+          }
         }
       }
     })");
@@ -64,9 +66,10 @@
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
     int32_t led_index = 0;
+    auto params = cmd->GetParameters();
     bool cmd_value = false;
-    if (cmd->GetParameters()->GetInteger("_led", &led_index) &&
-        cmd->GetParameters()->GetBoolean("_on", &cmd_value)) {
+    if (params->GetInteger("_led", &led_index) &&
+        params->GetBoolean("_on", &cmd_value)) {
       // Display this command in terminal
       LOG(INFO) << cmd->GetName() << " _led: " << led_index
                 << ", _on: " << (cmd_value ? "true" : "false");
@@ -93,8 +96,9 @@
     if (!cmd)
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
+    auto params = cmd->GetParameters();
     int32_t led_index = 0;
-    if (cmd->GetParameters()->GetInteger("_led", &led_index)) {
+    if (params->GetInteger("_led", &led_index)) {
       LOG(INFO) << cmd->GetName() << " _led: " << led_index;
       led_index--;
       led_status_[led_index] = ~led_status_[led_index];
diff --git a/examples/daemon/light/light.cc b/examples/daemon/light/light.cc
index a7eb9b3..334bd93 100644
--- a/examples/daemon/light/light.cc
+++ b/examples/daemon/light/light.cc
@@ -62,21 +62,23 @@
 
     device->AddCommandDefinitionsFromJson(R"({
       "onOff": {
-         "setConfig":{
-           "parameters": {
-             "state": {"type": "string", "enum": ["on", "standby"]}
-           }
-         }
-       },
-       "brightness": {
-         "setConfig":{
-           "parameters": {
-             "brightness": {
-               "type": "integer",
-               "minimum": 0,
-               "maximum": 100
-             }
-           }
+        "setConfig":{
+          "minimalRole": "user",
+          "parameters": {
+            "state": {"type": "string", "enum": ["on", "standby"]}
+          }
+        }
+      },
+      "brightness": {
+        "setConfig":{
+          "minimalRole": "user",
+          "parameters": {
+            "brightness": {
+              "type": "integer",
+              "minimum": 0,
+              "maximum": 100
+            }
+          }
         }
       },
       "_colorXY": {
@@ -88,13 +90,13 @@
               "properties": {
                 "_colorX": {
                   "type": "number",
-                  "minimum": 0,
-                  "maximum": 1
+                  "minimum": 0.0,
+                  "maximum": 1.0
                 },
                 "_colorY": {
                   "type": "number",
-                  "minimum": 0,
-                  "maximum": 1
+                  "minimum": 0.0,
+                  "maximum": 1.0
                 }
               }
             }
@@ -119,8 +121,9 @@
     if (!cmd)
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
+    auto params = cmd->GetParameters();
     int32_t brightness_value = 0;
-    if (cmd->GetParameters()->GetInteger("brightness", &brightness_value)) {
+    if (params->GetInteger("brightness", &brightness_value)) {
       // Display this command in terminal.
       LOG(INFO) << cmd->GetName() << " brightness: " << brightness_value;
 
@@ -142,8 +145,9 @@
     if (!cmd)
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
+    auto params = cmd->GetParameters();
     std::string requested_state;
-    if (cmd->GetParameters()->GetString("state", &requested_state)) {
+    if (params->GetString("state", &requested_state)) {
       LOG(INFO) << cmd->GetName() << " state: " << requested_state;
 
       bool new_light_status = requested_state == "on";
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 7d941c6..f07ee52 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -51,13 +51,14 @@
                                        nullptr);
 
     device->AddCommandDefinitionsFromJson(R"({
-        "lock": {
-          "setConfig":{
-            "parameters": {
-              "lockedState": {"type": "string", "enum":["locked", "unlocked"]}
-            }
+      "lock": {
+        "setConfig":{
+          "minimalRole": "user",
+          "parameters": {
+            "lockedState": {"type": "string", "enum":["locked", "unlocked"]}
           }
         }
+      }
     })");
     device->AddCommandHandler("lock.setConfig",
                               base::Bind(&LockHandler::OnLockSetConfig,
@@ -70,8 +71,9 @@
     if (!cmd)
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
+    auto params = cmd->GetParameters();
     std::string requested_state;
-    if (cmd->GetParameters()->GetString("lockedState", &requested_state)) {
+    if (params->GetString("lockedState", &requested_state)) {
       LOG(INFO) << cmd->GetName() << " state: " << requested_state;
 
       weave::lockstate::LockState new_lock_status;
diff --git a/examples/daemon/sample/sample.cc b/examples/daemon/sample/sample.cc
index e065b06..bde2f03 100644
--- a/examples/daemon/sample/sample.cc
+++ b/examples/daemon/sample/sample.cc
@@ -73,8 +73,9 @@
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
 
+    auto params = cmd->GetParameters();
     std::string name;
-    if (!cmd->GetParameters()->GetString("_name", &name)) {
+    if (!params->GetString("_name", &name)) {
       weave::ErrorPtr error;
       weave::Error::AddTo(&error, FROM_HERE, "example",
                           "invalid_parameter_value", "Name is missing");
@@ -111,8 +112,9 @@
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
 
+    auto params = cmd->GetParameters();
     int seconds;
-    if (!cmd->GetParameters()->GetInteger("_seconds", &seconds))
+    if (!params->GetInteger("_seconds", &seconds))
       seconds = 10;
 
     LOG(INFO) << "starting countdown";
@@ -125,8 +127,9 @@
       return;
 
     if (seconds > 0) {
+      auto params = cmd->GetParameters();
       std::string todo;
-      cmd->GetParameters()->GetString("_todo", &todo);
+      params->GetString("_todo", &todo);
       LOG(INFO) << "countdown tick: " << seconds << " seconds left";
 
       base::DictionaryValue progress;
diff --git a/examples/daemon/speaker/speaker.cc b/examples/daemon/speaker/speaker.cc
index 178be14..89595b0 100644
--- a/examples/daemon/speaker/speaker.cc
+++ b/examples/daemon/speaker/speaker.cc
@@ -36,22 +36,24 @@
 
     device->AddCommandDefinitionsFromJson(R"({
       "onOff": {
-         "setConfig":{
-           "parameters": {
-             "state": {"type": "string", "enum": ["on", "standby"]}
-           }
-         }
-       },
-       "volume": {
-         "setConfig":{
-           "parameters": {
-             "volume": {
-               "type": "integer",
-               "minimum": 0,
-               "maximum": 100
-             },
-             "isMuted": {"type": "boolean"}
-           }
+        "setConfig":{
+          "minimalRole": "user",
+          "parameters": {
+            "state": {"type": "string", "enum": ["on", "standby"]}
+          }
+        }
+      },
+      "volume": {
+        "setConfig":{
+          "minimalRole": "user",
+          "parameters": {
+            "volume": {
+              "type": "integer",
+              "minimum": 0,
+              "maximum": 100
+            },
+            "isMuted": {"type": "boolean"}
+          }
         }
       }
     })");
@@ -70,9 +72,10 @@
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
 
+    auto params = cmd->GetParameters();
     // Handle volume parameter
     int32_t volume_value = 0;
-    if (cmd->GetParameters()->GetInteger("volume", &volume_value)) {
+    if (params->GetInteger("volume", &volume_value)) {
       // Display this command in terminal.
       LOG(INFO) << cmd->GetName() << " volume: " << volume_value;
 
@@ -86,7 +89,7 @@
 
     // Handle isMuted parameter
     bool isMuted_status = false;
-    if (cmd->GetParameters()->GetBoolean("isMuted", &isMuted_status)) {
+    if (params->GetBoolean("isMuted", &isMuted_status)) {
       // Display this command in terminal.
       LOG(INFO) << cmd->GetName() << " is "
                 << (isMuted_status ? "muted" : "not muted");
@@ -108,8 +111,9 @@
     if (!cmd)
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
+    auto params = cmd->GetParameters();
     std::string requested_state;
-    if (cmd->GetParameters()->GetString("state", &requested_state)) {
+    if (params->GetString("state", &requested_state)) {
       LOG(INFO) << cmd->GetName() << " state: " << requested_state;
 
       bool new_speaker_status = requested_state == "on";
