@seamapi/types 1.1079.0 → 1.1081.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/lib/seam/connect/models/access-codes/managed-access-code.d.ts +16 -16
- package/lib/seam/connect/models/access-codes/managed-access-code.js +5 -5
- package/lib/seam/connect/models/access-codes/unmanaged-access-code.d.ts +5 -5
- package/lib/seam/connect/models/devices/device-metadata.d.ts +33 -0
- package/lib/seam/connect/models/devices/device-metadata.js +23 -0
- package/lib/seam/connect/models/devices/device-metadata.js.map +1 -1
- package/lib/seam/connect/models/devices/device-provider.d.ts +2 -1
- package/lib/seam/connect/models/devices/device-provider.js +2 -1
- package/lib/seam/connect/models/devices/device-provider.js.map +1 -1
- package/lib/seam/connect/models/devices/device-type.d.ts +2 -1
- package/lib/seam/connect/models/devices/device-type.js +1 -0
- package/lib/seam/connect/models/devices/device-type.js.map +1 -1
- package/lib/seam/connect/models/devices/device.d.ts +50 -3
- package/lib/seam/connect/models/devices/unmanaged-device.d.ts +36 -3
- package/lib/seam/connect/models/events/access-codes.d.ts +8 -8
- package/lib/seam/connect/models/events/access-codes.js +4 -4
- package/lib/seam/connect/models/events/seam-event.d.ts +4 -4
- package/lib/seam/connect/openapi.js +50 -20
- package/lib/seam/connect/openapi.js.map +1 -1
- package/lib/seam/connect/route-types.d.ts +273 -52
- package/package.json +1 -1
- package/src/lib/seam/connect/models/access-codes/managed-access-code.ts +5 -5
- package/src/lib/seam/connect/models/devices/device-metadata.ts +24 -0
- package/src/lib/seam/connect/models/devices/device-provider.ts +2 -1
- package/src/lib/seam/connect/models/devices/device-type.ts +1 -0
- package/src/lib/seam/connect/models/events/access-codes.ts +6 -6
- package/src/lib/seam/connect/openapi.ts +50 -20
- package/src/lib/seam/connect/route-types.ts +358 -48
package/package.json
CHANGED
|
@@ -143,14 +143,14 @@ const failed_to_update = common_access_code_error.extend({
|
|
|
143
143
|
Seam was unable to apply this access code's requested update to the device, so the code on the device does not match its requested state. Seam keeps retrying, and this error clears automatically once the update is applied.
|
|
144
144
|
`)
|
|
145
145
|
|
|
146
|
-
const
|
|
147
|
-
error_code: z.literal('
|
|
146
|
+
const failed_to_delete = common_access_code_error.extend({
|
|
147
|
+
error_code: z.literal('failed_to_delete').describe(error_code_description),
|
|
148
148
|
}).describe(`
|
|
149
149
|
---
|
|
150
150
|
resource_type: access_code
|
|
151
151
|
undocumented: Unreleased.
|
|
152
152
|
---
|
|
153
|
-
This access code is still active on the device even though its \`ends_at\` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to
|
|
153
|
+
This access code is still active on the device even though its \`ends_at\` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to delete it, and this error clears automatically once the access code is no longer active.
|
|
154
154
|
`)
|
|
155
155
|
|
|
156
156
|
const access_code_inactive_error = common_access_code_error.extend({
|
|
@@ -187,7 +187,7 @@ const access_code_error = z
|
|
|
187
187
|
code_constraints_violated,
|
|
188
188
|
failed_to_issue,
|
|
189
189
|
failed_to_update,
|
|
190
|
-
|
|
190
|
+
failed_to_delete,
|
|
191
191
|
])
|
|
192
192
|
.describe(
|
|
193
193
|
'Errors associated with the [access code](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes).',
|
|
@@ -212,7 +212,7 @@ const _access_code_error_map = z.object({
|
|
|
212
212
|
code_constraints_violated: code_constraints_violated.optional().nullable(),
|
|
213
213
|
failed_to_issue: failed_to_issue.optional().nullable(),
|
|
214
214
|
failed_to_update: failed_to_update.optional().nullable(),
|
|
215
|
-
|
|
215
|
+
failed_to_delete: failed_to_delete.optional().nullable(),
|
|
216
216
|
})
|
|
217
217
|
|
|
218
218
|
export type AccessCodeErrorMap = z.infer<typeof _access_code_error_map>
|
|
@@ -1168,6 +1168,30 @@ export const device_metadata = z
|
|
|
1168
1168
|
.optional()
|
|
1169
1169
|
.describe('Metadata for a Tapo camera.'),
|
|
1170
1170
|
|
|
1171
|
+
arlo_metadata: z
|
|
1172
|
+
.object({
|
|
1173
|
+
device_id: z
|
|
1174
|
+
.string()
|
|
1175
|
+
.optional()
|
|
1176
|
+
.describe('Device ID reported by Arlo.'),
|
|
1177
|
+
device_name: z
|
|
1178
|
+
.string()
|
|
1179
|
+
.optional()
|
|
1180
|
+
.describe('Device name reported by Arlo.'),
|
|
1181
|
+
model_id: z.string().optional().describe('Model ID reported by Arlo.'),
|
|
1182
|
+
hardware_version: z
|
|
1183
|
+
.string()
|
|
1184
|
+
.optional()
|
|
1185
|
+
.describe('Hardware version reported by Arlo.'),
|
|
1186
|
+
firmware_version: z
|
|
1187
|
+
.string()
|
|
1188
|
+
.optional()
|
|
1189
|
+
.describe('Firmware version reported by Arlo.'),
|
|
1190
|
+
})
|
|
1191
|
+
.partial()
|
|
1192
|
+
.optional()
|
|
1193
|
+
.describe('Metadata for an Arlo camera.'),
|
|
1194
|
+
|
|
1171
1195
|
ring_metadata: z
|
|
1172
1196
|
.object({
|
|
1173
1197
|
device_id: z
|
|
@@ -62,6 +62,7 @@ export const DEVICE_PROVIDERS = {
|
|
|
62
62
|
THIRTY_THREE_LOCK: 'thirty_three_lock',
|
|
63
63
|
RING: 'ring',
|
|
64
64
|
TAPO: 'tapo',
|
|
65
|
+
ARLO: 'arlo',
|
|
65
66
|
ICAL: 'ical',
|
|
66
67
|
LODGIFY: 'lodgify',
|
|
67
68
|
HOSTAWAY: 'hostaway',
|
|
@@ -169,7 +170,7 @@ export const PROVIDER_CATEGORY_MAP = {
|
|
|
169
170
|
'hotek',
|
|
170
171
|
],
|
|
171
172
|
|
|
172
|
-
cameras: ['ring', 'tapo'],
|
|
173
|
+
cameras: ['ring', 'tapo', 'arlo'],
|
|
173
174
|
|
|
174
175
|
connectors: ['ical', 'lodgify', 'hostaway', 'guesty', 'acuity_scheduling'],
|
|
175
176
|
|
|
@@ -128,6 +128,7 @@ export type PhoneDeviceType = z.infer<typeof phone_device_type>
|
|
|
128
128
|
export const CAMERA_DEVICE_TYPE = {
|
|
129
129
|
RING_CAMERA: 'ring_camera',
|
|
130
130
|
TAPO_CAMERA: 'tapo_camera',
|
|
131
|
+
ARLO_CAMERA: 'arlo_camera',
|
|
131
132
|
} as const
|
|
132
133
|
|
|
133
134
|
type CameraDeviceTypeFromMapping =
|
|
@@ -361,20 +361,20 @@ export type AccessCodeFailedToUpdateEvent = z.infer<
|
|
|
361
361
|
typeof access_code_failed_to_update_event
|
|
362
362
|
>
|
|
363
363
|
|
|
364
|
-
export const
|
|
364
|
+
export const access_code_failed_to_delete_event = access_code_event
|
|
365
365
|
.extend({
|
|
366
|
-
event_type: z.literal('access_code.
|
|
366
|
+
event_type: z.literal('access_code.failed_to_delete'),
|
|
367
367
|
})
|
|
368
368
|
.extend(access_code_event_issue_properties).describe(`
|
|
369
369
|
---
|
|
370
370
|
route_path: /access_codes
|
|
371
371
|
undocumented: Unreleased.
|
|
372
372
|
---
|
|
373
|
-
An [access code](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes) is still active on the device even though its \`ends_at\` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to
|
|
373
|
+
An [access code](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes) is still active on the device even though its \`ends_at\` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to delete it, and the accompanying \`failed_to_delete\` error clears automatically once the access code is no longer active.
|
|
374
374
|
`)
|
|
375
375
|
|
|
376
|
-
export type
|
|
377
|
-
typeof
|
|
376
|
+
export type AccessCodeFailedToDeleteEvent = z.infer<
|
|
377
|
+
typeof access_code_failed_to_delete_event
|
|
378
378
|
>
|
|
379
379
|
|
|
380
380
|
export const access_code_deleted_event = access_code_event.extend({
|
|
@@ -541,7 +541,7 @@ export const access_code_events = [
|
|
|
541
541
|
access_code_delay_in_issuing_event,
|
|
542
542
|
access_code_failed_to_issue_event,
|
|
543
543
|
access_code_failed_to_update_event,
|
|
544
|
-
|
|
544
|
+
access_code_failed_to_delete_event,
|
|
545
545
|
access_code_deleted_event,
|
|
546
546
|
access_code_delay_in_removing_from_device_event,
|
|
547
547
|
access_code_failed_to_remove_from_device_event,
|
|
@@ -467,7 +467,7 @@ const openapi: OpenAPISpec = {
|
|
|
467
467
|
},
|
|
468
468
|
{
|
|
469
469
|
description:
|
|
470
|
-
'This access code is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to
|
|
470
|
+
'This access code is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to delete it, and this error clears automatically once the access code is no longer active.',
|
|
471
471
|
properties: {
|
|
472
472
|
created_at: {
|
|
473
473
|
description:
|
|
@@ -478,7 +478,7 @@ const openapi: OpenAPISpec = {
|
|
|
478
478
|
error_code: {
|
|
479
479
|
description:
|
|
480
480
|
'Unique identifier of the type of error. Enables quick recognition and categorization of the issue.',
|
|
481
|
-
enum: ['
|
|
481
|
+
enum: ['failed_to_delete'],
|
|
482
482
|
type: 'string',
|
|
483
483
|
},
|
|
484
484
|
is_access_code_error: {
|
|
@@ -13758,7 +13758,7 @@ const openapi: OpenAPISpec = {
|
|
|
13758
13758
|
},
|
|
13759
13759
|
{
|
|
13760
13760
|
description: 'Device type for cameras.',
|
|
13761
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
13761
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
13762
13762
|
type: 'string',
|
|
13763
13763
|
},
|
|
13764
13764
|
],
|
|
@@ -14708,6 +14708,32 @@ const openapi: OpenAPISpec = {
|
|
|
14708
14708
|
},
|
|
14709
14709
|
type: 'object',
|
|
14710
14710
|
},
|
|
14711
|
+
arlo_metadata: {
|
|
14712
|
+
description: 'Metadata for an Arlo camera.',
|
|
14713
|
+
properties: {
|
|
14714
|
+
device_id: {
|
|
14715
|
+
description: 'Device ID reported by Arlo.',
|
|
14716
|
+
type: 'string',
|
|
14717
|
+
},
|
|
14718
|
+
device_name: {
|
|
14719
|
+
description: 'Device name reported by Arlo.',
|
|
14720
|
+
type: 'string',
|
|
14721
|
+
},
|
|
14722
|
+
firmware_version: {
|
|
14723
|
+
description: 'Firmware version reported by Arlo.',
|
|
14724
|
+
type: 'string',
|
|
14725
|
+
},
|
|
14726
|
+
hardware_version: {
|
|
14727
|
+
description: 'Hardware version reported by Arlo.',
|
|
14728
|
+
type: 'string',
|
|
14729
|
+
},
|
|
14730
|
+
model_id: {
|
|
14731
|
+
description: 'Model ID reported by Arlo.',
|
|
14732
|
+
type: 'string',
|
|
14733
|
+
},
|
|
14734
|
+
},
|
|
14735
|
+
type: 'object',
|
|
14736
|
+
},
|
|
14711
14737
|
assa_abloy_vostio_metadata: {
|
|
14712
14738
|
description:
|
|
14713
14739
|
'Metadata for an ASSA ABLOY Vostio system.',
|
|
@@ -18199,6 +18225,7 @@ const openapi: OpenAPISpec = {
|
|
|
18199
18225
|
'thirty_three_lock',
|
|
18200
18226
|
'ring',
|
|
18201
18227
|
'tapo',
|
|
18228
|
+
'arlo',
|
|
18202
18229
|
'ical',
|
|
18203
18230
|
'lodgify',
|
|
18204
18231
|
'hostaway',
|
|
@@ -20556,7 +20583,7 @@ const openapi: OpenAPISpec = {
|
|
|
20556
20583
|
},
|
|
20557
20584
|
{
|
|
20558
20585
|
description:
|
|
20559
|
-
'An [access code](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes) is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to
|
|
20586
|
+
'An [access code](https://www.seam.co/docs/low-level-apis/smart-locks/access-codes) is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to delete it, and the accompanying `failed_to_delete` error clears automatically once the access code is no longer active.',
|
|
20560
20587
|
properties: {
|
|
20561
20588
|
access_code_errors: {
|
|
20562
20589
|
description: 'Errors associated with the access code.',
|
|
@@ -20775,7 +20802,7 @@ const openapi: OpenAPISpec = {
|
|
|
20775
20802
|
type: 'string',
|
|
20776
20803
|
},
|
|
20777
20804
|
event_type: {
|
|
20778
|
-
enum: ['access_code.
|
|
20805
|
+
enum: ['access_code.failed_to_delete'],
|
|
20779
20806
|
type: 'string',
|
|
20780
20807
|
},
|
|
20781
20808
|
occurred_at: {
|
|
@@ -32034,7 +32061,7 @@ const openapi: OpenAPISpec = {
|
|
|
32034
32061
|
},
|
|
32035
32062
|
{
|
|
32036
32063
|
description:
|
|
32037
|
-
'This access code is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to
|
|
32064
|
+
'This access code is still active on the device even though its `ends_at` has passed, so the recipient may still be able to unlock the device after their access window ended. Seam is attempting to delete it, and this error clears automatically once the access code is no longer active.',
|
|
32038
32065
|
properties: {
|
|
32039
32066
|
created_at: {
|
|
32040
32067
|
description:
|
|
@@ -32045,7 +32072,7 @@ const openapi: OpenAPISpec = {
|
|
|
32045
32072
|
error_code: {
|
|
32046
32073
|
description:
|
|
32047
32074
|
'Unique identifier of the type of error. Enables quick recognition and categorization of the issue.',
|
|
32048
|
-
enum: ['
|
|
32075
|
+
enum: ['failed_to_delete'],
|
|
32049
32076
|
type: 'string',
|
|
32050
32077
|
},
|
|
32051
32078
|
is_access_code_error: {
|
|
@@ -36303,7 +36330,7 @@ const openapi: OpenAPISpec = {
|
|
|
36303
36330
|
},
|
|
36304
36331
|
{
|
|
36305
36332
|
description: 'Device type for cameras.',
|
|
36306
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
36333
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
36307
36334
|
type: 'string',
|
|
36308
36335
|
},
|
|
36309
36336
|
],
|
|
@@ -39039,7 +39066,7 @@ const openapi: OpenAPISpec = {
|
|
|
39039
39066
|
'access_code.delay_in_issuing',
|
|
39040
39067
|
'access_code.failed_to_issue',
|
|
39041
39068
|
'access_code.failed_to_update',
|
|
39042
|
-
'access_code.
|
|
39069
|
+
'access_code.failed_to_delete',
|
|
39043
39070
|
'access_code.scheduled_on_device',
|
|
39044
39071
|
'access_code.set_on_device',
|
|
39045
39072
|
'access_code.removed_from_device',
|
|
@@ -39140,7 +39167,7 @@ const openapi: OpenAPISpec = {
|
|
|
39140
39167
|
'access_code.delay_in_issuing',
|
|
39141
39168
|
'access_code.failed_to_issue',
|
|
39142
39169
|
'access_code.failed_to_update',
|
|
39143
|
-
'access_code.
|
|
39170
|
+
'access_code.failed_to_delete',
|
|
39144
39171
|
'access_code.scheduled_on_device',
|
|
39145
39172
|
'access_code.set_on_device',
|
|
39146
39173
|
'access_code.removed_from_device',
|
|
@@ -47135,6 +47162,7 @@ const openapi: OpenAPISpec = {
|
|
|
47135
47162
|
'thirty_three_lock',
|
|
47136
47163
|
'ring',
|
|
47137
47164
|
'tapo',
|
|
47165
|
+
'arlo',
|
|
47138
47166
|
'ical',
|
|
47139
47167
|
'lodgify',
|
|
47140
47168
|
'hostaway',
|
|
@@ -50806,7 +50834,7 @@ const openapi: OpenAPISpec = {
|
|
|
50806
50834
|
},
|
|
50807
50835
|
{
|
|
50808
50836
|
description: 'Device type for cameras.',
|
|
50809
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
50837
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
50810
50838
|
type: 'string',
|
|
50811
50839
|
},
|
|
50812
50840
|
],
|
|
@@ -50886,7 +50914,7 @@ const openapi: OpenAPISpec = {
|
|
|
50886
50914
|
},
|
|
50887
50915
|
{
|
|
50888
50916
|
description: 'Device type for cameras.',
|
|
50889
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
50917
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
50890
50918
|
type: 'string',
|
|
50891
50919
|
},
|
|
50892
50920
|
],
|
|
@@ -50946,6 +50974,7 @@ const openapi: OpenAPISpec = {
|
|
|
50946
50974
|
'ultraloq',
|
|
50947
50975
|
'ring',
|
|
50948
50976
|
'tapo',
|
|
50977
|
+
'arlo',
|
|
50949
50978
|
'ical',
|
|
50950
50979
|
'lodgify',
|
|
50951
50980
|
'hostaway',
|
|
@@ -53108,7 +53137,7 @@ const openapi: OpenAPISpec = {
|
|
|
53108
53137
|
},
|
|
53109
53138
|
{
|
|
53110
53139
|
description: 'Device type for cameras.',
|
|
53111
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
53140
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
53112
53141
|
type: 'string',
|
|
53113
53142
|
},
|
|
53114
53143
|
],
|
|
@@ -53188,7 +53217,7 @@ const openapi: OpenAPISpec = {
|
|
|
53188
53217
|
},
|
|
53189
53218
|
{
|
|
53190
53219
|
description: 'Device type for cameras.',
|
|
53191
|
-
enum: ['ring_camera', 'tapo_camera'],
|
|
53220
|
+
enum: ['ring_camera', 'tapo_camera', 'arlo_camera'],
|
|
53192
53221
|
type: 'string',
|
|
53193
53222
|
},
|
|
53194
53223
|
],
|
|
@@ -53248,6 +53277,7 @@ const openapi: OpenAPISpec = {
|
|
|
53248
53277
|
'ultraloq',
|
|
53249
53278
|
'ring',
|
|
53250
53279
|
'tapo',
|
|
53280
|
+
'arlo',
|
|
53251
53281
|
'ical',
|
|
53252
53282
|
'lodgify',
|
|
53253
53283
|
'hostaway',
|
|
@@ -53781,7 +53811,7 @@ const openapi: OpenAPISpec = {
|
|
|
53781
53811
|
'access_code.delay_in_issuing',
|
|
53782
53812
|
'access_code.failed_to_issue',
|
|
53783
53813
|
'access_code.failed_to_update',
|
|
53784
|
-
'access_code.
|
|
53814
|
+
'access_code.failed_to_delete',
|
|
53785
53815
|
'access_code.deleted',
|
|
53786
53816
|
'access_code.delay_in_removing_from_device',
|
|
53787
53817
|
'access_code.failed_to_remove_from_device',
|
|
@@ -53906,7 +53936,7 @@ const openapi: OpenAPISpec = {
|
|
|
53906
53936
|
'access_code.delay_in_issuing',
|
|
53907
53937
|
'access_code.failed_to_issue',
|
|
53908
53938
|
'access_code.failed_to_update',
|
|
53909
|
-
'access_code.
|
|
53939
|
+
'access_code.failed_to_delete',
|
|
53910
53940
|
'access_code.deleted',
|
|
53911
53941
|
'access_code.delay_in_removing_from_device',
|
|
53912
53942
|
'access_code.failed_to_remove_from_device',
|
|
@@ -61719,7 +61749,7 @@ const openapi: OpenAPISpec = {
|
|
|
61719
61749
|
'access_code.delay_in_issuing',
|
|
61720
61750
|
'access_code.failed_to_issue',
|
|
61721
61751
|
'access_code.failed_to_update',
|
|
61722
|
-
'access_code.
|
|
61752
|
+
'access_code.failed_to_delete',
|
|
61723
61753
|
'access_code.deleted',
|
|
61724
61754
|
'access_code.delay_in_removing_from_device',
|
|
61725
61755
|
'access_code.failed_to_remove_from_device',
|
|
@@ -61845,7 +61875,7 @@ const openapi: OpenAPISpec = {
|
|
|
61845
61875
|
'access_code.delay_in_issuing',
|
|
61846
61876
|
'access_code.failed_to_issue',
|
|
61847
61877
|
'access_code.failed_to_update',
|
|
61848
|
-
'access_code.
|
|
61878
|
+
'access_code.failed_to_delete',
|
|
61849
61879
|
'access_code.deleted',
|
|
61850
61880
|
'access_code.delay_in_removing_from_device',
|
|
61851
61881
|
'access_code.failed_to_remove_from_device',
|
|
@@ -65282,7 +65312,7 @@ const openapi: OpenAPISpec = {
|
|
|
65282
65312
|
'access_code.delay_in_issuing',
|
|
65283
65313
|
'access_code.failed_to_issue',
|
|
65284
65314
|
'access_code.failed_to_update',
|
|
65285
|
-
'access_code.
|
|
65315
|
+
'access_code.failed_to_delete',
|
|
65286
65316
|
'access_code.deleted',
|
|
65287
65317
|
'access_code.delay_in_removing_from_device',
|
|
65288
65318
|
'access_code.failed_to_remove_from_device',
|
|
@@ -65493,7 +65523,7 @@ const openapi: OpenAPISpec = {
|
|
|
65493
65523
|
'access_code.delay_in_issuing',
|
|
65494
65524
|
'access_code.failed_to_issue',
|
|
65495
65525
|
'access_code.failed_to_update',
|
|
65496
|
-
'access_code.
|
|
65526
|
+
'access_code.failed_to_delete',
|
|
65497
65527
|
'access_code.deleted',
|
|
65498
65528
|
'access_code.delay_in_removing_from_device',
|
|
65499
65529
|
'access_code.failed_to_remove_from_device',
|