@@ -765,8 +765,10 @@ def __init__(self, *args, **kwargs):
765
765
def to_payload (self ):
766
766
# type: () -> typing.Dict[str, typing.Any]
767
767
payload = {} # type: typing.Dict[str, typing.Any]
768
+
768
769
if self .client_token is not None :
769
770
payload ['clientToken' ] = self .client_token
771
+
770
772
return payload
771
773
772
774
class DeleteNamedShadowSubscriptionRequest (awsiot .ModeledClass ):
@@ -824,8 +826,10 @@ def __init__(self, *args, **kwargs):
824
826
def to_payload (self ):
825
827
# type: () -> typing.Dict[str, typing.Any]
826
828
payload = {} # type: typing.Dict[str, typing.Any]
829
+
827
830
if self .client_token is not None :
828
831
payload ['clientToken' ] = self .client_token
832
+
829
833
return payload
830
834
831
835
class DeleteShadowResponse (awsiot .ModeledClass ):
@@ -977,8 +981,10 @@ def __init__(self, *args, **kwargs):
977
981
def to_payload (self ):
978
982
# type: () -> typing.Dict[str, typing.Any]
979
983
payload = {} # type: typing.Dict[str, typing.Any]
984
+
980
985
if self .client_token is not None :
981
986
payload ['clientToken' ] = self .client_token
987
+
982
988
return payload
983
989
984
990
class GetNamedShadowSubscriptionRequest (awsiot .ModeledClass ):
@@ -1036,8 +1042,10 @@ def __init__(self, *args, **kwargs):
1036
1042
def to_payload (self ):
1037
1043
# type: () -> typing.Dict[str, typing.Any]
1038
1044
payload = {} # type: typing.Dict[str, typing.Any]
1045
+
1039
1046
if self .client_token is not None :
1040
1047
payload ['clientToken' ] = self .client_token
1048
+
1041
1049
return payload
1042
1050
1043
1051
class GetShadowResponse (awsiot .ModeledClass ):
@@ -1295,15 +1303,22 @@ class ShadowState(awsiot.ModeledClass):
1295
1303
1296
1304
Attributes:
1297
1305
desired (typing.Dict[str, typing.Any]): The desired shadow state (from external services and devices).
1306
+ desired_is_nullable (bool): Set to true to allow 'desired' to be None, clearing the data if sent.
1307
+
1298
1308
reported (typing.Dict[str, typing.Any]): The (last) reported shadow state from the device.
1309
+ reported_is_nullable (bool): Set to true to allow 'reported' to be None, clearing the data if sent.
1310
+
1299
1311
"""
1300
1312
1301
- __slots__ = ['desired' , 'reported' ]
1313
+ __slots__ = ['desired' , 'desired_is_nullable' , ' reported' , 'reported_is_nullable ' ]
1302
1314
1303
1315
def __init__ (self , * args , ** kwargs ):
1304
1316
self .desired = kwargs .get ('desired' )
1305
1317
self .reported = kwargs .get ('reported' )
1306
1318
1319
+ self .desired_is_nullable = kwargs .get ('desired_is_nullable' , False )
1320
+ self .reported_is_nullable = kwargs .get ('reported_is_nullable' , False )
1321
+
1307
1322
# for backwards compatibility, read any arguments that used to be accepted by position
1308
1323
for key , val in zip (['desired' , 'reported' ], args ):
1309
1324
setattr (self , key , val )
@@ -1318,15 +1333,28 @@ def from_payload(cls, payload):
1318
1333
val = payload .get ('reported' )
1319
1334
if val is not None :
1320
1335
new .reported = val
1336
+ if new .desired == None :
1337
+ new .desired_is_nullable = True
1338
+ if new .reported == None :
1339
+ new .reported_is_nullable = True
1321
1340
return new
1322
1341
1323
1342
def to_payload (self ):
1324
1343
# type: () -> typing.Dict[str, typing.Any]
1325
1344
payload = {} # type: typing.Dict[str, typing.Any]
1326
- if self .desired is not None :
1345
+
1346
+ if self .desired_is_nullable is True :
1327
1347
payload ['desired' ] = self .desired
1328
- if self .reported is not None :
1348
+ else :
1349
+ if self .desired is not None :
1350
+ payload ['desired' ] = self .desired
1351
+
1352
+ if self .reported_is_nullable is True :
1329
1353
payload ['reported' ] = self .reported
1354
+ else :
1355
+ if self .reported is not None :
1356
+ payload ['reported' ] = self .reported
1357
+
1330
1358
return payload
1331
1359
1332
1360
class ShadowStateWithDelta (awsiot .ModeledClass ):
@@ -1522,12 +1550,16 @@ def __init__(self, *args, **kwargs):
1522
1550
def to_payload (self ):
1523
1551
# type: () -> typing.Dict[str, typing.Any]
1524
1552
payload = {} # type: typing.Dict[str, typing.Any]
1553
+
1525
1554
if self .client_token is not None :
1526
1555
payload ['clientToken' ] = self .client_token
1556
+
1527
1557
if self .state is not None :
1528
1558
payload ['state' ] = self .state .to_payload ()
1559
+
1529
1560
if self .version is not None :
1530
1561
payload ['version' ] = self .version
1562
+
1531
1563
return payload
1532
1564
1533
1565
class UpdateNamedShadowSubscriptionRequest (awsiot .ModeledClass ):
@@ -1591,12 +1623,16 @@ def __init__(self, *args, **kwargs):
1591
1623
def to_payload (self ):
1592
1624
# type: () -> typing.Dict[str, typing.Any]
1593
1625
payload = {} # type: typing.Dict[str, typing.Any]
1626
+
1594
1627
if self .client_token is not None :
1595
1628
payload ['clientToken' ] = self .client_token
1629
+
1596
1630
if self .state is not None :
1597
1631
payload ['state' ] = self .state .to_payload ()
1632
+
1598
1633
if self .version is not None :
1599
1634
payload ['version' ] = self .version
1635
+
1600
1636
return payload
1601
1637
1602
1638
class UpdateShadowResponse (awsiot .ModeledClass ):
0 commit comments