@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.
- package/dist/connect.cjs +1708 -529
- package/dist/connect.cjs.map +1 -1
- package/dist/connect.d.cts +1588 -363
- package/lib/seam/connect/models/access-codes/managed-access-code.js +48 -23
- package/lib/seam/connect/models/access-codes/managed-access-code.js.map +1 -1
- package/lib/seam/connect/models/access-codes/unmanaged-access-code.js +13 -2
- package/lib/seam/connect/models/access-codes/unmanaged-access-code.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-users/acs-user.d.ts +182 -150
- package/lib/seam/connect/models/acs/acs-users/acs-user.js +2 -3
- package/lib/seam/connect/models/acs/acs-users/acs-user.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-users/index.d.ts +1 -1
- package/lib/seam/connect/models/acs/acs-users/index.js +1 -1
- package/lib/seam/connect/models/acs/acs-users/index.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-users/{pending-modifications.d.ts → pending-mutations.d.ts} +191 -106
- package/lib/seam/connect/models/acs/acs-users/pending-mutations.js +90 -0
- package/lib/seam/connect/models/acs/acs-users/pending-mutations.js.map +1 -0
- package/lib/seam/connect/openapi.d.ts +257 -58
- package/lib/seam/connect/openapi.js +1588 -436
- package/lib/seam/connect/openapi.js.map +1 -1
- package/lib/seam/connect/route-types.d.ts +1155 -161
- package/package.json +1 -1
- package/src/lib/seam/connect/models/access-codes/managed-access-code.ts +95 -60
- package/src/lib/seam/connect/models/access-codes/unmanaged-access-code.ts +15 -2
- package/src/lib/seam/connect/models/acs/acs-users/acs-user.ts +2 -3
- package/src/lib/seam/connect/models/acs/acs-users/index.ts +1 -1
- package/src/lib/seam/connect/models/acs/acs-users/pending-mutations.ts +110 -0
- package/src/lib/seam/connect/openapi.ts +1928 -446
- package/src/lib/seam/connect/route-types.ts +1162 -161
- package/lib/seam/connect/models/acs/acs-users/pending-modifications.js +0 -85
- package/lib/seam/connect/models/acs/acs-users/pending-modifications.js.map +0 -1
- package/src/lib/seam/connect/models/acs/acs-users/pending-modifications.ts +0 -109
package/package.json
CHANGED
|
@@ -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
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
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
|
|
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
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
|
305
|
-
|
|
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
|
|
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
|
|
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
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
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
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|
|
544
|
-
|
|
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
|
|
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
|
|
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
|
|
21
|
-
|
|
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 {
|
|
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
|
-
|
|
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-
|
|
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
|
+
>
|