@seamapi/types 1.375.2 → 1.377.0

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 (31) hide show
  1. package/dist/connect.cjs +1708 -529
  2. package/dist/connect.cjs.map +1 -1
  3. package/dist/connect.d.cts +1588 -363
  4. package/lib/seam/connect/models/access-codes/managed-access-code.js +48 -23
  5. package/lib/seam/connect/models/access-codes/managed-access-code.js.map +1 -1
  6. package/lib/seam/connect/models/access-codes/unmanaged-access-code.js +13 -2
  7. package/lib/seam/connect/models/access-codes/unmanaged-access-code.js.map +1 -1
  8. package/lib/seam/connect/models/acs/acs-users/acs-user.d.ts +182 -150
  9. package/lib/seam/connect/models/acs/acs-users/acs-user.js +2 -3
  10. package/lib/seam/connect/models/acs/acs-users/acs-user.js.map +1 -1
  11. package/lib/seam/connect/models/acs/acs-users/index.d.ts +1 -1
  12. package/lib/seam/connect/models/acs/acs-users/index.js +1 -1
  13. package/lib/seam/connect/models/acs/acs-users/index.js.map +1 -1
  14. package/lib/seam/connect/models/acs/acs-users/{pending-modifications.d.ts → pending-mutations.d.ts} +191 -106
  15. package/lib/seam/connect/models/acs/acs-users/pending-mutations.js +90 -0
  16. package/lib/seam/connect/models/acs/acs-users/pending-mutations.js.map +1 -0
  17. package/lib/seam/connect/openapi.d.ts +257 -58
  18. package/lib/seam/connect/openapi.js +1588 -436
  19. package/lib/seam/connect/openapi.js.map +1 -1
  20. package/lib/seam/connect/route-types.d.ts +1155 -161
  21. package/package.json +1 -1
  22. package/src/lib/seam/connect/models/access-codes/managed-access-code.ts +95 -60
  23. package/src/lib/seam/connect/models/access-codes/unmanaged-access-code.ts +15 -2
  24. package/src/lib/seam/connect/models/acs/acs-users/acs-user.ts +2 -3
  25. package/src/lib/seam/connect/models/acs/acs-users/index.ts +1 -1
  26. package/src/lib/seam/connect/models/acs/acs-users/pending-mutations.ts +110 -0
  27. package/src/lib/seam/connect/openapi.ts +1928 -446
  28. package/src/lib/seam/connect/route-types.ts +1162 -161
  29. package/lib/seam/connect/models/acs/acs-users/pending-modifications.js +0 -85
  30. package/lib/seam/connect/models/acs/acs-users/pending-modifications.js.map +0 -1
  31. package/src/lib/seam/connect/models/acs/acs-users/pending-modifications.ts +0 -109
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/types",
3
- "version": "1.375.2",
3
+ "version": "1.377.0",
4
4
  "description": "TypeScript types for the Seam API.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -3,9 +3,19 @@ import { z } from 'zod'
3
3
  import { device_and_connected_account_error_options } from '../devices/index.js'
4
4
 
5
5
  const common_access_code_error = z.object({
6
- message: z.string(),
7
- is_access_code_error: z.literal(true),
8
- created_at: z.string().datetime().optional(),
6
+ message: z
7
+ .string()
8
+ .describe(
9
+ 'Detailed description of the error. Provides insights into the issue and potentially how to rectify it.',
10
+ ),
11
+ is_access_code_error: z
12
+ .literal(true)
13
+ .describe('Indicates that this is an access code error.'),
14
+ created_at: z
15
+ .string()
16
+ .datetime()
17
+ .optional()
18
+ .describe('Date and time at which Seam created the error.'),
9
19
  })
10
20
 
11
21
  const error_code_description =
@@ -17,7 +27,7 @@ const smartthings_failed_to_set_access_code_error = common_access_code_error
17
27
  .literal('smartthings_failed_to_set_access_code')
18
28
  .describe(error_code_description),
19
29
  })
20
- .describe('Failed to set code on Smart Things device.')
30
+ .describe('Failed to set code on SmartThings device.')
21
31
 
22
32
  const smartthings_failed_to_set_after_multiple_retries =
23
33
  common_access_code_error
@@ -92,7 +102,7 @@ const kwikset_unable_to_confirm_code = common_access_code_error
92
102
  .literal('kwikset_unable_to_confirm_code')
93
103
  .describe(error_code_description),
94
104
  })
95
- .describe('Unable to confirm the access code is set on Kwikset device.')
105
+ .describe('Unable to confirm that the access code is set on Kwikset device.')
96
106
 
97
107
  const kwikset_unable_to_confirm_deletion = common_access_code_error
98
108
  .extend({
@@ -111,7 +121,7 @@ const igloohome_offline_access_code_no_variance_available =
111
121
  .literal('igloohome_offline_access_code_no_variance_available')
112
122
  .describe(error_code_description),
113
123
  })
114
- .describe('Lock as reached max amount of codes.')
124
+ .describe('Lock has reached maximum amount of codes.')
115
125
 
116
126
  const august_lock_invalid_code_length = common_access_code_error
117
127
  .extend({
@@ -209,32 +219,36 @@ const dormakaba_oracode_no_valid_user_level = common_access_code_error
209
219
  })
210
220
  .describe('No valid user level for Oracode.')
211
221
 
212
- const access_code_error = z.discriminatedUnion('error_code', [
213
- smartthings_failed_to_set_access_code_error,
214
- smartthings_failed_to_set_after_multiple_retries,
215
- smartthings_no_free_slots_available,
216
- failed_to_set_on_device,
217
- failed_to_remove_from_device,
218
- duplicate_code_on_device,
219
- duplicate_code_attempt_prevented,
220
- igloohome_bridge_too_many_pending_jobs,
221
- igloohome_bridge_offline,
222
- igloohome_offline_access_code_no_variance_available,
223
- kwikset_unable_to_confirm_code,
224
- kwikset_unable_to_confirm_deletion,
225
- code_modified_external_to_seam_error,
226
- august_lock_invalid_code_length,
227
- august_device_programming_delay_error,
228
- august_device_slots_full,
229
- august_lock_missing_keypad,
230
- august_lock_temporarily_offline_error,
231
- salto_ks_user_not_subscribed,
232
- hubitat_device_programming_delay,
233
- hubitat_no_free_positions_available,
234
- wyze_duplicate_code_name,
235
- wyze_potential_duplicate_code,
236
- dormakaba_oracode_no_valid_user_level,
237
- ])
222
+ const access_code_error = z
223
+ .discriminatedUnion('error_code', [
224
+ smartthings_failed_to_set_access_code_error,
225
+ smartthings_failed_to_set_after_multiple_retries,
226
+ smartthings_no_free_slots_available,
227
+ failed_to_set_on_device,
228
+ failed_to_remove_from_device,
229
+ duplicate_code_on_device,
230
+ duplicate_code_attempt_prevented,
231
+ igloohome_bridge_too_many_pending_jobs,
232
+ igloohome_bridge_offline,
233
+ igloohome_offline_access_code_no_variance_available,
234
+ kwikset_unable_to_confirm_code,
235
+ kwikset_unable_to_confirm_deletion,
236
+ code_modified_external_to_seam_error,
237
+ august_lock_invalid_code_length,
238
+ august_device_programming_delay_error,
239
+ august_device_slots_full,
240
+ august_lock_missing_keypad,
241
+ august_lock_temporarily_offline_error,
242
+ salto_ks_user_not_subscribed,
243
+ hubitat_device_programming_delay,
244
+ hubitat_no_free_positions_available,
245
+ wyze_duplicate_code_name,
246
+ wyze_potential_duplicate_code,
247
+ dormakaba_oracode_no_valid_user_level,
248
+ ])
249
+ .describe(
250
+ 'Errors associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).',
251
+ )
238
252
 
239
253
  export type AccessCodeError = z.infer<typeof access_code_error>
240
254
 
@@ -301,8 +315,16 @@ const access_code_error_map = z.object({
301
315
  export type AccessCodeErrorMap = z.infer<typeof access_code_error_map>
302
316
 
303
317
  const common_access_code_warning = z.object({
304
- message: z.string(),
305
- created_at: z.string().datetime().optional(),
318
+ message: z
319
+ .string()
320
+ .describe(
321
+ 'Detailed description of the warning. Provides insights into the issue and potentially how to rectify it.',
322
+ ),
323
+ created_at: z
324
+ .string()
325
+ .datetime()
326
+ .optional()
327
+ .describe('Date and time at which Seam created the warning.'),
306
328
  })
307
329
 
308
330
  const warning_code_description =
@@ -314,7 +336,7 @@ const smartthings_failed_to_set_access_code_warning = common_access_code_warning
314
336
  .literal('smartthings_failed_to_set_access_code')
315
337
  .describe(warning_code_description),
316
338
  })
317
- .describe('Failed to set code on Smart Things device.')
339
+ .describe('Failed to set code on SmartThings device.')
318
340
 
319
341
  const august_device_programming_delay_warning = common_access_code_warning
320
342
  .extend({
@@ -381,7 +403,7 @@ const third_party_integration_detected = common_access_code_warning
381
403
  .describe(warning_code_description),
382
404
  })
383
405
  .describe(
384
- 'Third party integration detected that may cause access codes to fail.',
406
+ 'Third-party integration detected that may cause access codes to fail.',
385
407
  )
386
408
 
387
409
  const igloo_algopin_must_be_used_within_24_hours = common_access_code_warning
@@ -406,22 +428,26 @@ const kwikset_unable_to_confirm_code_warning = common_access_code_warning
406
428
  .literal('kwikset_unable_to_confirm_code')
407
429
  .describe(warning_code_description),
408
430
  })
409
- .describe('Unable to confirm the access code is set on Kwikset device.')
410
-
411
- const access_code_warning = z.discriminatedUnion('warning_code', [
412
- smartthings_failed_to_set_access_code_warning,
413
- schlage_detected_duplicate,
414
- schlage_creation_outage,
415
- code_modified_external_to_seam_warning,
416
- delay_in_setting_on_device,
417
- delay_in_removing_from_device,
418
- third_party_integration_detected,
419
- august_device_programming_delay_warning,
420
- august_lock_temporarily_offline_warning,
421
- igloo_algopin_must_be_used_within_24_hours,
422
- management_transferred,
423
- kwikset_unable_to_confirm_code_warning,
424
- ])
431
+ .describe('Unable to confirm that the access code is set on Kwikset device.')
432
+
433
+ const access_code_warning = z
434
+ .discriminatedUnion('warning_code', [
435
+ smartthings_failed_to_set_access_code_warning,
436
+ schlage_detected_duplicate,
437
+ schlage_creation_outage,
438
+ code_modified_external_to_seam_warning,
439
+ delay_in_setting_on_device,
440
+ delay_in_removing_from_device,
441
+ third_party_integration_detected,
442
+ august_device_programming_delay_warning,
443
+ august_lock_temporarily_offline_warning,
444
+ igloo_algopin_must_be_used_within_24_hours,
445
+ management_transferred,
446
+ kwikset_unable_to_confirm_code_warning,
447
+ ])
448
+ .describe(
449
+ 'Warnings associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).',
450
+ )
425
451
 
426
452
  export type AccessCodeWarning = z.infer<typeof access_code_warning>
427
453
 
@@ -472,7 +498,7 @@ export const access_code = z.object({
472
498
  type: z
473
499
  .enum(['time_bound', 'ongoing'])
474
500
  .describe(
475
- 'Nature of the access code. Values are "ongoing" for access codes that are active continuously until deactivated manually or "time_bound" for access codes that have a specific duration.',
501
+ 'Nature of the access code. Values are `ongoing` for access codes that are active continuously until deactivated manually or `time_bound` for access codes that have a specific duration.',
476
502
  ),
477
503
  is_waiting_for_code_assignment: z
478
504
  .boolean()
@@ -514,12 +540,12 @@ export const access_code = z.object({
514
540
  ]),
515
541
  )
516
542
  .describe(
517
- 'Collection of errors associated with the access code, structured in a dictionary format. A unique "error_code" keys each error. Each error entry is an object containing two fields: "message" and "created_at." "message" is a string that describes the error. "created_at" is a date that indicates when the error was generated. This structure enables detailed tracking and timely response to critical issues.',
543
+ 'Errors associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).',
518
544
  ),
519
545
  warnings: z
520
546
  .array(access_code_warning)
521
547
  .describe(
522
- 'Collection of warnings associated with the access code, structured in a dictionary format. A unique "warning_code" keys each warning. Each warning entry is an object containing two fields: "message" and "created_at." "message" is a string that describes the warning. "created_at" is a date that indicates when the warning was generated. This structure enables detailed tracking and timely response to potential issues that are not critical but that may require attention.',
548
+ 'Warnings associated with the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).',
523
549
  ),
524
550
  is_managed: z
525
551
  .literal(true)
@@ -540,9 +566,11 @@ export const access_code = z.object({
540
566
  .describe(
541
567
  'Date and time after which the time-bound access code becomes inactive.',
542
568
  ),
543
- status: z.enum(['setting', 'set', 'unset', 'removing', 'unknown']).describe(`
544
- Current status of the access code within the operational lifecycle. Values are "setting," a transitional phase that indicates that the code is being configured or activated; "set", which indicates that the code is active and operational; "unset," which indicates a deactivated or unused state, either before activation or after deliberate deactivation; "removing," which indicates a transitional period in which the code is being deleted or made inactive; and "unknown," which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting.
545
- `),
569
+ status: z
570
+ .enum(['setting', 'set', 'unset', 'removing', 'unknown'])
571
+ .describe(
572
+ 'Current status of the access code within the operational lifecycle. Values are `setting`, a transitional phase that indicates that the code is being configured or activated; `set`, which indicates that the code is active and operational; `unset`, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; `removing`, which indicates a transitional period in which the code is being deleted or made inactive; and `unknown`, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting.',
573
+ ),
546
574
  is_backup_access_code_available: z
547
575
  .boolean()
548
576
  .describe(
@@ -568,17 +596,24 @@ export const access_code = z.object({
568
596
  is_one_time_use: z
569
597
  .boolean()
570
598
  .describe(
571
- 'Indicates whether the access code can only be used once. If "true," the code becomes invalid after the first use.',
599
+ 'Indicates whether the access code can only be used once. If `true`, the code becomes invalid after the first use.',
572
600
  ),
573
601
  is_offline_access_code: z
574
602
  .boolean()
575
603
  .describe(
576
- 'Indicates whether the access code is intended for use in offline scenarios. If "true," this code can be created on a device without a network connection.',
604
+ 'Indicates whether the access code is intended for use in offline scenarios. If `true`, this code can be created on a device without a network connection.',
577
605
  ),
578
606
  }).describe(`
579
607
  ---
580
608
  route_path: /access_codes
581
609
  ---
610
+ Represents a smart lock [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes).
611
+
612
+ An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate.
613
+
614
+ Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the \`type\` property of the access code. Ongoing codes display as \`ongoing\`, whereas time-bound codes are labeled \`time_bound\`.
615
+
616
+ In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code.
582
617
  `)
583
618
 
584
619
  export type AccessCode = z.infer<typeof access_code>
@@ -17,12 +17,25 @@ export const unmanaged_access_code = access_code
17
17
  ends_at: true,
18
18
  })
19
19
  .extend({
20
- is_managed: z.literal(false),
21
- status: z.enum(['set']),
20
+ is_managed: z
21
+ .literal(false)
22
+ .describe('Indicates that Seam does not manage the access code.'),
23
+ status: z
24
+ .enum(['set'])
25
+ .describe(
26
+ 'Current status of the access code within the operational lifecycle. `set` indicates that the code is active and operational.',
27
+ ),
22
28
  }).describe(`
23
29
  ---
24
30
  route_path: /access_codes/unmanaged
25
31
  ---
32
+ Represents an [unmanaged smart lock access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes/migrating-existing-access-codes).
33
+
34
+ An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly.
35
+
36
+ When you create an access code on a device in Seam, it is created as a managed access code. Access codes that exist on a device that were not created through Seam are considered unmanaged codes. We strictly limit the operations that can be performed on unmanaged codes.
37
+
38
+ Prior to using Seam to manage your devices, you may have used another lock management system to manage the access codes on your devices. Where possible, we help you keep any existing access codes on devices and transition those codes to ones managed by your Seam workspace.
26
39
  `)
27
40
 
28
41
  export type UnmanagedAccessCode = z.infer<typeof unmanaged_access_code>
@@ -2,7 +2,7 @@ import { z } from 'zod'
2
2
 
3
3
  import { phone_number } from '../../phone-number.js'
4
4
  import { schedule } from '../../schedule.js'
5
- import { acs_user_pending_modification } from './pending-modifications.js'
5
+ import { acs_user_pending_mutations } from './pending-mutations.js'
6
6
 
7
7
  export const acs_user_external_type = z.enum([
8
8
  'pti_user',
@@ -326,8 +326,7 @@ const common_acs_user = z
326
326
  .describe(
327
327
  'Errors associated with the [ACS user](https://docs.seam.co/latest/capability-guides/access-systems/user-management).',
328
328
  ),
329
- pending_modifications: z.array(acs_user_pending_modification).optional()
330
- .describe(`
329
+ pending_mutations: z.array(acs_user_pending_mutations).optional().describe(`
331
330
  ---
332
331
  undocumented: Experimental.
333
332
  ---
@@ -1,2 +1,2 @@
1
1
  export * from './acs-user.js'
2
- export * from './pending-modifications.js'
2
+ export * from './pending-mutations.js'
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod'
2
+
3
+ import { phone_number } from '../../phone-number.js'
4
+ import { schedule } from '../../schedule.js'
5
+
6
+ const common_pending_mutation = z.object({
7
+ created_at: z.string().datetime(),
8
+ })
9
+
10
+ const creating = common_pending_mutation.extend({
11
+ mutation_code: z.literal('creating'),
12
+ })
13
+
14
+ const deleting = common_pending_mutation.extend({
15
+ mutation_code: z.literal('deleting'),
16
+ })
17
+
18
+ const acs_user_info = z.object({
19
+ email_address: z.string().email().nullable(),
20
+ full_name: z.string().nullable(),
21
+ phone_number: phone_number.optional().nullable(),
22
+ })
23
+
24
+ export const updating_user_information_mutation =
25
+ common_pending_mutation.extend({
26
+ mutation_code: z.literal('updating_user_information'),
27
+ from: acs_user_info.partial(),
28
+ to: acs_user_info.partial(),
29
+ })
30
+
31
+ const updating_access_schedule_mutation = common_pending_mutation.extend({
32
+ mutation_code: z.literal('updating_access_schedule'),
33
+ from: schedule,
34
+ to: schedule,
35
+ })
36
+
37
+ const updating_suspension_state_mutation = common_pending_mutation.extend({
38
+ mutation_code: z.literal('updating_suspension_state'),
39
+ from: z.object({ is_suspended: z.boolean() }),
40
+ to: z.object({ is_suspended: z.boolean() }),
41
+ })
42
+
43
+ const updating_group_membership_mutation = common_pending_mutation.extend({
44
+ mutation_code: z.literal('updating_group_membership'),
45
+ from: z.object({
46
+ acs_access_group_id: z.string().uuid().nullable(),
47
+ }),
48
+ to: z.object({
49
+ acs_access_group_id: z.string().uuid().nullable(),
50
+ }),
51
+ })
52
+
53
+ export const acs_user_pending_mutations = z.discriminatedUnion(
54
+ 'mutation_code',
55
+ [
56
+ creating,
57
+ deleting,
58
+ updating_user_information_mutation,
59
+ updating_access_schedule_mutation,
60
+ updating_suspension_state_mutation,
61
+ updating_group_membership_mutation,
62
+ ],
63
+ )
64
+
65
+ export type AcsUserPendingMutation = z.infer<typeof acs_user_pending_mutations>
66
+
67
+ export const acs_user_pending_mutations_map = z.object({
68
+ creating: creating.optional().nullable(),
69
+ deleting: deleting.optional().nullable(),
70
+ 'updating_user_information.full_name': common_pending_mutation
71
+ .extend({
72
+ mutation_code: z.literal('updating_user_information'),
73
+ from: z.object({
74
+ full_name: z.string().nullable(),
75
+ }),
76
+ to: z.object({
77
+ full_name: z.string().nullable(),
78
+ }),
79
+ })
80
+ .optional()
81
+ .nullable(),
82
+ 'updating_user_information.email_address': common_pending_mutation
83
+ .extend({
84
+ mutation_code: z.literal('updating_user_information'),
85
+ from: z.object({
86
+ email_address: z.string().email().nullable(),
87
+ }),
88
+ to: z.object({
89
+ email_address: z.string().email().nullable(),
90
+ }),
91
+ })
92
+ .optional()
93
+ .nullable(),
94
+ 'updating_user_information.phone_number': common_pending_mutation
95
+ .extend({
96
+ mutation_code: z.literal('updating_user_information'),
97
+ from: z.object({
98
+ phone_number: phone_number.nullable(),
99
+ }),
100
+ to: z.object({
101
+ phone_number: phone_number.nullable(),
102
+ }),
103
+ })
104
+ .optional()
105
+ .nullable(),
106
+ })
107
+
108
+ export type AcsUserPendingMutationsMap = z.infer<
109
+ typeof acs_user_pending_mutations_map
110
+ >