@@ -36,6 +36,8 @@ class Devices(AbstractDevices):
3636 Gets a list of devices
3737 get(device=None, name=None)
3838 Gets a device
39+ update(device, name=None, properties=None, location=None)
40+ Updates a device
3941 """
4042
4143 seam : Seam
@@ -136,3 +138,53 @@ def get(
136138 raise Exception (res .text )
137139 json_device = res .json ()["device" ]
138140 return Device .from_dict (json_device )
141+
142+ def update (
143+ self ,
144+ device : Union [DeviceId , Device ],
145+ name : Optional [str ] = None ,
146+ properties : Optional [dict ] = None ,
147+ location : Optional [dict ] = None ,
148+ ) -> Device :
149+ """Updates a device.
150+
151+ Parameters
152+ ----------
153+ device : DeviceId or Device
154+ Device id or Device to update
155+ name : str, optional
156+ New device name
157+ properties : dict, optional
158+ New device properties
159+ location : str, optional
160+ New device location
161+
162+ Raises
163+ ------
164+ Exception
165+ If the API request wasn't successful.
166+
167+ Returns
168+ ------
169+ Boolean
170+ """
171+
172+ if not device :
173+ raise Exception ("device is required" )
174+
175+ params = {
176+ "device_id" : to_device_id (device ),
177+ "name" : name ,
178+ "properties" : properties ,
179+ "location" : location ,
180+ }
181+
182+ res = requests .post (
183+ f"{ self .seam .api_url } /devices/update" ,
184+ headers = {"Authorization" : f"Bearer { self .seam .api_key } " },
185+ params = params ,
186+ )
187+ if not res .ok :
188+ raise Exception (res .text )
189+
190+ return True
0 commit comments