@@ -34,10 +34,12 @@ class AccessCodes(AbstractAccessCodes):
34
34
Gets a list of access codes for a device
35
35
get(access_code=None, device=None)
36
36
Gets a certain access code of a device
37
- create(device, name=None, code=None, starts_at=None, ends_at=None)
37
+ create(device, name=None, code=None, starts_at=None, ends_at=None, attempt_for_offline_device=None, wait_for_code=None, timeout=None, allow_external_modification=None, prefer_native_scheduling=None, use_backup_access_code_pool=None )
38
38
Creates an access code on a device
39
39
delete(access_code, device=None)
40
40
Deletes an access code on a device
41
+ pull_backup_access_code(access_code)
42
+ Pulls a backup access code.
41
43
"""
42
44
43
45
seam : Seam
@@ -147,6 +149,9 @@ def create(
147
149
attempt_for_offline_device : Optional [bool ] = True ,
148
150
wait_for_code : Optional [bool ] = False ,
149
151
timeout : Optional [int ] = 300 ,
152
+ allow_external_modification : Optional [bool ] = None ,
153
+ prefer_native_scheduling : Optional [bool ] = None ,
154
+ use_backup_access_code_pool : Optional [bool ] = None ,
150
155
) -> AccessCode :
151
156
"""Creates an access code on a device.
152
157
@@ -169,6 +174,12 @@ def create(
169
174
Poll the access code until the code is known.
170
175
timeout : int, optional:
171
176
Maximum polling time in seconds.
177
+ allow_external_modification : bool, optional:
178
+ Allow external modifications of the access code e.g. through the lock provider's app. False by default.
179
+ prefer_native_scheduling : bool, optional:
180
+ Where possible, prefer lock provider's native access code scheduling. True by default.
181
+ use_backup_access_code_pool : bool, optional:
182
+ Activate backup access code pool. False by default.
172
183
173
184
Raises
174
185
------
@@ -198,6 +209,18 @@ def create(
198
209
create_payload [
199
210
"attempt_for_offline_device"
200
211
] = attempt_for_offline_device
212
+ if allow_external_modification is not None :
213
+ create_payload [
214
+ "allow_external_modification"
215
+ ] = allow_external_modification
216
+ if prefer_native_scheduling is not None :
217
+ create_payload [
218
+ "prefer_native_scheduling"
219
+ ] = prefer_native_scheduling
220
+ if use_backup_access_code_pool is not None :
221
+ create_payload [
222
+ "use_backup_access_code_pool"
223
+ ] = use_backup_access_code_pool
201
224
202
225
if (
203
226
wait_for_code
@@ -241,7 +264,7 @@ def create(
241
264
errors = access_code .errors ,
242
265
)
243
266
244
- access_code = access_codes .get (access_code )
267
+ access_code = self . seam . access_codes .get (access_code )
245
268
246
269
return access_code
247
270
@@ -417,3 +440,33 @@ def delete(
417
440
)
418
441
419
442
return action_attempt
443
+
444
+ @report_error
445
+ def pull_backup_access_code (
446
+ self ,
447
+ access_code : Union [AccessCode , AccessCodeId ],
448
+ ) -> AccessCode :
449
+ """Pulls a backup access code.
450
+
451
+ Parameters
452
+ ----------
453
+ access_code : Union[AccessCode, AccessCodeId]
454
+ Access code ID or AccessCode
455
+
456
+ Raises
457
+ ------
458
+ Exception
459
+ If the API request wasn't successful.
460
+
461
+ Returns
462
+ ------
463
+ AccessCode
464
+ """
465
+
466
+ res = self .seam .make_request (
467
+ "POST" ,
468
+ "/access_codes/pull_backup_access_code" ,
469
+ json = {"access_code_id" : to_access_code_id (access_code )},
470
+ )
471
+
472
+ return AccessCode .from_dict (res ["backup_access_code" ])
0 commit comments