Group Sharing & Node Group
ESP RainMaker Node Group is a feature that enables users to organize and manage IoT devices efficiently.
What is a Node Group?
A Node Group is a logical collection of nodes. These groups help users organize the nodes based on location (e.g., “Living Room Devices”), function (e.g., “All Lights”), or metadata (e.g., “Model: X123”).
- Groups can be static (nodes explicitly listed) or dynamic (based on node model/type/firmware).
- Hierarchical grouping is supported: groups can have sub-groups up to three levels deep.
What is Group Sharing?
Group Sharing enables users to collaborate by sharing node groups with others. It allows multi-user to interact with the same set of physical nodes, facilitating shared access and control within a group. You can share a group with others using two access levels:
- Primary access: Full control, including the ability to update, delete, and share the group with additional users.
- Secondary access: Limited control, allowing users to view the group and perform basic operations.
The feature provides:
- Hierarchical organization of nodes into groups.
- Dynamic node grouping based on node attributes such as node type, model, or firmware version.
- Node control & sharing capabilities between users.
- Matter fabric support for Matter-enabled devices (nodes).
- Admin User and End User level node group management.
Use Case
Node Groups solve several key challenges in IoT device (node) management:
Use Cases | Description |
---|---|
Organization | Helps users organize multiple nodes logically (e.g., by room, function, or location). |
Bulk Operations | Enables performing operations on multiple nodes simultaneously. |
Access Control | Facilitates sharing node access with other users with different permission levels. |
Dynamic Management | Allows automatic grouping of nodes based on their attributes. |
Matter Integration | Supports Matter protocol devices (nodes) alongside RainMaker device (nodes). |
OTA Management | Enables efficient firmware updates for groups of nodes. |
Entities Involved
Users Roles
Admin Users
Can create and manage admin node groups.
End Users
Can create and manage user node groups.
-
Primary User
- Owner of the device group.
- Has full control over sharing settings.
- Can add/remove secondary users.
- Can modify sharing permissions.
-
Secondary User
- Recipient of shared access.
- Limited permissions based on role.
- Can view and/or control shared nodes.
- Cannot modify sharing settings.
Node
An IoT Node registered on ESP RainMaker, identified by unique node IDs.
- RainMaker Nodes: Standard ESP RainMaker nodes.
- Matter Nodes: Matter protocol-enabled nodes.
Groups
- Admin Node Group: Node group created by the admin users.
- User Node Group: Node group created by the end users.
- Matter Fabric: Matter fabric can be created by end users using the node group APIs and it can contain matter as well as RainMaker nodes.
- Dynamic Groups:
- Group Query Based Groups: Only Admins can create these groups by providing either or all of the
node_type
,node_model
andnode_fw_version
. These groups will then take the existing nodes according to their node config values and admin can use this dynamic groups for sending OTA jobs. - Regroup: Regroup operation is applicable to only group query based groups. If a group is created based on a
group_query
and some nodes' type, model or firmware version is changed, then the regroup option removes nodes which no longer satisfy thegroup_query
and adds newly added/updated nodes which match thegroup_query
.
- Group Query Based Groups: Only Admins can create these groups by providing either or all of the
Usage Guide
Group Sharing API Usage
Share Groups: PUT /v1/user/node_group/sharing
-
Share as Primary User
Purpose: Share groups with another user as a primary user, giving them full control.
- The recipient becomes a primary user of the shared groups.
- They get full control over the nodes in these groups.
- They can further share these groups with others.
-
Share as Secondary User
Purpose: Share groups with view-only access.
- The recipient becomes a secondary user.
- They can only view and monitor nodes.
- Cannot modify nodes settings or share further.
-
Transfer Primary Ownership
Purpose: Transfer complete ownership of groups.
- Current user loses primary access.
- Recipient becomes the new primary user.
- Current user loses all access to the group.
-
Transfer and Retain Secondary Access
Purpose: Transfer ownership while maintaining view access.
- Current user becomes secondary user.
- Recipient becomes primary user.
- Current user retains view-only access.
Get Sharing Details GET /v1/user/node_group/sharing
Query Type | Method | Endpoint | Description |
---|---|---|---|
i. Basic Query | GET | /v1/user/node_group/sharing | Returns all groups the user has access to (both primary and secondary). |
ii. Query with Group ID | GET | /v1/user/node_group/sharing?group_id=group_id1 | Returns sharing details for a specific group. |
iii. Query with Subgroups | GET | /v1/user/node_group/sharing?sub_groups=true | Returns sharing details including all subgroups. |
iv. Query with Parent Groups | GET | /v1/user/node_group/sharing?parent_groups=true | Returns sharing details including parent groups. |
v. Query with Metadata | GET | /v1/user/node_group/sharing?metadata=true | Returns sharing details including metadata set during sharing. |
Manage Sharing Requests
-
Get Sharing Requests
GET v1/user/node_group/sharing/requests
This API allows the primary and secondary users to get the sharing requests.
Parameters
request_id
: Get specific request.primary_user
: This is a boolean flag, which is used to denote whether to get the requests raised by primary user (true) or received by secondary users (false). Default value for this flag is false.start_request_id
: used in pagination.start_user_name
: used in pagination along withstart_request_id
.num_records
: used to specify the no of records that must be returned. Default value is 10. The valid values are in the range of 1 to 10. If invalid value is given, default value is used.
-
Accept/Decline Request
PUT /v1/user/node_group/sharing/requests
Used to accept or decline a group sharing requests.
-
Delete Sharing Request
DELETE /v1/user/node_group/sharing/requests?request_id=request_id1
Removes a pending sharing request.
Delete Node Group DELETE /v1/user/node_group
This API will delete user node group/matter fabric if user is primary.It allows the users to leave from their own groups/matter fabric. It also allows primary users to remove the sharing for other users.
Parameters
group_id
(required)leave
(boolean):- Primary/secondary users can specify this parameter to leave the group.
- If the user is the only primary user of the group then the user cannot leave the group. Delete the group instead.
- If there are multiple primary users of the group, then the user can leave the group using the query param.
- For secondary users, it will be
true
by default if nothing is specified.
remove_sharing
(boolean): remove_sharing should be used withuser_name
.- Used to remove sharing of the
user_name
specified. - Secondary users cannot perform this operation.
- Username for which sharing needs to be removed and the requesting username cannot be the same. Please use
leave
instead. - A cannot unshare groups that were shared via parent group.
remove_sharing
andleave
are not allowed together.
- Used to remove sharing of the
user_name
(string):user_name
of the user for which sharing needs to be removed.
Assumptions
- Each group has at least one primary user.
- Maximum 100 nodes can be added per group in a single request.
- Matter devices (nodes) can only be added to Matter Fabrics.
- Dynamic groups automatically update when node attributes change.
- Only admin users can create dynamic groups.
- Dynamic groups cannot have subgroups.
- Dynamic groups are mutually exclusive with static groups.