@seamapi/types 1.327.0 → 1.329.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 +993 -370
- package/dist/connect.cjs.map +1 -1
- package/dist/connect.d.cts +1130 -63
- package/lib/seam/connect/models/access-codes/managed-access-code.js +5 -1
- 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 +5 -1
- package/lib/seam/connect/models/access-codes/unmanaged-access-code.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-access-group.js +7 -3
- package/lib/seam/connect/models/acs/acs-access-group.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-credential-pool.js +5 -1
- package/lib/seam/connect/models/acs/acs-credential-pool.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-credential-provisioning-automation.js +12 -5
- package/lib/seam/connect/models/acs/acs-credential-provisioning-automation.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-credential.d.ts +66 -0
- package/lib/seam/connect/models/acs/acs-credential.js +9 -0
- package/lib/seam/connect/models/acs/acs-credential.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-entrance.d.ts +0 -5
- package/lib/seam/connect/models/acs/acs-entrance.js +7 -4
- package/lib/seam/connect/models/acs/acs-entrance.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-system.js +6 -2
- package/lib/seam/connect/models/acs/acs-system.js.map +1 -1
- package/lib/seam/connect/models/acs/acs-user.js +7 -4
- package/lib/seam/connect/models/acs/acs-user.js.map +1 -1
- package/lib/seam/connect/models/acs/metadata/dormakaba-community.d.ts +0 -3
- package/lib/seam/connect/models/acs/metadata/dormakaba-community.js +0 -1
- package/lib/seam/connect/models/acs/metadata/dormakaba-community.js.map +1 -1
- package/lib/seam/connect/models/action-attempts/action-attempt.d.ts +132 -0
- package/lib/seam/connect/models/action-attempts/action-attempt.js +5 -1
- package/lib/seam/connect/models/action-attempts/action-attempt.js.map +1 -1
- package/lib/seam/connect/models/action-attempts/encode-credential.d.ts +58 -0
- package/lib/seam/connect/models/action-attempts/scan-credential.d.ts +74 -0
- package/lib/seam/connect/models/client-sessions/client-session.js +5 -1
- package/lib/seam/connect/models/client-sessions/client-session.js.map +1 -1
- package/lib/seam/connect/models/connect-webviews/connect-webview.js +5 -1
- package/lib/seam/connect/models/connect-webviews/connect-webview.js.map +1 -1
- package/lib/seam/connect/models/connected-accounts/connected-account.js +5 -1
- package/lib/seam/connect/models/connected-accounts/connected-account.js.map +1 -1
- package/lib/seam/connect/models/devices/device-provider.js +5 -1
- package/lib/seam/connect/models/devices/device-provider.js.map +1 -1
- package/lib/seam/connect/models/devices/device.js +5 -1
- package/lib/seam/connect/models/devices/device.js.map +1 -1
- package/lib/seam/connect/models/devices/phone.js +5 -1
- package/lib/seam/connect/models/devices/phone.js.map +1 -1
- package/lib/seam/connect/models/devices/unmanaged-device.js +5 -1
- package/lib/seam/connect/models/devices/unmanaged-device.js.map +1 -1
- package/lib/seam/connect/models/events/access-codes.js +119 -68
- package/lib/seam/connect/models/events/access-codes.js.map +1 -1
- package/lib/seam/connect/models/events/acs/access_groups.js +7 -4
- package/lib/seam/connect/models/events/acs/access_groups.js.map +1 -1
- package/lib/seam/connect/models/events/acs/credentials.d.ts +61 -0
- package/lib/seam/connect/models/events/acs/credentials.js +19 -7
- package/lib/seam/connect/models/events/acs/credentials.js.map +1 -1
- package/lib/seam/connect/models/events/acs/encoders.js +14 -8
- package/lib/seam/connect/models/events/acs/encoders.js.map +1 -1
- package/lib/seam/connect/models/events/acs/index.d.ts +30 -0
- package/lib/seam/connect/models/events/acs/systems.js +21 -12
- package/lib/seam/connect/models/events/acs/systems.js.map +1 -1
- package/lib/seam/connect/models/events/acs/users.js +7 -4
- package/lib/seam/connect/models/events/acs/users.js.map +1 -1
- package/lib/seam/connect/models/events/action-attempts.js +28 -16
- package/lib/seam/connect/models/events/action-attempts.js.map +1 -1
- package/lib/seam/connect/models/events/client-sessions.js +7 -4
- package/lib/seam/connect/models/events/client-sessions.js.map +1 -1
- package/lib/seam/connect/models/events/connect-webviews.js +14 -8
- package/lib/seam/connect/models/events/connect-webviews.js.map +1 -1
- package/lib/seam/connect/models/events/connected-accounts.js +45 -25
- package/lib/seam/connect/models/events/connected-accounts.js.map +1 -1
- package/lib/seam/connect/models/events/devices.js +214 -119
- package/lib/seam/connect/models/events/devices.js.map +1 -1
- package/lib/seam/connect/models/events/enrollment-automations.js +7 -4
- package/lib/seam/connect/models/events/enrollment-automations.js.map +1 -1
- package/lib/seam/connect/models/events/phones.js +7 -4
- package/lib/seam/connect/models/events/phones.js.map +1 -1
- package/lib/seam/connect/models/events/seam-event.d.ts +30 -0
- package/lib/seam/connect/models/events/seam-event.js +5 -1
- package/lib/seam/connect/models/events/seam-event.js.map +1 -1
- package/lib/seam/connect/models/noise-sensors/noise-threshold.js +5 -1
- package/lib/seam/connect/models/noise-sensors/noise-threshold.js.map +1 -1
- package/lib/seam/connect/models/thermostats/thermostat-schedule.js +8 -8
- package/lib/seam/connect/models/thermostats/thermostat-schedule.js.map +1 -1
- package/lib/seam/connect/models/user-identities/user-identity.js +7 -4
- package/lib/seam/connect/models/user-identities/user-identity.js.map +1 -1
- package/lib/seam/connect/models/webhooks/webhook.js +5 -1
- package/lib/seam/connect/models/webhooks/webhook.js.map +1 -1
- package/lib/seam/connect/models/workspaces/workspace.js +5 -1
- package/lib/seam/connect/models/workspaces/workspace.js.map +1 -1
- package/lib/seam/connect/openapi.d.ts +140 -4
- package/lib/seam/connect/openapi.js +322 -6
- package/lib/seam/connect/openapi.js.map +1 -1
- package/lib/seam/connect/route-types.d.ts +739 -7
- package/package.json +1 -1
- package/src/lib/seam/connect/models/access-codes/managed-access-code.ts +5 -1
- package/src/lib/seam/connect/models/access-codes/unmanaged-access-code.ts +5 -1
- package/src/lib/seam/connect/models/acs/acs-access-group.ts +7 -3
- package/src/lib/seam/connect/models/acs/acs-credential-pool.ts +5 -1
- package/src/lib/seam/connect/models/acs/acs-credential-provisioning-automation.ts +38 -35
- package/src/lib/seam/connect/models/acs/acs-credential.ts +12 -0
- package/src/lib/seam/connect/models/acs/acs-entrance.ts +31 -30
- package/src/lib/seam/connect/models/acs/acs-system.ts +6 -4
- package/src/lib/seam/connect/models/acs/acs-user.ts +10 -9
- package/src/lib/seam/connect/models/acs/metadata/dormakaba-community.ts +0 -1
- package/src/lib/seam/connect/models/action-attempts/action-attempt.ts +5 -1
- package/src/lib/seam/connect/models/client-sessions/client-session.ts +5 -1
- package/src/lib/seam/connect/models/connect-webviews/connect-webview.ts +5 -1
- package/src/lib/seam/connect/models/connected-accounts/connected-account.ts +5 -1
- package/src/lib/seam/connect/models/devices/device-provider.ts +5 -1
- package/src/lib/seam/connect/models/devices/device.ts +5 -1
- package/src/lib/seam/connect/models/devices/phone.ts +5 -1
- package/src/lib/seam/connect/models/devices/unmanaged-device.ts +5 -1
- package/src/lib/seam/connect/models/events/access-codes.ts +139 -117
- package/src/lib/seam/connect/models/events/acs/access_groups.ts +8 -5
- package/src/lib/seam/connect/models/events/acs/credentials.ts +21 -10
- package/src/lib/seam/connect/models/events/acs/encoders.ts +16 -14
- package/src/lib/seam/connect/models/events/acs/systems.ts +24 -21
- package/src/lib/seam/connect/models/events/acs/users.ts +8 -7
- package/src/lib/seam/connect/models/events/action-attempts.ts +32 -24
- package/src/lib/seam/connect/models/events/client-sessions.ts +8 -7
- package/src/lib/seam/connect/models/events/connect-webviews.ts +16 -13
- package/src/lib/seam/connect/models/events/connected-accounts.ts +55 -44
- package/src/lib/seam/connect/models/events/devices.ts +339 -301
- package/src/lib/seam/connect/models/events/enrollment-automations.ts +8 -6
- package/src/lib/seam/connect/models/events/phones.ts +8 -5
- package/src/lib/seam/connect/models/events/seam-event.ts +5 -1
- package/src/lib/seam/connect/models/noise-sensors/noise-threshold.ts +5 -1
- package/src/lib/seam/connect/models/thermostats/thermostat-schedule.ts +60 -62
- package/src/lib/seam/connect/models/user-identities/user-identity.ts +35 -34
- package/src/lib/seam/connect/models/webhooks/webhook.ts +5 -1
- package/src/lib/seam/connect/models/workspaces/workspace.ts +5 -1
- package/src/lib/seam/connect/openapi.ts +354 -6
- package/src/lib/seam/connect/route-types.ts +835 -5
|
@@ -38,266 +38,288 @@ export const lock_method = z
|
|
|
38
38
|
)
|
|
39
39
|
export type LockMethod = z.infer<typeof lock_method>
|
|
40
40
|
|
|
41
|
-
export const device_connected_event = device_event
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
)
|
|
41
|
+
export const device_connected_event = device_event.extend({
|
|
42
|
+
event_type: z.literal('device.connected'),
|
|
43
|
+
}).describe(`
|
|
44
|
+
---
|
|
45
|
+
route_path: /devices
|
|
46
|
+
---
|
|
47
|
+
The status of a [device](https://docs.seam.co/latest/core-concepts/devices) changed from offline to online. That is, the \`device.properties.online\` property changed from \`false\` to \`true\`. Note that some devices operate entirely in offline mode, so Seam never emits a \`device.connected\` event for these devices.
|
|
48
|
+
`)
|
|
48
49
|
|
|
49
50
|
export type DeviceConnectedEvent = z.infer<typeof device_connected_event>
|
|
50
51
|
|
|
51
|
-
export const device_added_event = device_event
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
)
|
|
52
|
+
export const device_added_event = device_event.extend({
|
|
53
|
+
event_type: z.literal('device.added'),
|
|
54
|
+
}).describe(`
|
|
55
|
+
---
|
|
56
|
+
route_path: /devices
|
|
57
|
+
---
|
|
58
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) was added to Seam or was re-added to Seam after having been removed.
|
|
59
|
+
`)
|
|
58
60
|
|
|
59
61
|
export type DeviceAddedEvent = z.infer<typeof device_added_event>
|
|
60
62
|
|
|
61
|
-
export const device_converted_to_unmanaged_event = device_event
|
|
62
|
-
.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
)
|
|
63
|
+
export const device_converted_to_unmanaged_event = device_event.extend({
|
|
64
|
+
event_type: z.literal('device.converted_to_unmanaged'),
|
|
65
|
+
}).describe(`
|
|
66
|
+
---
|
|
67
|
+
route_path: /devices
|
|
68
|
+
---
|
|
69
|
+
A managed device was successfully converted to an [unmanaged device](https://docs.seam.co/latest/core-concepts/devices/managed-and-unmanaged-devices).
|
|
70
|
+
`)
|
|
68
71
|
|
|
69
72
|
export type DeviceConvertedToUnmanagedEvent = z.infer<
|
|
70
73
|
typeof device_converted_to_unmanaged_event
|
|
71
74
|
>
|
|
72
75
|
|
|
73
|
-
export const unmanaged_device_converted_to_managed_event = device_event
|
|
74
|
-
.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
)
|
|
76
|
+
export const unmanaged_device_converted_to_managed_event = device_event.extend({
|
|
77
|
+
event_type: z.literal('device.unmanaged.converted_to_managed'),
|
|
78
|
+
}).describe(`
|
|
79
|
+
---
|
|
80
|
+
route_path: /devices/unmanaged
|
|
81
|
+
---
|
|
82
|
+
An [unmanaged device](https://docs.seam.co/latest/core-concepts/devices/managed-and-unmanaged-devices) was successfully converted to a managed device.
|
|
83
|
+
`)
|
|
80
84
|
|
|
81
85
|
export type UnmanagedDeviceConvertedToManagedEvent = z.infer<
|
|
82
86
|
typeof unmanaged_device_converted_to_managed_event
|
|
83
87
|
>
|
|
84
88
|
|
|
85
|
-
export const unmanaged_device_connected_event = device_event
|
|
86
|
-
.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
89
|
+
export const unmanaged_device_connected_event = device_event.extend({
|
|
90
|
+
event_type: z.literal('device.unmanaged.connected'),
|
|
91
|
+
}).describe(`
|
|
92
|
+
---
|
|
93
|
+
route_path: /devices/unmanaged
|
|
94
|
+
---
|
|
95
|
+
The status of an [unmanaged device](https://docs.seam.co/latest/core-concepts/devices/managed-and-unmanaged-devices) changed from offline to online. That is, the \`device.properties.online\` property changed from \`false\` to \`true\`.
|
|
96
|
+
`)
|
|
92
97
|
|
|
93
98
|
export type UnmanagedDeviceConnectedEvent = z.infer<
|
|
94
99
|
typeof unmanaged_device_connected_event
|
|
95
100
|
>
|
|
96
101
|
|
|
97
|
-
export const device_disconnected_event = device_event
|
|
98
|
-
.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
)
|
|
102
|
+
export const device_disconnected_event = device_event.extend({
|
|
103
|
+
event_type: z.literal('device.disconnected'),
|
|
104
|
+
error_code: disconnection_error_code,
|
|
105
|
+
}).describe(`
|
|
106
|
+
---
|
|
107
|
+
route_path: /devices
|
|
108
|
+
---
|
|
109
|
+
The status of a [device](https://docs.seam.co/latest/core-concepts/devices) changed from online to offline. That is, the \`device.properties.online\` property changed from \`true\` to \`false\`.
|
|
110
|
+
`)
|
|
105
111
|
|
|
106
112
|
export type DeviceDisconnectedEvent = z.infer<typeof device_disconnected_event>
|
|
107
113
|
|
|
108
|
-
export const unmanaged_device_disconnected_event = device_event
|
|
109
|
-
.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
)
|
|
114
|
+
export const unmanaged_device_disconnected_event = device_event.extend({
|
|
115
|
+
event_type: z.literal('device.unmanaged.disconnected'),
|
|
116
|
+
error_code: disconnection_error_code,
|
|
117
|
+
}).describe(`
|
|
118
|
+
---
|
|
119
|
+
route_path: /devices/unmanaged
|
|
120
|
+
---
|
|
121
|
+
The status of an [unmanaged device](https://docs.seam.co/latest/core-concepts/devices/managed-and-unmanaged-devices) changed from online to offline. That is, the \`device.properties.online\` property changed from \`true\` to \`false\`.
|
|
122
|
+
`)
|
|
116
123
|
|
|
117
124
|
export type UnmanagedDeviceDisconnectedEvent = z.infer<
|
|
118
125
|
typeof unmanaged_device_disconnected_event
|
|
119
126
|
>
|
|
120
127
|
|
|
121
|
-
export const device_tampered_event = device_event
|
|
122
|
-
.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
)
|
|
128
|
+
export const device_tampered_event = device_event.extend({
|
|
129
|
+
event_type: z.literal('device.tampered'),
|
|
130
|
+
}).describe(`
|
|
131
|
+
---
|
|
132
|
+
route_path: /devices
|
|
133
|
+
---
|
|
134
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) detected that it was tampered with, for example, opened or moved.
|
|
135
|
+
`)
|
|
128
136
|
|
|
129
137
|
export type DeviceTamperedEvent = z.infer<typeof device_tampered_event>
|
|
130
138
|
|
|
131
|
-
export const device_low_battery_event = device_event
|
|
132
|
-
.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
)
|
|
139
|
+
export const device_low_battery_event = device_event.extend({
|
|
140
|
+
event_type: z.literal('device.low_battery'),
|
|
141
|
+
battery_level,
|
|
142
|
+
}).describe(`
|
|
143
|
+
---
|
|
144
|
+
route_path: /devices
|
|
145
|
+
---
|
|
146
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) battery level dropped below the low threshold.
|
|
147
|
+
`)
|
|
139
148
|
|
|
140
149
|
export type DeviceLowBatteryEvent = z.infer<typeof device_low_battery_event>
|
|
141
150
|
|
|
142
|
-
export const device_battery_status_changed_event = device_event
|
|
143
|
-
.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
)
|
|
151
|
+
export const device_battery_status_changed_event = device_event.extend({
|
|
152
|
+
event_type: z.literal('device.battery_status_changed'),
|
|
153
|
+
battery_status: device_battery_status,
|
|
154
|
+
battery_level,
|
|
155
|
+
}).describe(`
|
|
156
|
+
---
|
|
157
|
+
route_path: /devices
|
|
158
|
+
---
|
|
159
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) battery status changed since the last \`battery_status_changed\` event.
|
|
160
|
+
`)
|
|
151
161
|
|
|
152
162
|
export type DeviceBatteryStatusChangedEvent = z.infer<
|
|
153
163
|
typeof device_battery_status_changed_event
|
|
154
164
|
>
|
|
155
165
|
|
|
156
|
-
export const device_removed_event = device_event
|
|
157
|
-
.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
)
|
|
166
|
+
export const device_removed_event = device_event.extend({
|
|
167
|
+
event_type: z.literal('device.removed'),
|
|
168
|
+
}).describe(`
|
|
169
|
+
---
|
|
170
|
+
route_path: /devices
|
|
171
|
+
---
|
|
172
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) was removed externally from the [connected account](https://docs.seam.co/latest/core-concepts/connected-accounts).
|
|
173
|
+
`)
|
|
163
174
|
|
|
164
175
|
export type DeviceRemovedEvent = z.infer<typeof device_removed_event>
|
|
165
176
|
|
|
166
|
-
export const device_deleted_event = device_event
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
)
|
|
177
|
+
export const device_deleted_event = device_event.extend({
|
|
178
|
+
event_type: z.literal('device.deleted'),
|
|
179
|
+
}).describe(`
|
|
180
|
+
---
|
|
181
|
+
route_path: /devices
|
|
182
|
+
---
|
|
183
|
+
A [device](https://docs.seam.co/latest/core-concepts/devices) was deleted.
|
|
184
|
+
`)
|
|
173
185
|
|
|
174
186
|
export type DeviceDeletedEvent = z.infer<typeof device_deleted_event>
|
|
175
187
|
|
|
176
|
-
export const device_third_party_integration_detected_event =
|
|
177
|
-
.extend({
|
|
188
|
+
export const device_third_party_integration_detected_event =
|
|
189
|
+
device_event.extend({
|
|
178
190
|
event_type: z.literal('device.third_party_integration_detected'),
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
191
|
+
}).describe(`
|
|
192
|
+
---
|
|
193
|
+
route_path: /devices
|
|
194
|
+
---
|
|
195
|
+
Seam detected that a [device](https://docs.seam.co/latest/core-concepts/devices) is using a third-party integration that will interfere with Seam device management.
|
|
196
|
+
`)
|
|
183
197
|
|
|
184
198
|
export type DeviceThirdPartyIntegrationDetectedEvent = z.infer<
|
|
185
199
|
typeof device_third_party_integration_detected_event
|
|
186
200
|
>
|
|
187
201
|
|
|
188
202
|
export const device_third_party_integration_no_longer_detected_event =
|
|
189
|
-
device_event
|
|
190
|
-
.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
.
|
|
196
|
-
|
|
197
|
-
)
|
|
203
|
+
device_event.extend({
|
|
204
|
+
event_type: z.literal('device.third_party_integration_no_longer_detected'),
|
|
205
|
+
}).describe(`
|
|
206
|
+
---
|
|
207
|
+
route_path: /devices
|
|
208
|
+
---
|
|
209
|
+
Seam detected that a [device](https://docs.seam.co/latest/core-concepts/devices) is no longer using a third-party integration that was interfering with Seam device management.
|
|
210
|
+
`)
|
|
198
211
|
|
|
199
212
|
export type DeviceThirdPartyIntegrationNoLongerDetectedEvent = z.infer<
|
|
200
213
|
typeof device_third_party_integration_no_longer_detected_event
|
|
201
214
|
>
|
|
202
215
|
|
|
203
|
-
export const device_salto_privacy_mode_activated_event = device_event
|
|
204
|
-
.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
)
|
|
216
|
+
export const device_salto_privacy_mode_activated_event = device_event.extend({
|
|
217
|
+
event_type: z.literal('device.salto.privacy_mode_activated'),
|
|
218
|
+
}).describe(`
|
|
219
|
+
---
|
|
220
|
+
route_path: /devices
|
|
221
|
+
---
|
|
222
|
+
A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) activated privacy mode.
|
|
223
|
+
`)
|
|
210
224
|
|
|
211
225
|
export type DeviceSaltoPrivacyModeActivatedEvent = z.infer<
|
|
212
226
|
typeof device_salto_privacy_mode_activated_event
|
|
213
227
|
>
|
|
214
228
|
|
|
215
|
-
export const device_salto_privacy_mode_deactivated_event = device_event
|
|
216
|
-
.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
)
|
|
229
|
+
export const device_salto_privacy_mode_deactivated_event = device_event.extend({
|
|
230
|
+
event_type: z.literal('device.salto.privacy_mode_deactivated'),
|
|
231
|
+
}).describe(`
|
|
232
|
+
---
|
|
233
|
+
route_path: /devices
|
|
234
|
+
---
|
|
235
|
+
A [Salto device](https://docs.seam.co/latest/device-and-system-integration-guides/salto-locks) deactivated privacy mode.
|
|
236
|
+
`)
|
|
222
237
|
|
|
223
238
|
export type DeviceSaltoPrivacyModeDeactivatedEvent = z.infer<
|
|
224
239
|
typeof device_salto_privacy_mode_deactivated_event
|
|
225
240
|
>
|
|
226
241
|
|
|
227
|
-
export const device_connection_became_flaky_event = device_event
|
|
228
|
-
.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
)
|
|
242
|
+
export const device_connection_became_flaky_event = device_event.extend({
|
|
243
|
+
event_type: z.literal('device.connection_became_flaky'),
|
|
244
|
+
}).describe(`
|
|
245
|
+
---
|
|
246
|
+
route_path: /devices
|
|
247
|
+
---
|
|
248
|
+
Seam detected a flaky [device](https://docs.seam.co/latest/core-concepts/devices) connection.
|
|
249
|
+
`)
|
|
234
250
|
|
|
235
251
|
export type DeviceConnectionBecameFlakyEvent = z.infer<
|
|
236
252
|
typeof device_connection_became_flaky_event
|
|
237
253
|
>
|
|
238
254
|
|
|
239
|
-
export const device_connection_stabilized_event = device_event
|
|
240
|
-
.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
)
|
|
255
|
+
export const device_connection_stabilized_event = device_event.extend({
|
|
256
|
+
event_type: z.literal('device.connection_stabilized'),
|
|
257
|
+
}).describe(`
|
|
258
|
+
---
|
|
259
|
+
route_path: /devices
|
|
260
|
+
---
|
|
261
|
+
Seam detected that a previously-flaky [device](https://docs.seam.co/latest/core-concepts/devices) connection stabilized.
|
|
262
|
+
`)
|
|
246
263
|
|
|
247
264
|
export type DeviceConnectionStabilizedEvent = z.infer<
|
|
248
265
|
typeof device_connection_stabilized_event
|
|
249
266
|
>
|
|
250
267
|
|
|
251
|
-
export const device_error_subscription_required_event = device_event
|
|
252
|
-
.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
)
|
|
268
|
+
export const device_error_subscription_required_event = device_event.extend({
|
|
269
|
+
event_type: z.literal('device.error.subscription_required'),
|
|
270
|
+
}).describe(`
|
|
271
|
+
---
|
|
272
|
+
route_path: /devices
|
|
273
|
+
---
|
|
274
|
+
A third-party subscription is required to use all [device](https://docs.seam.co/latest/core-concepts/devices) features.
|
|
275
|
+
`)
|
|
258
276
|
|
|
259
277
|
export type DeviceErrorSubscriptionRequiredEvent = z.infer<
|
|
260
278
|
typeof device_error_subscription_required_event
|
|
261
279
|
>
|
|
262
280
|
|
|
263
|
-
export const device_error_subscription_required_resolved_event =
|
|
264
|
-
.extend({
|
|
281
|
+
export const device_error_subscription_required_resolved_event =
|
|
282
|
+
device_event.extend({
|
|
265
283
|
event_type: z.literal('device.error.subscription_required.resolved'),
|
|
266
|
-
})
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
284
|
+
}).describe(`
|
|
285
|
+
---
|
|
286
|
+
route_path: /devices
|
|
287
|
+
---
|
|
288
|
+
A third-party subscription is active or no longer required to use all [device](https://docs.seam.co/latest/core-concepts/devices) features.
|
|
289
|
+
`)
|
|
270
290
|
|
|
271
291
|
export type DeviceErrorSubscriptionRequiredResolvedEvent = z.infer<
|
|
272
292
|
typeof device_error_subscription_required_resolved_event
|
|
273
293
|
>
|
|
274
294
|
|
|
275
|
-
export const device_accessory_keypad_connected_event = device_event
|
|
276
|
-
.
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
)
|
|
295
|
+
export const device_accessory_keypad_connected_event = device_event.extend({
|
|
296
|
+
event_type: z.literal('device.accessory_keypad_connected'),
|
|
297
|
+
}).describe(`
|
|
298
|
+
---
|
|
299
|
+
route_path: /devices
|
|
300
|
+
---
|
|
301
|
+
An accessory keypad was connected to a [device](https://docs.seam.co/latest/core-concepts/devices).
|
|
302
|
+
`)
|
|
282
303
|
|
|
283
304
|
export type DeviceAccessoryKeypadConnectedEvent = z.infer<
|
|
284
305
|
typeof device_accessory_keypad_connected_event
|
|
285
306
|
>
|
|
286
307
|
|
|
287
|
-
export const device_accessory_keypad_disconnected_event = device_event
|
|
288
|
-
.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
)
|
|
308
|
+
export const device_accessory_keypad_disconnected_event = device_event.extend({
|
|
309
|
+
event_type: z.literal('device.accessory_keypad_disconnected'),
|
|
310
|
+
}).describe(`
|
|
311
|
+
---
|
|
312
|
+
route_path: /devices
|
|
313
|
+
---
|
|
314
|
+
An accessory keypad was disconnected from a [device](https://docs.seam.co/latest/core-concepts/devices).
|
|
315
|
+
`)
|
|
294
316
|
|
|
295
317
|
export type DeviceAccessoryKeypadDisconnectedEvent = z.infer<
|
|
296
318
|
typeof device_accessory_keypad_disconnected_event
|
|
297
319
|
>
|
|
298
320
|
|
|
299
|
-
export const noise_sensor_noise_threshold_triggered_event = device_event
|
|
300
|
-
|
|
321
|
+
export const noise_sensor_noise_threshold_triggered_event = device_event.extend(
|
|
322
|
+
{
|
|
301
323
|
event_type: z.literal('noise_sensor.noise_threshold_triggered'),
|
|
302
324
|
noise_level_decibels: z
|
|
303
325
|
.number()
|
|
@@ -329,110 +351,117 @@ export const noise_sensor_noise_threshold_triggered_event = device_event
|
|
|
329
351
|
.record(z.unknown())
|
|
330
352
|
.optional()
|
|
331
353
|
.describe('Metadata from Minut.'),
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
354
|
+
},
|
|
355
|
+
).describe(`
|
|
356
|
+
---
|
|
357
|
+
route_path: /noise_sensors/noise_thresholds
|
|
358
|
+
---
|
|
359
|
+
Extended periods of noise or noise exceeding a [threshold](https://docs.seam.co/latest/capability-guides/noise-sensors#what-is-a-threshold) were detected.
|
|
360
|
+
`)
|
|
336
361
|
|
|
337
362
|
export type NoiseSensorNoiseThresholdTriggeredEvent = z.infer<
|
|
338
363
|
typeof noise_sensor_noise_threshold_triggered_event
|
|
339
364
|
>
|
|
340
365
|
|
|
341
|
-
export const lock_locked_event = device_event
|
|
342
|
-
.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
.
|
|
349
|
-
'ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used to lock the device.',
|
|
350
|
-
),
|
|
351
|
-
action_attempt_id: z
|
|
352
|
-
.string()
|
|
353
|
-
.uuid()
|
|
354
|
-
.optional()
|
|
355
|
-
.describe(
|
|
356
|
-
'ID of the [action attempt](https://docs.seam.co/latest/core-concepts/action-attempts) associated with the lock action.',
|
|
357
|
-
),
|
|
358
|
-
method: lock_method.describe(
|
|
359
|
-
'Method by which a [lock device](https://docs.seam.co/latest/capability-guides/smart-locks) was locked. When the method is `keycode`, the `access_code_id` indicates the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used, if reported by the device.',
|
|
366
|
+
export const lock_locked_event = device_event.extend({
|
|
367
|
+
event_type: z.literal('lock.locked'),
|
|
368
|
+
access_code_id: z
|
|
369
|
+
.string()
|
|
370
|
+
.uuid()
|
|
371
|
+
.optional()
|
|
372
|
+
.describe(
|
|
373
|
+
'ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used to lock the device.',
|
|
360
374
|
),
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
375
|
+
action_attempt_id: z
|
|
376
|
+
.string()
|
|
377
|
+
.uuid()
|
|
378
|
+
.optional()
|
|
379
|
+
.describe(
|
|
380
|
+
'ID of the [action attempt](https://docs.seam.co/latest/core-concepts/action-attempts) associated with the lock action.',
|
|
381
|
+
),
|
|
382
|
+
method: lock_method.describe(
|
|
383
|
+
'Method by which a [lock device](https://docs.seam.co/latest/capability-guides/smart-locks) was locked. When the method is `keycode`, the `access_code_id` indicates the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used, if reported by the device.',
|
|
384
|
+
),
|
|
385
|
+
}).describe(`
|
|
386
|
+
---
|
|
387
|
+
route_path: /locks
|
|
388
|
+
---
|
|
389
|
+
A [lock](https://docs.seam.co/latest/capability-guides/smart-locks) was locked.
|
|
390
|
+
`)
|
|
365
391
|
|
|
366
392
|
export type LockLockedEvent = z.infer<typeof lock_locked_event>
|
|
367
393
|
|
|
368
|
-
export const lock_unlocked_event = device_event
|
|
369
|
-
.
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
.
|
|
376
|
-
'ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used to unlock the device.',
|
|
377
|
-
),
|
|
378
|
-
action_attempt_id: z
|
|
379
|
-
.string()
|
|
380
|
-
.uuid()
|
|
381
|
-
.optional()
|
|
382
|
-
.describe(
|
|
383
|
-
'ID of the [action attempt](https://docs.seam.co/latest/core-concepts/action-attempts) associated with the unlock action.',
|
|
384
|
-
),
|
|
385
|
-
method: lock_method.describe(
|
|
386
|
-
'Method by which a [lock device](https://docs.seam.co/latest/capability-guides/smart-locks) was unlocked. When the method is `keycode`, the `access_code_id` indicates the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used, if reported by the device.',
|
|
394
|
+
export const lock_unlocked_event = device_event.extend({
|
|
395
|
+
event_type: z.literal('lock.unlocked'),
|
|
396
|
+
access_code_id: z
|
|
397
|
+
.string()
|
|
398
|
+
.uuid()
|
|
399
|
+
.optional()
|
|
400
|
+
.describe(
|
|
401
|
+
'ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used to unlock the device.',
|
|
387
402
|
),
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
403
|
+
action_attempt_id: z
|
|
404
|
+
.string()
|
|
405
|
+
.uuid()
|
|
406
|
+
.optional()
|
|
407
|
+
.describe(
|
|
408
|
+
'ID of the [action attempt](https://docs.seam.co/latest/core-concepts/action-attempts) associated with the unlock action.',
|
|
409
|
+
),
|
|
410
|
+
method: lock_method.describe(
|
|
411
|
+
'Method by which a [lock device](https://docs.seam.co/latest/capability-guides/smart-locks) was unlocked. When the method is `keycode`, the `access_code_id` indicates the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used, if reported by the device.',
|
|
412
|
+
),
|
|
413
|
+
}).describe(`
|
|
414
|
+
---
|
|
415
|
+
route_path: /locks
|
|
416
|
+
---
|
|
417
|
+
A [lock](https://docs.seam.co/latest/capability-guides/smart-locks) was unlocked.
|
|
418
|
+
`)
|
|
392
419
|
|
|
393
420
|
export type LockUnlockedEvent = z.infer<typeof lock_unlocked_event>
|
|
394
421
|
|
|
395
|
-
export const lock_access_denied_event = device_event
|
|
396
|
-
.
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
.
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
)
|
|
422
|
+
export const lock_access_denied_event = device_event.extend({
|
|
423
|
+
event_type: z.literal('lock.access_denied'),
|
|
424
|
+
access_code_id: z
|
|
425
|
+
.string()
|
|
426
|
+
.uuid()
|
|
427
|
+
.optional()
|
|
428
|
+
.describe(
|
|
429
|
+
'ID of the [access code](https://docs.seam.co/latest/capability-guides/smart-locks/access-codes) that was used in the unlock attempts.',
|
|
430
|
+
),
|
|
431
|
+
}).describe(`
|
|
432
|
+
---
|
|
433
|
+
route_path: /locks
|
|
434
|
+
---
|
|
435
|
+
The [lock](https://docs.seam.co/latest/capability-guides/smart-locks) denied access to a user after one or more consecutive invalid attempts to unlock the device.
|
|
436
|
+
`)
|
|
409
437
|
|
|
410
438
|
export type LockAccessDeniedEvent = z.infer<typeof lock_access_denied_event>
|
|
411
439
|
|
|
412
|
-
export const thermostat_climate_preset_activated_event = device_event
|
|
413
|
-
.
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
.
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
.
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
.
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
)
|
|
440
|
+
export const thermostat_climate_preset_activated_event = device_event.extend({
|
|
441
|
+
event_type: z.literal('thermostat.climate_preset_activated'),
|
|
442
|
+
thermostat_schedule_id: z
|
|
443
|
+
.string()
|
|
444
|
+
.uuid()
|
|
445
|
+
.nullable()
|
|
446
|
+
.describe(
|
|
447
|
+
'ID of the [thermostat schedule](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-thermostat-schedules) that prompted the [climate preset](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-climate-presets) to be activated.',
|
|
448
|
+
),
|
|
449
|
+
climate_preset_key: z
|
|
450
|
+
.string()
|
|
451
|
+
.describe(
|
|
452
|
+
'Key of the [climate preset](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-climate-presets) that was activated.',
|
|
453
|
+
),
|
|
454
|
+
is_fallback_climate_preset: z
|
|
455
|
+
.boolean()
|
|
456
|
+
.describe(
|
|
457
|
+
'Indicates whether the [climate preset](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-climate-presets) that was activated is the [fallback climate preset](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) for the [thermostat](https://docs.seam.co/latest/capability-guides/thermostats).',
|
|
458
|
+
),
|
|
459
|
+
}).describe(`
|
|
460
|
+
---
|
|
461
|
+
route_path: /thermostats
|
|
462
|
+
---
|
|
463
|
+
A thermostat [climate preset](https://docs.seam.co/latest/capability-guides/thermostats/creating-and-managing-climate-presets) was activated.
|
|
464
|
+
`)
|
|
436
465
|
|
|
437
466
|
export type ThermostatClimatePresetActivatedEvent = z.infer<
|
|
438
467
|
typeof thermostat_climate_preset_activated_event
|
|
@@ -458,63 +487,66 @@ export const thermostat_manually_adjusted_event = device_event
|
|
|
458
487
|
cooling_set_point_fahrenheit: true,
|
|
459
488
|
heating_set_point_fahrenheit: true,
|
|
460
489
|
}),
|
|
461
|
-
)
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
490
|
+
).describe(`
|
|
491
|
+
---
|
|
492
|
+
route_path: /thermostats
|
|
493
|
+
---
|
|
494
|
+
A [thermostat](https://docs.seam.co/latest/capability-guides/thermostats) was adjusted manually.
|
|
495
|
+
`)
|
|
465
496
|
|
|
466
497
|
export type ThermostatManuallyAdjustedEvent = z.infer<
|
|
467
498
|
typeof thermostat_manually_adjusted_event
|
|
468
499
|
>
|
|
469
500
|
|
|
470
|
-
export const temperature_threshold_exceeded_event = device_event
|
|
471
|
-
.
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
.
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
.
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
.
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
.
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
.
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
.
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
)
|
|
501
|
+
export const temperature_threshold_exceeded_event = device_event.extend({
|
|
502
|
+
event_type: z.literal('thermostat.temperature_threshold_exceeded'),
|
|
503
|
+
temperature_celsius: z
|
|
504
|
+
.number()
|
|
505
|
+
.describe(
|
|
506
|
+
'Temperature, in °C, reported by the [thermostat](https://docs.seam.co/latest/capability-guides/thermostats).',
|
|
507
|
+
),
|
|
508
|
+
temperature_fahrenheit: z
|
|
509
|
+
.number()
|
|
510
|
+
.describe(
|
|
511
|
+
'Temperature, in °F, reported by the [thermostat](https://docs.seam.co/latest/capability-guides/thermostats).',
|
|
512
|
+
),
|
|
513
|
+
upper_limit_celsius: z
|
|
514
|
+
.number()
|
|
515
|
+
.nullable()
|
|
516
|
+
.describe(
|
|
517
|
+
'Upper temperature limit, in °C, defined by the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).',
|
|
518
|
+
),
|
|
519
|
+
upper_limit_fahrenheit: z
|
|
520
|
+
.number()
|
|
521
|
+
.nullable()
|
|
522
|
+
.describe(
|
|
523
|
+
'Upper temperature limit, in °F, defined by the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).',
|
|
524
|
+
),
|
|
525
|
+
lower_limit_celsius: z
|
|
526
|
+
.number()
|
|
527
|
+
.nullable()
|
|
528
|
+
.describe(
|
|
529
|
+
'Lower temperature limit, in °C, defined by the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).',
|
|
530
|
+
),
|
|
531
|
+
lower_limit_fahrenheit: z
|
|
532
|
+
.number()
|
|
533
|
+
.nullable()
|
|
534
|
+
.describe(
|
|
535
|
+
'Lower temperature limit, in °F, defined by the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).',
|
|
536
|
+
),
|
|
537
|
+
}).describe(`
|
|
538
|
+
---
|
|
539
|
+
route_path: /thermostats
|
|
540
|
+
---
|
|
541
|
+
A [thermostat's](https://docs.seam.co/latest/capability-guides/thermostats) temperature reading exceeded the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).
|
|
542
|
+
`)
|
|
511
543
|
|
|
512
544
|
export type TemperatureThresholdExceededEvent = z.infer<
|
|
513
545
|
typeof temperature_threshold_exceeded_event
|
|
514
546
|
>
|
|
515
547
|
|
|
516
|
-
export const temperature_threshold_no_longer_exceeded_event =
|
|
517
|
-
.extend({
|
|
548
|
+
export const temperature_threshold_no_longer_exceeded_event =
|
|
549
|
+
device_event.extend({
|
|
518
550
|
event_type: z.literal(
|
|
519
551
|
'thermostat.temperature_threshold_no_longer_exceeded',
|
|
520
552
|
),
|
|
@@ -552,10 +584,12 @@ export const temperature_threshold_no_longer_exceeded_event = device_event
|
|
|
552
584
|
.describe(
|
|
553
585
|
'Lower temperature limit, in °F, defined by the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).',
|
|
554
586
|
),
|
|
555
|
-
})
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
587
|
+
}).describe(`
|
|
588
|
+
---
|
|
589
|
+
route_path: /thermostats
|
|
590
|
+
---
|
|
591
|
+
A [thermostat's](https://docs.seam.co/latest/capability-guides/thermostats) temperature reading no longer exceeds the set [threshold](https://docs.seam.co/latest/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds).
|
|
592
|
+
`)
|
|
559
593
|
|
|
560
594
|
export type TemperatureThresholdNoLongerExceededEvent = z.infer<
|
|
561
595
|
typeof temperature_threshold_no_longer_exceeded_event
|
|
@@ -581,7 +615,11 @@ export const temperature_reached_set_point_event = device_event.extend({
|
|
|
581
615
|
.describe(
|
|
582
616
|
"Desired temperature, in °F, set by the thermostat's cooling or heating set point.",
|
|
583
617
|
),
|
|
584
|
-
})
|
|
618
|
+
}).describe(`
|
|
619
|
+
---
|
|
620
|
+
route_path: /thermostats
|
|
621
|
+
---
|
|
622
|
+
`)
|
|
585
623
|
|
|
586
624
|
export type TemperatureReachedSetPointEvent = z.infer<
|
|
587
625
|
typeof temperature_reached_set_point_event
|