@seamapi/http 2.4.1 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/lib/request-parameters.d.ts +2 -0
  2. package/lib/request-parameters.js +17 -0
  3. package/lib/request-parameters.js.map +1 -0
  4. package/lib/resources/access-code.d.ts +13 -9
  5. package/lib/resources/acs-credential.d.ts +33 -1
  6. package/lib/resources/acs-entrance.d.ts +1 -1
  7. package/lib/resources/acs-system.d.ts +30 -0
  8. package/lib/resources/action-attempt.d.ts +82 -11
  9. package/lib/resources/device-provider.d.ts +1 -1
  10. package/lib/resources/device.d.ts +63 -18
  11. package/lib/resources/event.d.ts +0 -76
  12. package/lib/resources/unmanaged-access-code.d.ts +13 -9
  13. package/lib/resources/unmanaged-device.d.ts +28 -16
  14. package/lib/routes/access-codes/access-codes.d.ts +8 -35
  15. package/lib/routes/access-codes/access-codes.js +17 -6
  16. package/lib/routes/access-codes/access-codes.js.map +1 -1
  17. package/lib/routes/access-codes/simulate/simulate.js +2 -0
  18. package/lib/routes/access-codes/simulate/simulate.js.map +1 -1
  19. package/lib/routes/access-codes/unmanaged/unmanaged.d.ts +5 -4
  20. package/lib/routes/access-codes/unmanaged/unmanaged.js +12 -6
  21. package/lib/routes/access-codes/unmanaged/unmanaged.js.map +1 -1
  22. package/lib/routes/access-grants/access-grants.d.ts +20 -19
  23. package/lib/routes/access-grants/access-grants.js +10 -2
  24. package/lib/routes/access-grants/access-grants.js.map +1 -1
  25. package/lib/routes/access-grants/unmanaged/unmanaged.d.ts +1 -1
  26. package/lib/routes/access-grants/unmanaged/unmanaged.js +8 -4
  27. package/lib/routes/access-grants/unmanaged/unmanaged.js.map +1 -1
  28. package/lib/routes/access-methods/access-methods.d.ts +8 -7
  29. package/lib/routes/access-methods/access-methods.js +12 -4
  30. package/lib/routes/access-methods/access-methods.js.map +1 -1
  31. package/lib/routes/access-methods/unmanaged/unmanaged.js +7 -4
  32. package/lib/routes/access-methods/unmanaged/unmanaged.js.map +1 -1
  33. package/lib/routes/acs/access-groups/access-groups.js +20 -12
  34. package/lib/routes/acs/access-groups/access-groups.js.map +1 -1
  35. package/lib/routes/acs/credentials/credentials.d.ts +1 -1
  36. package/lib/routes/acs/credentials/credentials.js +15 -6
  37. package/lib/routes/acs/credentials/credentials.js.map +1 -1
  38. package/lib/routes/acs/encoders/encoders.d.ts +1 -1
  39. package/lib/routes/acs/encoders/encoders.js +10 -4
  40. package/lib/routes/acs/encoders/encoders.js.map +1 -1
  41. package/lib/routes/acs/encoders/simulate/simulate.js +5 -0
  42. package/lib/routes/acs/encoders/simulate/simulate.js.map +1 -1
  43. package/lib/routes/acs/entrances/entrances.d.ts +2 -2
  44. package/lib/routes/acs/entrances/entrances.js +8 -2
  45. package/lib/routes/acs/entrances/entrances.js.map +1 -1
  46. package/lib/routes/acs/systems/systems.js +11 -6
  47. package/lib/routes/acs/systems/systems.js.map +1 -1
  48. package/lib/routes/acs/users/users.d.ts +25 -24
  49. package/lib/routes/acs/users/users.js +22 -10
  50. package/lib/routes/acs/users/users.js.map +1 -1
  51. package/lib/routes/action-attempts/action-attempts.d.ts +1 -1
  52. package/lib/routes/action-attempts/action-attempts.js +5 -2
  53. package/lib/routes/action-attempts/action-attempts.js.map +1 -1
  54. package/lib/routes/client-sessions/client-sessions.d.ts +4 -3
  55. package/lib/routes/client-sessions/client-sessions.js +14 -6
  56. package/lib/routes/client-sessions/client-sessions.js.map +1 -1
  57. package/lib/routes/connect-webviews/connect-webviews.d.ts +2 -2
  58. package/lib/routes/connect-webviews/connect-webviews.js +9 -4
  59. package/lib/routes/connect-webviews/connect-webviews.js.map +1 -1
  60. package/lib/routes/connected-accounts/connected-accounts.d.ts +5 -4
  61. package/lib/routes/connected-accounts/connected-accounts.js +8 -2
  62. package/lib/routes/connected-accounts/connected-accounts.js.map +1 -1
  63. package/lib/routes/connected-accounts/simulate/simulate.js +2 -0
  64. package/lib/routes/connected-accounts/simulate/simulate.js.map +1 -1
  65. package/lib/routes/customers/customers.d.ts +9 -9
  66. package/lib/routes/customers/customers.js +4 -0
  67. package/lib/routes/customers/customers.js.map +1 -1
  68. package/lib/routes/devices/devices.d.ts +11 -10
  69. package/lib/routes/devices/devices.js +10 -4
  70. package/lib/routes/devices/devices.js.map +1 -1
  71. package/lib/routes/devices/simulate/simulate.js +7 -0
  72. package/lib/routes/devices/simulate/simulate.js.map +1 -1
  73. package/lib/routes/devices/unmanaged/unmanaged.d.ts +8 -23
  74. package/lib/routes/devices/unmanaged/unmanaged.js +6 -2
  75. package/lib/routes/devices/unmanaged/unmanaged.js.map +1 -1
  76. package/lib/routes/events/events.d.ts +8 -7
  77. package/lib/routes/events/events.js +5 -2
  78. package/lib/routes/events/events.js.map +1 -1
  79. package/lib/routes/instant-keys/instant-keys.d.ts +4 -3
  80. package/lib/routes/instant-keys/instant-keys.js +10 -6
  81. package/lib/routes/instant-keys/instant-keys.js.map +1 -1
  82. package/lib/routes/locks/locks.d.ts +7 -46
  83. package/lib/routes/locks/locks.js +8 -2
  84. package/lib/routes/locks/locks.js.map +1 -1
  85. package/lib/routes/locks/simulate/simulate.js +3 -0
  86. package/lib/routes/locks/simulate/simulate.js.map +1 -1
  87. package/lib/routes/noise-sensors/noise-sensors.d.ts +0 -40
  88. package/lib/routes/noise-sensors/noise-sensors.js +2 -0
  89. package/lib/routes/noise-sensors/noise-sensors.js.map +1 -1
  90. package/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.js +12 -6
  91. package/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.js.map +1 -1
  92. package/lib/routes/noise-sensors/simulate/simulate.js +2 -0
  93. package/lib/routes/noise-sensors/simulate/simulate.js.map +1 -1
  94. package/lib/routes/phones/phones.js +10 -6
  95. package/lib/routes/phones/phones.js.map +1 -1
  96. package/lib/routes/phones/simulate/simulate.js +2 -0
  97. package/lib/routes/phones/simulate/simulate.js.map +1 -1
  98. package/lib/routes/seam-http-endpoints.d.ts +26 -26
  99. package/lib/routes/spaces/spaces.d.ts +16 -15
  100. package/lib/routes/spaces/spaces.js +19 -6
  101. package/lib/routes/spaces/spaces.js.map +1 -1
  102. package/lib/routes/thermostats/daily-programs/daily-programs.js +6 -2
  103. package/lib/routes/thermostats/daily-programs/daily-programs.js.map +1 -1
  104. package/lib/routes/thermostats/schedules/schedules.d.ts +2 -2
  105. package/lib/routes/thermostats/schedules/schedules.js +12 -6
  106. package/lib/routes/thermostats/schedules/schedules.js.map +1 -1
  107. package/lib/routes/thermostats/simulate/simulate.js +3 -0
  108. package/lib/routes/thermostats/simulate/simulate.js.map +1 -1
  109. package/lib/routes/thermostats/thermostats.d.ts +13 -53
  110. package/lib/routes/thermostats/thermostats.js +17 -2
  111. package/lib/routes/thermostats/thermostats.js.map +1 -1
  112. package/lib/routes/user-identities/unmanaged/unmanaged.d.ts +1 -1
  113. package/lib/routes/user-identities/unmanaged/unmanaged.js +8 -4
  114. package/lib/routes/user-identities/unmanaged/unmanaged.js.map +1 -1
  115. package/lib/routes/user-identities/user-identities.d.ts +13 -12
  116. package/lib/routes/user-identities/user-identities.js +29 -14
  117. package/lib/routes/user-identities/user-identities.js.map +1 -1
  118. package/lib/routes/webhooks/webhooks.js +10 -4
  119. package/lib/routes/webhooks/webhooks.js.map +1 -1
  120. package/lib/routes/workspaces/workspaces.d.ts +9 -9
  121. package/lib/routes/workspaces/workspaces.js +6 -0
  122. package/lib/routes/workspaces/workspaces.js.map +1 -1
  123. package/lib/version.d.ts +1 -1
  124. package/lib/version.js +1 -1
  125. package/package.json +3 -3
  126. package/src/lib/request-parameters.ts +33 -0
  127. package/src/lib/resources/access-code.ts +15 -9
  128. package/src/lib/resources/acs-credential.ts +40 -0
  129. package/src/lib/resources/acs-entrance.ts +1 -1
  130. package/src/lib/resources/acs-system.ts +36 -0
  131. package/src/lib/resources/action-attempt.ts +91 -6
  132. package/src/lib/resources/device-provider.ts +1 -0
  133. package/src/lib/resources/device.ts +70 -20
  134. package/src/lib/resources/event.ts +0 -76
  135. package/src/lib/resources/unmanaged-access-code.ts +15 -9
  136. package/src/lib/resources/unmanaged-device.ts +33 -18
  137. package/src/lib/routes/access-codes/access-codes.ts +57 -41
  138. package/src/lib/routes/access-codes/simulate/simulate.ts +7 -0
  139. package/src/lib/routes/access-codes/unmanaged/unmanaged.ts +44 -10
  140. package/src/lib/routes/access-grants/access-grants.ts +43 -21
  141. package/src/lib/routes/access-grants/unmanaged/unmanaged.ts +24 -5
  142. package/src/lib/routes/access-methods/access-methods.ts +41 -11
  143. package/src/lib/routes/access-methods/unmanaged/unmanaged.ts +17 -4
  144. package/src/lib/routes/acs/access-groups/access-groups.ts +43 -12
  145. package/src/lib/routes/acs/credentials/credentials.ts +28 -7
  146. package/src/lib/routes/acs/encoders/encoders.ts +28 -5
  147. package/src/lib/routes/acs/encoders/simulate/simulate.ts +25 -0
  148. package/src/lib/routes/acs/entrances/entrances.ts +23 -4
  149. package/src/lib/routes/acs/systems/systems.ts +23 -6
  150. package/src/lib/routes/acs/users/users.ts +76 -33
  151. package/src/lib/routes/action-attempts/action-attempts.ts +8 -3
  152. package/src/lib/routes/client-sessions/client-sessions.ts +35 -9
  153. package/src/lib/routes/connect-webviews/connect-webviews.ts +15 -5
  154. package/src/lib/routes/connected-accounts/connected-accounts.ts +20 -6
  155. package/src/lib/routes/connected-accounts/simulate/simulate.ts +7 -0
  156. package/src/lib/routes/customers/customers.ts +16 -9
  157. package/src/lib/routes/devices/devices.ts +36 -11
  158. package/src/lib/routes/devices/simulate/simulate.ts +29 -0
  159. package/src/lib/routes/devices/unmanaged/unmanaged.ts +19 -22
  160. package/src/lib/routes/events/events.ts +17 -9
  161. package/src/lib/routes/instant-keys/instant-keys.ts +19 -9
  162. package/src/lib/routes/locks/locks.ts +22 -45
  163. package/src/lib/routes/locks/simulate/simulate.ts +13 -0
  164. package/src/lib/routes/noise-sensors/noise-sensors.ts +3 -40
  165. package/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts +37 -6
  166. package/src/lib/routes/noise-sensors/simulate/simulate.ts +7 -0
  167. package/src/lib/routes/phones/phones.ts +13 -6
  168. package/src/lib/routes/phones/simulate/simulate.ts +7 -0
  169. package/src/lib/routes/seam-http-endpoints.ts +26 -26
  170. package/src/lib/routes/spaces/spaces.ts +61 -21
  171. package/src/lib/routes/thermostats/daily-programs/daily-programs.ts +21 -2
  172. package/src/lib/routes/thermostats/schedules/schedules.ts +35 -8
  173. package/src/lib/routes/thermostats/simulate/simulate.ts +13 -0
  174. package/src/lib/routes/thermostats/thermostats.ts +72 -55
  175. package/src/lib/routes/user-identities/unmanaged/unmanaged.ts +24 -5
  176. package/src/lib/routes/user-identities/user-identities.ts +94 -26
  177. package/src/lib/routes/webhooks/webhooks.ts +15 -4
  178. package/src/lib/routes/workspaces/workspaces.ts +20 -9
  179. package/src/lib/version.ts +1 -1
@@ -28,6 +28,10 @@ import {
28
28
  limitToSeamHttpRequestOptions,
29
29
  parseOptions,
30
30
  } from 'lib/parse-options.js'
31
+ import {
32
+ assertValidRequestParameters,
33
+ type RequireAtLeastOne,
34
+ } from 'lib/request-parameters.js'
31
35
  import type { UnmanagedAccessCode } from 'lib/resources/unmanaged-access-code.js'
32
36
  import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js'
33
37
  import { SeamHttpRequest } from 'lib/seam-http-request.js'
@@ -169,6 +173,12 @@ export class SeamHttpAccessCodesUnmanaged {
169
173
  parameters: AccessCodesUnmanagedConvertToManagedParameters,
170
174
  options: AccessCodesUnmanagedConvertToManagedOptions = {},
171
175
  ): AccessCodesUnmanagedConvertToManagedRequest {
176
+ assertValidRequestParameters(
177
+ parameters,
178
+ '/access_codes/unmanaged/convert_to_managed',
179
+ true,
180
+ )
181
+
172
182
  return new SeamHttpRequest(this, {
173
183
  pathname: '/access_codes/unmanaged/convert_to_managed',
174
184
  method: 'PATCH',
@@ -185,10 +195,16 @@ export class SeamHttpAccessCodesUnmanaged {
185
195
  parameters: AccessCodesUnmanagedDeleteParameters,
186
196
  options: AccessCodesUnmanagedDeleteOptions = {},
187
197
  ): AccessCodesUnmanagedDeleteRequest {
198
+ assertValidRequestParameters(
199
+ parameters,
200
+ '/access_codes/unmanaged/delete',
201
+ true,
202
+ )
203
+
188
204
  return new SeamHttpRequest(this, {
189
205
  pathname: '/access_codes/unmanaged/delete',
190
- method: 'POST',
191
- body: parameters,
206
+ method: 'DELETE',
207
+ params: parameters,
192
208
  responseKey: undefined,
193
209
  options,
194
210
  })
@@ -200,13 +216,19 @@ export class SeamHttpAccessCodesUnmanaged {
200
216
  * You must specify either `access_code_id` or both `device_id` and `code`.
201
217
  */
202
218
  get(
203
- parameters?: AccessCodesUnmanagedGetParameters,
219
+ parameters: AccessCodesUnmanagedGetParameters,
204
220
  options: AccessCodesUnmanagedGetOptions = {},
205
221
  ): AccessCodesUnmanagedGetRequest {
222
+ assertValidRequestParameters(
223
+ parameters,
224
+ '/access_codes/unmanaged/get',
225
+ true,
226
+ )
227
+
206
228
  return new SeamHttpRequest(this, {
207
229
  pathname: '/access_codes/unmanaged/get',
208
- method: 'POST',
209
- body: parameters,
230
+ method: 'GET',
231
+ params: parameters,
210
232
  responseKey: 'access_code',
211
233
  options,
212
234
  })
@@ -219,10 +241,16 @@ export class SeamHttpAccessCodesUnmanaged {
219
241
  parameters: AccessCodesUnmanagedListParameters,
220
242
  options: AccessCodesUnmanagedListOptions = {},
221
243
  ): AccessCodesUnmanagedListRequest {
244
+ assertValidRequestParameters(
245
+ parameters,
246
+ '/access_codes/unmanaged/list',
247
+ true,
248
+ )
249
+
222
250
  return new SeamHttpRequest(this, {
223
251
  pathname: '/access_codes/unmanaged/list',
224
- method: 'POST',
225
- body: parameters,
252
+ method: 'GET',
253
+ params: parameters,
226
254
  responseKey: 'access_codes',
227
255
  options,
228
256
  })
@@ -235,6 +263,12 @@ export class SeamHttpAccessCodesUnmanaged {
235
263
  parameters: AccessCodesUnmanagedUpdateParameters,
236
264
  options: AccessCodesUnmanagedUpdateOptions = {},
237
265
  ): AccessCodesUnmanagedUpdateRequest {
266
+ assertValidRequestParameters(
267
+ parameters,
268
+ '/access_codes/unmanaged/update',
269
+ true,
270
+ )
271
+
238
272
  return new SeamHttpRequest(this, {
239
273
  pathname: '/access_codes/unmanaged/update',
240
274
  method: 'PATCH',
@@ -293,7 +327,7 @@ export type AccessCodesUnmanagedDeleteRequest = SeamHttpRequest<void, undefined>
293
327
 
294
328
  export interface AccessCodesUnmanagedDeleteOptions {}
295
329
 
296
- export type AccessCodesUnmanagedGetParameters = {
330
+ export type AccessCodesUnmanagedGetParameters = RequireAtLeastOne<{
297
331
  /**
298
332
  * ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
299
333
  */
@@ -306,7 +340,7 @@ export type AccessCodesUnmanagedGetParameters = {
306
340
  * ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`.
307
341
  */
308
342
  device_id?: string | undefined
309
- }
343
+ }>
310
344
 
311
345
  /**
312
346
  * @deprecated Use AccessCodesUnmanagedGetRequest instead.
@@ -335,7 +369,7 @@ export type AccessCodesUnmanagedListParameters = {
335
369
  /**
336
370
  * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
337
371
  */
338
- page_cursor?: string | undefined
372
+ page_cursor?: string | null | undefined
339
373
  /**
340
374
  * String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`.
341
375
  */
@@ -28,6 +28,10 @@ import {
28
28
  limitToSeamHttpRequestOptions,
29
29
  parseOptions,
30
30
  } from 'lib/parse-options.js'
31
+ import {
32
+ assertValidRequestParameters,
33
+ type RequireAtLeastOne,
34
+ } from 'lib/request-parameters.js'
31
35
  import type { AccessGrant } from 'lib/resources/access-grant.js'
32
36
  import type { Batch } from 'lib/resources/batch.js'
33
37
  import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js'
@@ -172,6 +176,8 @@ export class SeamHttpAccessGrants {
172
176
  parameters: AccessGrantsCreateParameters,
173
177
  options: AccessGrantsCreateOptions = {},
174
178
  ): AccessGrantsCreateRequest {
179
+ assertValidRequestParameters(parameters, '/access_grants/create', true)
180
+
175
181
  return new SeamHttpRequest(this, {
176
182
  pathname: '/access_grants/create',
177
183
  method: 'POST',
@@ -188,10 +194,12 @@ export class SeamHttpAccessGrants {
188
194
  parameters: AccessGrantsDeleteParameters,
189
195
  options: AccessGrantsDeleteOptions = {},
190
196
  ): AccessGrantsDeleteRequest {
197
+ assertValidRequestParameters(parameters, '/access_grants/delete', true)
198
+
191
199
  return new SeamHttpRequest(this, {
192
200
  pathname: '/access_grants/delete',
193
- method: 'POST',
194
- body: parameters,
201
+ method: 'DELETE',
202
+ params: parameters,
195
203
  responseKey: undefined,
196
204
  options,
197
205
  })
@@ -201,9 +209,11 @@ export class SeamHttpAccessGrants {
201
209
  * Get an Access Grant.
202
210
  */
203
211
  get(
204
- parameters?: AccessGrantsGetParameters,
212
+ parameters: AccessGrantsGetParameters,
205
213
  options: AccessGrantsGetOptions = {},
206
214
  ): AccessGrantsGetRequest {
215
+ assertValidRequestParameters(parameters, '/access_grants/get', true)
216
+
207
217
  return new SeamHttpRequest(this, {
208
218
  pathname: '/access_grants/get',
209
219
  method: 'GET',
@@ -217,9 +227,11 @@ export class SeamHttpAccessGrants {
217
227
  * Gets all related resources for one or more Access Grants.
218
228
  */
219
229
  getRelated(
220
- parameters?: AccessGrantsGetRelatedParameters,
230
+ parameters: AccessGrantsGetRelatedParameters,
221
231
  options: AccessGrantsGetRelatedOptions = {},
222
232
  ): AccessGrantsGetRelatedRequest {
233
+ assertValidRequestParameters(parameters, '/access_grants/get_related', true)
234
+
223
235
  return new SeamHttpRequest(this, {
224
236
  pathname: '/access_grants/get_related',
225
237
  method: 'POST',
@@ -236,6 +248,8 @@ export class SeamHttpAccessGrants {
236
248
  parameters?: AccessGrantsListParameters,
237
249
  options: AccessGrantsListOptions = {},
238
250
  ): AccessGrantsListRequest {
251
+ assertValidRequestParameters(parameters, '/access_grants/list', false)
252
+
239
253
  return new SeamHttpRequest(this, {
240
254
  pathname: '/access_grants/list',
241
255
  method: 'POST',
@@ -252,6 +266,12 @@ export class SeamHttpAccessGrants {
252
266
  parameters: AccessGrantsRequestAccessMethodsParameters,
253
267
  options: AccessGrantsRequestAccessMethodsOptions = {},
254
268
  ): AccessGrantsRequestAccessMethodsRequest {
269
+ assertValidRequestParameters(
270
+ parameters,
271
+ '/access_grants/request_access_methods',
272
+ true,
273
+ )
274
+
255
275
  return new SeamHttpRequest(this, {
256
276
  pathname: '/access_grants/request_access_methods',
257
277
  method: 'POST',
@@ -265,9 +285,11 @@ export class SeamHttpAccessGrants {
265
285
  * Updates an existing Access Grant's time window.
266
286
  */
267
287
  update(
268
- parameters?: AccessGrantsUpdateParameters,
288
+ parameters: AccessGrantsUpdateParameters,
269
289
  options: AccessGrantsUpdateOptions = {},
270
290
  ): AccessGrantsUpdateRequest {
291
+ assertValidRequestParameters(parameters, '/access_grants/update', true)
292
+
271
293
  return new SeamHttpRequest(this, {
272
294
  pathname: '/access_grants/update',
273
295
  method: 'PATCH',
@@ -291,19 +313,19 @@ export type AccessGrantsCreateParameters = {
291
313
  /**
292
314
  * Unique email address for the user identity.
293
315
  */
294
- email_address?: string | undefined
316
+ email_address?: string | null | undefined
295
317
  /**
296
318
  * Full name of the user associated with the user identity.
297
319
  */
298
- full_name?: string | undefined
320
+ full_name?: string | null | undefined
299
321
  /**
300
322
  * Unique phone number for the user identity in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, +15555550100).
301
323
  */
302
- phone_number?: string | undefined
324
+ phone_number?: string | null | undefined
303
325
  /**
304
326
  * Unique key for the user identity.
305
327
  */
306
- user_identity_key?: string | undefined
328
+ user_identity_key?: string | null | undefined
307
329
  }
308
330
  | undefined
309
331
  /**
@@ -325,7 +347,7 @@ export type AccessGrantsCreateParameters = {
325
347
  /**
326
348
  * Date and time at which the validity of the new grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
327
349
  */
328
- ends_at?: string | undefined
350
+ ends_at?: string | null | undefined
329
351
  /**
330
352
  * @deprecated Create a space first, then reference it using `space_ids`.
331
353
  */
@@ -352,7 +374,7 @@ export type AccessGrantsCreateParameters = {
352
374
  /**
353
375
  * Name for the access grant.
354
376
  */
355
- name?: string | undefined
377
+ name?: string | null | undefined
356
378
 
357
379
  requested_access_methods: Array<{
358
380
  /**
@@ -415,7 +437,7 @@ export type AccessGrantsDeleteRequest = SeamHttpRequest<void, undefined>
415
437
 
416
438
  export interface AccessGrantsDeleteOptions {}
417
439
 
418
- export type AccessGrantsGetParameters = {
440
+ export type AccessGrantsGetParameters = RequireAtLeastOne<{
419
441
  /**
420
442
  * ID of Access Grant to get.
421
443
  */
@@ -424,7 +446,7 @@ export type AccessGrantsGetParameters = {
424
446
  * Unique key of Access Grant to get.
425
447
  */
426
448
  access_grant_key?: string | undefined
427
- }
449
+ }>
428
450
 
429
451
  /**
430
452
  * @deprecated Use AccessGrantsGetRequest instead.
@@ -438,7 +460,7 @@ export type AccessGrantsGetRequest = SeamHttpRequest<
438
460
 
439
461
  export interface AccessGrantsGetOptions {}
440
462
 
441
- export type AccessGrantsGetRelatedParameters = {
463
+ export type AccessGrantsGetRelatedParameters = RequireAtLeastOne<{
442
464
  /**
443
465
  * IDs of the access grants that you want to get along with their related resources.
444
466
  */
@@ -473,7 +495,7 @@ export type AccessGrantsGetRelatedParameters = {
473
495
  | 'access_methods'
474
496
  >
475
497
  | undefined
476
- }
498
+ }>
477
499
 
478
500
  /**
479
501
  * @deprecated Use AccessGrantsGetRelatedRequest instead.
@@ -510,7 +532,7 @@ export type AccessGrantsListParameters = {
510
532
  /**
511
533
  * Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key.
512
534
  */
513
- access_grant_key?: string | undefined
535
+ access_grant_key?: string | null | undefined
514
536
  /**
515
537
  * ID of the entrance by which you want to filter the list of Access Grants.
516
538
  */
@@ -538,7 +560,7 @@ export type AccessGrantsListParameters = {
538
560
  /**
539
561
  * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
540
562
  */
541
- page_cursor?: string | undefined
563
+ page_cursor?: string | null | undefined
542
564
  /**
543
565
  * Filter Access Grants by reservation_key.
544
566
  */
@@ -604,7 +626,7 @@ export type AccessGrantsRequestAccessMethodsRequest = SeamHttpRequest<
604
626
 
605
627
  export interface AccessGrantsRequestAccessMethodsOptions {}
606
628
 
607
- export type AccessGrantsUpdateParameters = {
629
+ export type AccessGrantsUpdateParameters = RequireAtLeastOne<{
608
630
  /**
609
631
  * ID of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`.
610
632
  */
@@ -616,16 +638,16 @@ export type AccessGrantsUpdateParameters = {
616
638
  /**
617
639
  * Date and time at which the validity of the grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`.
618
640
  */
619
- ends_at?: string | undefined
641
+ ends_at?: string | null | undefined
620
642
  /**
621
643
  * Display name for the access grant.
622
644
  */
623
- name?: string | undefined
645
+ name?: string | null | undefined
624
646
  /**
625
647
  * Date and time at which the validity of the grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
626
648
  */
627
649
  starts_at?: string | undefined
628
- }
650
+ }>
629
651
 
630
652
  /**
631
653
  * @deprecated Use AccessGrantsUpdateRequest instead.
@@ -28,6 +28,7 @@ import {
28
28
  limitToSeamHttpRequestOptions,
29
29
  parseOptions,
30
30
  } from 'lib/parse-options.js'
31
+ import { assertValidRequestParameters } from 'lib/request-parameters.js'
31
32
  import type { UnmanagedAccessGrant } from 'lib/resources/unmanaged-access-grant.js'
32
33
  import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js'
33
34
  import { SeamHttpRequest } from 'lib/seam-http-request.js'
@@ -165,10 +166,16 @@ export class SeamHttpAccessGrantsUnmanaged {
165
166
  parameters: AccessGrantsUnmanagedGetParameters,
166
167
  options: AccessGrantsUnmanagedGetOptions = {},
167
168
  ): AccessGrantsUnmanagedGetRequest {
169
+ assertValidRequestParameters(
170
+ parameters,
171
+ '/access_grants/unmanaged/get',
172
+ true,
173
+ )
174
+
168
175
  return new SeamHttpRequest(this, {
169
176
  pathname: '/access_grants/unmanaged/get',
170
- method: 'POST',
171
- body: parameters,
177
+ method: 'GET',
178
+ params: parameters,
172
179
  responseKey: 'access_grant',
173
180
  options,
174
181
  })
@@ -181,10 +188,16 @@ export class SeamHttpAccessGrantsUnmanaged {
181
188
  parameters?: AccessGrantsUnmanagedListParameters,
182
189
  options: AccessGrantsUnmanagedListOptions = {},
183
190
  ): AccessGrantsUnmanagedListRequest {
191
+ assertValidRequestParameters(
192
+ parameters,
193
+ '/access_grants/unmanaged/list',
194
+ false,
195
+ )
196
+
184
197
  return new SeamHttpRequest(this, {
185
198
  pathname: '/access_grants/unmanaged/list',
186
- method: 'POST',
187
- body: parameters,
199
+ method: 'GET',
200
+ params: parameters,
188
201
  responseKey: 'access_grants',
189
202
  options,
190
203
  })
@@ -201,6 +214,12 @@ export class SeamHttpAccessGrantsUnmanaged {
201
214
  parameters: AccessGrantsUnmanagedUpdateParameters,
202
215
  options: AccessGrantsUnmanagedUpdateOptions = {},
203
216
  ): AccessGrantsUnmanagedUpdateRequest {
217
+ assertValidRequestParameters(
218
+ parameters,
219
+ '/access_grants/unmanaged/update',
220
+ true,
221
+ )
222
+
204
223
  return new SeamHttpRequest(this, {
205
224
  pathname: '/access_grants/unmanaged/update',
206
225
  method: 'PATCH',
@@ -248,7 +267,7 @@ export type AccessGrantsUnmanagedListParameters = {
248
267
  /**
249
268
  * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
250
269
  */
251
- page_cursor?: string | undefined
270
+ page_cursor?: string | null | undefined
252
271
  /**
253
272
  * Filter unmanaged Access Grants by reservation_key.
254
273
  */
@@ -28,6 +28,10 @@ import {
28
28
  limitToSeamHttpRequestOptions,
29
29
  parseOptions,
30
30
  } from 'lib/parse-options.js'
31
+ import {
32
+ assertValidRequestParameters,
33
+ type RequireAtLeastOne,
34
+ } from 'lib/request-parameters.js'
31
35
  import type { AccessMethod } from 'lib/resources/access-method.js'
32
36
  import type { ActionAttempt } from 'lib/resources/action-attempt.js'
33
37
  import type { Batch } from 'lib/resources/batch.js'
@@ -174,6 +178,12 @@ export class SeamHttpAccessMethods {
174
178
  parameters: AccessMethodsAssignCardParameters,
175
179
  options: AccessMethodsAssignCardOptions = {},
176
180
  ): AccessMethodsAssignCardRequest {
181
+ assertValidRequestParameters(
182
+ parameters,
183
+ '/access_methods/assign_card',
184
+ true,
185
+ )
186
+
177
187
  return new SeamHttpRequest(this, {
178
188
  pathname: '/access_methods/assign_card',
179
189
  method: 'POST',
@@ -191,9 +201,11 @@ export class SeamHttpAccessMethods {
191
201
  * Deletes an access method.
192
202
  */
193
203
  delete(
194
- parameters?: AccessMethodsDeleteParameters,
204
+ parameters: AccessMethodsDeleteParameters,
195
205
  options: AccessMethodsDeleteOptions = {},
196
206
  ): AccessMethodsDeleteRequest {
207
+ assertValidRequestParameters(parameters, '/access_methods/delete', true)
208
+
197
209
  return new SeamHttpRequest(this, {
198
210
  pathname: '/access_methods/delete',
199
211
  method: 'DELETE',
@@ -210,6 +222,8 @@ export class SeamHttpAccessMethods {
210
222
  parameters: AccessMethodsEncodeParameters,
211
223
  options: AccessMethodsEncodeOptions = {},
212
224
  ): AccessMethodsEncodeRequest {
225
+ assertValidRequestParameters(parameters, '/access_methods/encode', true)
226
+
213
227
  return new SeamHttpRequest(this, {
214
228
  pathname: '/access_methods/encode',
215
229
  method: 'POST',
@@ -230,10 +244,12 @@ export class SeamHttpAccessMethods {
230
244
  parameters: AccessMethodsGetParameters,
231
245
  options: AccessMethodsGetOptions = {},
232
246
  ): AccessMethodsGetRequest {
247
+ assertValidRequestParameters(parameters, '/access_methods/get', true)
248
+
233
249
  return new SeamHttpRequest(this, {
234
250
  pathname: '/access_methods/get',
235
- method: 'POST',
236
- body: parameters,
251
+ method: 'GET',
252
+ params: parameters,
237
253
  responseKey: 'access_method',
238
254
  options,
239
255
  })
@@ -246,6 +262,12 @@ export class SeamHttpAccessMethods {
246
262
  parameters: AccessMethodsGetRelatedParameters,
247
263
  options: AccessMethodsGetRelatedOptions = {},
248
264
  ): AccessMethodsGetRelatedRequest {
265
+ assertValidRequestParameters(
266
+ parameters,
267
+ '/access_methods/get_related',
268
+ true,
269
+ )
270
+
249
271
  return new SeamHttpRequest(this, {
250
272
  pathname: '/access_methods/get_related',
251
273
  method: 'POST',
@@ -259,13 +281,15 @@ export class SeamHttpAccessMethods {
259
281
  * Lists all access methods, usually filtered by Access Grant.
260
282
  */
261
283
  list(
262
- parameters?: AccessMethodsListParameters,
284
+ parameters: AccessMethodsListParameters,
263
285
  options: AccessMethodsListOptions = {},
264
286
  ): AccessMethodsListRequest {
287
+ assertValidRequestParameters(parameters, '/access_methods/list', true)
288
+
265
289
  return new SeamHttpRequest(this, {
266
290
  pathname: '/access_methods/list',
267
- method: 'POST',
268
- body: parameters,
291
+ method: 'GET',
292
+ params: parameters,
269
293
  responseKey: 'access_methods',
270
294
  options,
271
295
  })
@@ -278,6 +302,12 @@ export class SeamHttpAccessMethods {
278
302
  parameters: AccessMethodsUnlockDoorParameters,
279
303
  options: AccessMethodsUnlockDoorOptions = {},
280
304
  ): AccessMethodsUnlockDoorRequest {
305
+ assertValidRequestParameters(
306
+ parameters,
307
+ '/access_methods/unlock_door',
308
+ true,
309
+ )
310
+
281
311
  return new SeamHttpRequest(this, {
282
312
  pathname: '/access_methods/unlock_door',
283
313
  method: 'POST',
@@ -319,7 +349,7 @@ export type AccessMethodsAssignCardOptions = Pick<
319
349
  'waitForActionAttempt'
320
350
  >
321
351
 
322
- export type AccessMethodsDeleteParameters = {
352
+ export type AccessMethodsDeleteParameters = RequireAtLeastOne<{
323
353
  /**
324
354
  * ID of access method to delete.
325
355
  */
@@ -332,7 +362,7 @@ export type AccessMethodsDeleteParameters = {
332
362
  * Reservation key of the access grant whose access methods should be deleted.
333
363
  */
334
364
  reservation_key?: string | undefined
335
- }
365
+ }>
336
366
 
337
367
  /**
338
368
  * @deprecated Use AccessMethodsDeleteRequest instead.
@@ -445,7 +475,7 @@ export type AccessMethodsGetRelatedRequest = SeamHttpRequest<
445
475
 
446
476
  export interface AccessMethodsGetRelatedOptions {}
447
477
 
448
- export type AccessMethodsListParameters = {
478
+ export type AccessMethodsListParameters = RequireAtLeastOne<{
449
479
  /**
450
480
  * ID of the access code by which to filter the returned access methods. Must be combined with `access_grant_id`, `access_grant_key`, or `acs_entrance_id`.
451
481
  */
@@ -473,12 +503,12 @@ export type AccessMethodsListParameters = {
473
503
  /**
474
504
  * Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
475
505
  */
476
- page_cursor?: string | undefined
506
+ page_cursor?: string | null | undefined
477
507
  /**
478
508
  * ID of the space by which to filter the returned access methods. Must be combined with `access_grant_id`, `access_grant_key`, or `acs_entrance_id`.
479
509
  */
480
510
  space_id?: string | undefined
481
- }
511
+ }>
482
512
 
483
513
  /**
484
514
  * @deprecated Use AccessMethodsListRequest instead.
@@ -28,6 +28,7 @@ import {
28
28
  limitToSeamHttpRequestOptions,
29
29
  parseOptions,
30
30
  } from 'lib/parse-options.js'
31
+ import { assertValidRequestParameters } from 'lib/request-parameters.js'
31
32
  import type { UnmanagedAccessMethod } from 'lib/resources/unmanaged-access-method.js'
32
33
  import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js'
33
34
  import { SeamHttpRequest } from 'lib/seam-http-request.js'
@@ -165,10 +166,16 @@ export class SeamHttpAccessMethodsUnmanaged {
165
166
  parameters: AccessMethodsUnmanagedGetParameters,
166
167
  options: AccessMethodsUnmanagedGetOptions = {},
167
168
  ): AccessMethodsUnmanagedGetRequest {
169
+ assertValidRequestParameters(
170
+ parameters,
171
+ '/access_methods/unmanaged/get',
172
+ true,
173
+ )
174
+
168
175
  return new SeamHttpRequest(this, {
169
176
  pathname: '/access_methods/unmanaged/get',
170
- method: 'POST',
171
- body: parameters,
177
+ method: 'GET',
178
+ params: parameters,
172
179
  responseKey: 'access_method',
173
180
  options,
174
181
  })
@@ -181,10 +188,16 @@ export class SeamHttpAccessMethodsUnmanaged {
181
188
  parameters: AccessMethodsUnmanagedListParameters,
182
189
  options: AccessMethodsUnmanagedListOptions = {},
183
190
  ): AccessMethodsUnmanagedListRequest {
191
+ assertValidRequestParameters(
192
+ parameters,
193
+ '/access_methods/unmanaged/list',
194
+ true,
195
+ )
196
+
184
197
  return new SeamHttpRequest(this, {
185
198
  pathname: '/access_methods/unmanaged/list',
186
- method: 'POST',
187
- body: parameters,
199
+ method: 'GET',
200
+ params: parameters,
188
201
  responseKey: 'access_methods',
189
202
  options,
190
203
  })