1
+ from seamapi .types import (AbstractAccessCodes ,AbstractSeam as Seam ,AccessCode ,ActionAttempt )
2
+ from typing import (Optional , Any )
3
+
4
+ class AccessCodes (AbstractAccessCodes ):
5
+ seam : Seam
6
+
7
+ def __init__ (self , seam : Seam ):
8
+ self .seam = seam
9
+
10
+
11
+
12
+ def create (self , device_id : Optional [Any ] = None , name : Optional [Any ] = None , starts_at : Optional [Any ] = None , ends_at : Optional [Any ] = None , code : Optional [Any ] = None , sync : Optional [Any ] = None , attempt_for_offline_device : Optional [Any ] = None , common_code_key : Optional [Any ] = None , prefer_native_scheduling : Optional [Any ] = None , use_backup_access_code_pool : Optional [Any ] = None , allow_external_modification : Optional [Any ] = None , is_external_modification_allowed : Optional [Any ] = None , use_offline_access_code : Optional [Any ] = None , is_offline_access_code : Optional [Any ] = None , is_one_time_use : Optional [Any ] = None , max_time_rounding : Optional [Any ] = None ):
13
+ json_payload = {}
14
+ if device_id is not None :
15
+ json_payload ["device_id" ] = device_id
16
+ if name is not None :
17
+ json_payload ["name" ] = name
18
+ if starts_at is not None :
19
+ json_payload ["starts_at" ] = starts_at
20
+ if ends_at is not None :
21
+ json_payload ["ends_at" ] = ends_at
22
+ if code is not None :
23
+ json_payload ["code" ] = code
24
+ if sync is not None :
25
+ json_payload ["sync" ] = sync
26
+ if attempt_for_offline_device is not None :
27
+ json_payload ["attempt_for_offline_device" ] = attempt_for_offline_device
28
+ if common_code_key is not None :
29
+ json_payload ["common_code_key" ] = common_code_key
30
+ if prefer_native_scheduling is not None :
31
+ json_payload ["prefer_native_scheduling" ] = prefer_native_scheduling
32
+ if use_backup_access_code_pool is not None :
33
+ json_payload ["use_backup_access_code_pool" ] = use_backup_access_code_pool
34
+ if allow_external_modification is not None :
35
+ json_payload ["allow_external_modification" ] = allow_external_modification
36
+ if is_external_modification_allowed is not None :
37
+ json_payload ["is_external_modification_allowed" ] = is_external_modification_allowed
38
+ if use_offline_access_code is not None :
39
+ json_payload ["use_offline_access_code" ] = use_offline_access_code
40
+ if is_offline_access_code is not None :
41
+ json_payload ["is_offline_access_code" ] = is_offline_access_code
42
+ if is_one_time_use is not None :
43
+ json_payload ["is_one_time_use" ] = is_one_time_use
44
+ if max_time_rounding is not None :
45
+ json_payload ["max_time_rounding" ] = max_time_rounding
46
+ res = self .seam .make_request (
47
+ "POST" ,
48
+ "/access_codes/create" ,
49
+ json = json_payload
50
+ )
51
+ return AccessCode .from_dict (res ["access_code" ])
52
+
53
+
54
+ def create_multiple (self , device_ids : Optional [Any ] = None , behavior_when_code_cannot_be_shared : Optional [Any ] = None , name : Optional [Any ] = None , starts_at : Optional [Any ] = None , ends_at : Optional [Any ] = None , code : Optional [Any ] = None , attempt_for_offline_device : Optional [Any ] = None , prefer_native_scheduling : Optional [Any ] = None , use_backup_access_code_pool : Optional [Any ] = None , allow_external_modification : Optional [Any ] = None , is_external_modification_allowed : Optional [Any ] = None , use_offline_access_code : Optional [Any ] = None , is_offline_access_code : Optional [Any ] = None , is_one_time_use : Optional [Any ] = None , max_time_rounding : Optional [Any ] = None ):
55
+ json_payload = {}
56
+ if device_ids is not None :
57
+ json_payload ["device_ids" ] = device_ids
58
+ if behavior_when_code_cannot_be_shared is not None :
59
+ json_payload ["behavior_when_code_cannot_be_shared" ] = behavior_when_code_cannot_be_shared
60
+ if name is not None :
61
+ json_payload ["name" ] = name
62
+ if starts_at is not None :
63
+ json_payload ["starts_at" ] = starts_at
64
+ if ends_at is not None :
65
+ json_payload ["ends_at" ] = ends_at
66
+ if code is not None :
67
+ json_payload ["code" ] = code
68
+ if attempt_for_offline_device is not None :
69
+ json_payload ["attempt_for_offline_device" ] = attempt_for_offline_device
70
+ if prefer_native_scheduling is not None :
71
+ json_payload ["prefer_native_scheduling" ] = prefer_native_scheduling
72
+ if use_backup_access_code_pool is not None :
73
+ json_payload ["use_backup_access_code_pool" ] = use_backup_access_code_pool
74
+ if allow_external_modification is not None :
75
+ json_payload ["allow_external_modification" ] = allow_external_modification
76
+ if is_external_modification_allowed is not None :
77
+ json_payload ["is_external_modification_allowed" ] = is_external_modification_allowed
78
+ if use_offline_access_code is not None :
79
+ json_payload ["use_offline_access_code" ] = use_offline_access_code
80
+ if is_offline_access_code is not None :
81
+ json_payload ["is_offline_access_code" ] = is_offline_access_code
82
+ if is_one_time_use is not None :
83
+ json_payload ["is_one_time_use" ] = is_one_time_use
84
+ if max_time_rounding is not None :
85
+ json_payload ["max_time_rounding" ] = max_time_rounding
86
+ res = self .seam .make_request (
87
+ "POST" ,
88
+ "/access_codes/create_multiple" ,
89
+ json = json_payload
90
+ )
91
+ return [AccessCode .from_dict (item ) for item in res ["access_codes" ]]
92
+
93
+
94
+ def delete (self , device_id : Optional [Any ] = None , access_code_id : Optional [Any ] = None , sync : Optional [Any ] = None ):
95
+ json_payload = {}
96
+ if device_id is not None :
97
+ json_payload ["device_id" ] = device_id
98
+ if access_code_id is not None :
99
+ json_payload ["access_code_id" ] = access_code_id
100
+ if sync is not None :
101
+ json_payload ["sync" ] = sync
102
+ res = self .seam .make_request (
103
+ "POST" ,
104
+ "/access_codes/delete" ,
105
+ json = json_payload
106
+ )
107
+ return ActionAttempt .from_dict (res ["action_attempt" ])
108
+
109
+
110
+ def generate_code (self , device_id : Optional [Any ] = None ):
111
+ json_payload = {}
112
+ if device_id is not None :
113
+ json_payload ["device_id" ] = device_id
114
+ res = self .seam .make_request (
115
+ "POST" ,
116
+ "/access_codes/generate_code" ,
117
+ json = json_payload
118
+ )
119
+ return AccessCode .from_dict (res ["generated_code" ])
120
+
121
+
122
+ def get (self , access_code_id : Any , device_id : Optional [Any ] = None , code : Optional [Any ] = None ):
123
+ json_payload = {}
124
+ if access_code_id is not None :
125
+ json_payload ["access_code_id" ] = access_code_id
126
+ if device_id is not None :
127
+ json_payload ["device_id" ] = device_id
128
+ if code is not None :
129
+ json_payload ["code" ] = code
130
+ res = self .seam .make_request (
131
+ "POST" ,
132
+ "/access_codes/get" ,
133
+ json = json_payload
134
+ )
135
+ return AccessCode .from_dict (res ["access_code" ])
136
+
137
+
138
+ def list (self , device_id : Optional [Any ] = None , access_code_ids : Optional [Any ] = None , user_identifier_key : Optional [Any ] = None ):
139
+ json_payload = {}
140
+ if device_id is not None :
141
+ json_payload ["device_id" ] = device_id
142
+ if access_code_ids is not None :
143
+ json_payload ["access_code_ids" ] = access_code_ids
144
+ if user_identifier_key is not None :
145
+ json_payload ["user_identifier_key" ] = user_identifier_key
146
+ res = self .seam .make_request (
147
+ "POST" ,
148
+ "/access_codes/list" ,
149
+ json = json_payload
150
+ )
151
+ return [AccessCode .from_dict (item ) for item in res ["access_codes" ]]
152
+
153
+
154
+ def pull_backup_access_code (self , access_code_id : Optional [Any ] = None ):
155
+ json_payload = {}
156
+ if access_code_id is not None :
157
+ json_payload ["access_code_id" ] = access_code_id
158
+ res = self .seam .make_request (
159
+ "POST" ,
160
+ "/access_codes/pull_backup_access_code" ,
161
+ json = json_payload
162
+ )
163
+ return AccessCode .from_dict (res ["backup_access_code" ])
164
+
165
+
166
+ def update (self , name : Optional [Any ] = None , starts_at : Optional [Any ] = None , ends_at : Optional [Any ] = None , code : Optional [Any ] = None , sync : Optional [Any ] = None , attempt_for_offline_device : Optional [Any ] = None , prefer_native_scheduling : Optional [Any ] = None , use_backup_access_code_pool : Optional [Any ] = None , allow_external_modification : Optional [Any ] = None , is_external_modification_allowed : Optional [Any ] = None , use_offline_access_code : Optional [Any ] = None , is_offline_access_code : Optional [Any ] = None , is_one_time_use : Optional [Any ] = None , max_time_rounding : Optional [Any ] = None , access_code_id : Optional [Any ] = None , device_id : Optional [Any ] = None , type : Optional [Any ] = None , is_managed : Optional [Any ] = None ):
167
+ json_payload = {}
168
+ if name is not None :
169
+ json_payload ["name" ] = name
170
+ if starts_at is not None :
171
+ json_payload ["starts_at" ] = starts_at
172
+ if ends_at is not None :
173
+ json_payload ["ends_at" ] = ends_at
174
+ if code is not None :
175
+ json_payload ["code" ] = code
176
+ if sync is not None :
177
+ json_payload ["sync" ] = sync
178
+ if attempt_for_offline_device is not None :
179
+ json_payload ["attempt_for_offline_device" ] = attempt_for_offline_device
180
+ if prefer_native_scheduling is not None :
181
+ json_payload ["prefer_native_scheduling" ] = prefer_native_scheduling
182
+ if use_backup_access_code_pool is not None :
183
+ json_payload ["use_backup_access_code_pool" ] = use_backup_access_code_pool
184
+ if allow_external_modification is not None :
185
+ json_payload ["allow_external_modification" ] = allow_external_modification
186
+ if is_external_modification_allowed is not None :
187
+ json_payload ["is_external_modification_allowed" ] = is_external_modification_allowed
188
+ if use_offline_access_code is not None :
189
+ json_payload ["use_offline_access_code" ] = use_offline_access_code
190
+ if is_offline_access_code is not None :
191
+ json_payload ["is_offline_access_code" ] = is_offline_access_code
192
+ if is_one_time_use is not None :
193
+ json_payload ["is_one_time_use" ] = is_one_time_use
194
+ if max_time_rounding is not None :
195
+ json_payload ["max_time_rounding" ] = max_time_rounding
196
+ if access_code_id is not None :
197
+ json_payload ["access_code_id" ] = access_code_id
198
+ if device_id is not None :
199
+ json_payload ["device_id" ] = device_id
200
+ if type is not None :
201
+ json_payload ["type" ] = type
202
+ if is_managed is not None :
203
+ json_payload ["is_managed" ] = is_managed
204
+ res = self .seam .make_request (
205
+ "POST" ,
206
+ "/access_codes/update" ,
207
+ json = json_payload
208
+ )
209
+ return ActionAttempt .from_dict (res ["action_attempt" ])
0 commit comments