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