seam 2.159.0 → 2.161.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/seam/resources/access_code.rb +1 -1
- data/lib/seam/resources/acs_system.rb +1 -1
- data/lib/seam/resources/action_attempt.rb +42 -0
- data/lib/seam/resources/camera_live_view_answer.rb +12 -0
- data/lib/seam/resources/camera_live_view_session.rb +22 -0
- data/lib/seam/resources/device.rb +23 -1
- data/lib/seam/resources/device_provider.rb +7 -0
- data/lib/seam/resources/event.rb +6 -0
- data/lib/seam/resources/index.rb +3 -0
- data/lib/seam/resources/media.rb +55 -0
- data/lib/seam/resources/unmanaged_access_code.rb +1 -1
- data/lib/seam/resources/unmanaged_device.rb +8 -1
- data/lib/seam/routes/cameras.rb +16 -0
- data/lib/seam/routes/cameras_live_views.rb +50 -0
- data/lib/seam/routes/client_sessions.rb +2 -2
- data/lib/seam/routes/index.rb +3 -0
- data/lib/seam/routes/media.rb +22 -0
- data/lib/seam/routes/routes.rb +8 -0
- data/lib/seam/routes/thermostats.rb +11 -0
- data/lib/seam/version.rb +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7cc9d1dfaecd365b64e591da220ce5063278d507c6e0e44bde36c826dcfb66ba
|
|
4
|
+
data.tar.gz: 70afc25cd775515ffd34e040a5515a5ee2d1359279a90ab8ac09ce0b6ed17338
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8c27d9dcee2e2d54358134660ee38476479fb7fbb78242a424bba593a95d1d8b19a83b03d193d92d5020f9d9b16459d687d29a43e4fc634b978c36f00df67734
|
|
7
|
+
data.tar.gz: 33c02f6c6856b7e24b634f91131d72e7bc689c0577881cb2b712c47e3e54e74f7a64ae611330cd823f51ab2c08002189e05be238b87a02b3267e9cfd3c71fa1b
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
seam (2.
|
|
4
|
+
seam (2.161.0)
|
|
5
5
|
faraday (~> 2.7)
|
|
6
6
|
faraday-retry (~> 2.2)
|
|
7
7
|
svix (~> 1.30)
|
|
@@ -171,7 +171,7 @@ CHECKSUMS
|
|
|
171
171
|
rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
|
|
172
172
|
rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
|
|
173
173
|
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
174
|
-
seam (2.
|
|
174
|
+
seam (2.161.0)
|
|
175
175
|
simplecov (1.1.1) sha256=25825ef13f0b2e74694d769817dad6ab8e90131dabdaa666e522fea105521e78
|
|
176
176
|
simplecov-console (0.9.5) sha256=b1108bcfff5f210143e2b8301698c367b01586f20d25a73e95475a5df6fc6ff6
|
|
177
177
|
standard (1.56.0) sha256=ae2af4d9669589162ac69ed5ef59dcf9f346d4afc81f7e62b84339310dfcb787
|
|
@@ -308,7 +308,7 @@ module Seam
|
|
|
308
308
|
date_accessor :created_at
|
|
309
309
|
end
|
|
310
310
|
|
|
311
|
-
# Indicates that
|
|
311
|
+
# Indicates that the provider's system to which this device belongs is not letting Seam act on it, so Seam cannot manage access codes or unlock the device. The error message says which of three causes applies. Seam's integration user may not have sufficient permissions on the provider's system, or may have been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. The provider account or site may not have a valid subscription with the provider: set up or renew that subscription with the provider. Or the provider may have rejected the credential Seam uses to operate the device's hub: contact Seam support to re-activate it.
|
|
312
312
|
class InsufficientPermissions < Errors
|
|
313
313
|
# Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
|
|
314
314
|
# @return [String]
|
|
@@ -78,7 +78,7 @@ module Seam
|
|
|
78
78
|
date_accessor :created_at
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
# Indicates that
|
|
81
|
+
# Indicates that the provider's system backing this [access control system](https://www.seam.co/docs/low-level-apis/access-systems) is not letting Seam act on it, so access cannot be managed until this is resolved. The error message says which of two causes applies. Either Seam's integration user does not have sufficient permissions on the provider's system, or has been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. Or the provider account or site does not have a valid subscription with the provider: set up or renew that subscription with the provider.
|
|
82
82
|
class InsufficientPermissions < Errors
|
|
83
83
|
# Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
|
|
84
84
|
# @return [String]
|
|
@@ -1264,6 +1264,46 @@ module Seam
|
|
|
1264
1264
|
attr_accessor :status
|
|
1265
1265
|
end
|
|
1266
1266
|
|
|
1267
|
+
# Activating the weekly program is pending.
|
|
1268
|
+
class ActivateWeeklyProgram < ActionAttempt
|
|
1269
|
+
class Error < BaseResource
|
|
1270
|
+
# Detailed description of the error. Provides insights into the issue and potentially how to rectify it.
|
|
1271
|
+
# @return [String]
|
|
1272
|
+
attr_accessor :message
|
|
1273
|
+
# Type of the error.
|
|
1274
|
+
# @return [String]
|
|
1275
|
+
attr_accessor :type
|
|
1276
|
+
end
|
|
1277
|
+
|
|
1278
|
+
class Result < BaseResource
|
|
1279
|
+
end
|
|
1280
|
+
|
|
1281
|
+
# Error associated with the action.
|
|
1282
|
+
# @return [Error, nil]
|
|
1283
|
+
# Only present when `status` is `error`; `nil` otherwise.
|
|
1284
|
+
resource_accessor :error, Error
|
|
1285
|
+
available_only_for_statuses :error, ["error"]
|
|
1286
|
+
# Result of the action.
|
|
1287
|
+
# @return [Result, nil]
|
|
1288
|
+
# Only present when `status` is `success`; `nil` otherwise.
|
|
1289
|
+
resource_accessor :result, Result
|
|
1290
|
+
available_only_for_statuses :result, ["success"]
|
|
1291
|
+
# ID of the action attempt.
|
|
1292
|
+
# @return [String]
|
|
1293
|
+
attr_accessor :action_attempt_id
|
|
1294
|
+
# Action attempt to track the status of returning a thermostat to its weekly program.
|
|
1295
|
+
# @return [String]
|
|
1296
|
+
# Known values:
|
|
1297
|
+
# - `ACTIVATE_WEEKLY_PROGRAM`
|
|
1298
|
+
attr_accessor :action_type
|
|
1299
|
+
# @return [String]
|
|
1300
|
+
# Known values:
|
|
1301
|
+
# - `success`
|
|
1302
|
+
# - `pending`
|
|
1303
|
+
# - `error`
|
|
1304
|
+
attr_accessor :status
|
|
1305
|
+
end
|
|
1306
|
+
|
|
1267
1307
|
# Simulating a keypad code entry is pending.
|
|
1268
1308
|
class SimulateKeypadCodeEntry < ActionAttempt
|
|
1269
1309
|
class Error < BaseResource
|
|
@@ -1732,6 +1772,7 @@ module Seam
|
|
|
1732
1772
|
# - `SET_FAN_MODE`
|
|
1733
1773
|
# - `SET_HVAC_MODE`
|
|
1734
1774
|
# - `ACTIVATE_CLIMATE_PRESET`
|
|
1775
|
+
# - `ACTIVATE_WEEKLY_PROGRAM`
|
|
1735
1776
|
# - `SIMULATE_KEYPAD_CODE_ENTRY`
|
|
1736
1777
|
# - `SIMULATE_MANUAL_LOCK_VIA_KEYPAD`
|
|
1737
1778
|
# - `PUSH_THERMOSTAT_PROGRAMS`
|
|
@@ -1762,6 +1803,7 @@ module Seam
|
|
|
1762
1803
|
"SET_FAN_MODE" => SetFanMode,
|
|
1763
1804
|
"SET_HVAC_MODE" => SetHvacMode,
|
|
1764
1805
|
"ACTIVATE_CLIMATE_PRESET" => ActivateClimatePreset,
|
|
1806
|
+
"ACTIVATE_WEEKLY_PROGRAM" => ActivateWeeklyProgram,
|
|
1765
1807
|
"SIMULATE_KEYPAD_CODE_ENTRY" => SimulateKeypadCodeEntry,
|
|
1766
1808
|
"SIMULATE_MANUAL_LOCK_VIA_KEYPAD" => SimulateManualLockViaKeypad,
|
|
1767
1809
|
"PUSH_THERMOSTAT_PROGRAMS" => PushThermostatPrograms,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Resources
|
|
5
|
+
# Represents the WebRTC SDP answer that starts streaming video from a camera for a live view session.
|
|
6
|
+
class CameraLiveViewAnswer < BaseResource
|
|
7
|
+
# WebRTC SDP answer for the offer, limited to 64 KiB of UTF-8 data.
|
|
8
|
+
# @return [String]
|
|
9
|
+
attr_accessor :sdp_answer
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Resources
|
|
5
|
+
# Represents a short-lived live view session for a single camera. Use the session ID and token to start a WebRTC stream and to stop the session.
|
|
6
|
+
class CameraLiveViewSession < BaseResource
|
|
7
|
+
# ID of the camera live view session.
|
|
8
|
+
# @return [String]
|
|
9
|
+
attr_accessor :camera_live_view_session_id
|
|
10
|
+
# ID of the camera.
|
|
11
|
+
# @return [String]
|
|
12
|
+
attr_accessor :device_id
|
|
13
|
+
# Token that authorizes the offer and stop requests for this session.
|
|
14
|
+
# @return [String]
|
|
15
|
+
attr_accessor :token
|
|
16
|
+
|
|
17
|
+
# Date and time at which the live view session expires.
|
|
18
|
+
# @return [Time]
|
|
19
|
+
date_accessor :expires_at
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -75,7 +75,7 @@ module Seam
|
|
|
75
75
|
date_accessor :created_at
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
# Indicates that
|
|
78
|
+
# Indicates that the provider's system to which this device belongs is not letting Seam act on it, so Seam cannot manage access codes or unlock the device. The error message says which of three causes applies. Seam's integration user may not have sufficient permissions on the provider's system, or may have been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. The provider account or site may not have a valid subscription with the provider: set up or renew that subscription with the provider. Or the provider may have rejected the credential Seam uses to operate the device's hub: contact Seam support to re-activate it.
|
|
79
79
|
class InsufficientPermissions < Errors
|
|
80
80
|
# Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
|
|
81
81
|
# @return [String]
|
|
@@ -1023,6 +1023,18 @@ module Seam
|
|
|
1023
1023
|
attr_accessor :timezone_raw_offset_ms
|
|
1024
1024
|
end
|
|
1025
1025
|
|
|
1026
|
+
class ReolinkMetadata < BaseResource
|
|
1027
|
+
# Firmware version reported by the camera.
|
|
1028
|
+
# @return [String, nil]
|
|
1029
|
+
attr_accessor :firmware_version
|
|
1030
|
+
# Hardware version reported by the camera.
|
|
1031
|
+
# @return [String, nil]
|
|
1032
|
+
attr_accessor :hardware_version
|
|
1033
|
+
# Model reported by the Reolink camera.
|
|
1034
|
+
# @return [String, nil]
|
|
1035
|
+
attr_accessor :model
|
|
1036
|
+
end
|
|
1037
|
+
|
|
1026
1038
|
class RingMetadata < BaseResource
|
|
1027
1039
|
# Device ID for a Ring device.
|
|
1028
1040
|
# @return [String, nil]
|
|
@@ -1889,6 +1901,9 @@ module Seam
|
|
|
1889
1901
|
# Metadata for an Omnitec device.
|
|
1890
1902
|
# @return [OmnitecMetadata, nil]
|
|
1891
1903
|
resource_accessor :omnitec_metadata, OmnitecMetadata
|
|
1904
|
+
# Metadata for a Reolink camera.
|
|
1905
|
+
# @return [ReolinkMetadata, nil]
|
|
1906
|
+
resource_accessor :reolink_metadata, ReolinkMetadata
|
|
1892
1907
|
# Metadata for a Ring device.
|
|
1893
1908
|
# @return [RingMetadata, nil]
|
|
1894
1909
|
resource_accessor :ring_metadata, RingMetadata
|
|
@@ -2659,6 +2674,9 @@ module Seam
|
|
|
2659
2674
|
# Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it.
|
|
2660
2675
|
# @return [Array<Warnings>]
|
|
2661
2676
|
resource_list_accessor :warnings, Warnings
|
|
2677
|
+
# Indicates whether the thermostat can be returned to its weekly program, the schedule that is configured on the device itself, releasing any hold that Seam has set.
|
|
2678
|
+
# @return [Boolean, nil]
|
|
2679
|
+
attr_accessor :can_activate_weekly_program
|
|
2662
2680
|
# Indicates whether the lock supports configuring automatic locking.
|
|
2663
2681
|
# @return [Boolean, nil]
|
|
2664
2682
|
attr_accessor :can_configure_auto_lock
|
|
@@ -2713,6 +2731,9 @@ module Seam
|
|
|
2713
2731
|
# Indicates whether the device supports simulating removal in a sandbox.
|
|
2714
2732
|
# @return [Boolean, nil]
|
|
2715
2733
|
attr_accessor :can_simulate_removal
|
|
2734
|
+
# Indicates whether the camera supports streaming live video through a camera live view session.
|
|
2735
|
+
# @return [Boolean, nil]
|
|
2736
|
+
attr_accessor :can_stream_live_video
|
|
2716
2737
|
# Indicates whether the thermostat can be turned off.
|
|
2717
2738
|
# @return [Boolean, nil]
|
|
2718
2739
|
attr_accessor :can_turn_off_hvac
|
|
@@ -2786,6 +2807,7 @@ module Seam
|
|
|
2786
2807
|
# - `ring_camera`
|
|
2787
2808
|
# - `tapo_camera`
|
|
2788
2809
|
# - `arlo_camera`
|
|
2810
|
+
# - `reolink_camera`
|
|
2789
2811
|
attr_accessor :device_type
|
|
2790
2812
|
# Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices.
|
|
2791
2813
|
# @return [String]
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
module Seam
|
|
4
4
|
module Resources
|
|
5
5
|
class DeviceProvider < BaseResource
|
|
6
|
+
# Indicates whether the thermostat can be returned to its weekly program, the schedule that is configured on the device itself, releasing any hold that Seam has set.
|
|
7
|
+
# @return [Boolean, nil]
|
|
8
|
+
attr_accessor :can_activate_weekly_program
|
|
6
9
|
# Indicates whether the lock supports configuring automatic locking.
|
|
7
10
|
# @return [Boolean, nil]
|
|
8
11
|
attr_accessor :can_configure_auto_lock
|
|
@@ -57,6 +60,9 @@ module Seam
|
|
|
57
60
|
# Indicates whether the device supports simulating removal in a sandbox.
|
|
58
61
|
# @return [Boolean, nil]
|
|
59
62
|
attr_accessor :can_simulate_removal
|
|
63
|
+
# Indicates whether the camera supports streaming live video through a camera live view session.
|
|
64
|
+
# @return [Boolean, nil]
|
|
65
|
+
attr_accessor :can_stream_live_video
|
|
60
66
|
# Indicates whether the thermostat can be turned off.
|
|
61
67
|
# @return [Boolean, nil]
|
|
62
68
|
attr_accessor :can_turn_off_hvac
|
|
@@ -125,6 +131,7 @@ module Seam
|
|
|
125
131
|
# - `ring`
|
|
126
132
|
# - `tapo`
|
|
127
133
|
# - `arlo`
|
|
134
|
+
# - `reolink`
|
|
128
135
|
# - `ical`
|
|
129
136
|
# - `lodgify`
|
|
130
137
|
# - `hostaway`
|
data/lib/seam/resources/event.rb
CHANGED
|
@@ -4866,6 +4866,9 @@ module Seam
|
|
|
4866
4866
|
# URL to a thumbnail image captured at the time of activation.
|
|
4867
4867
|
# @return [String, nil]
|
|
4868
4868
|
attr_accessor :image_url
|
|
4869
|
+
# IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one.
|
|
4870
|
+
# @return [Array<String>]
|
|
4871
|
+
attr_accessor :media_ids
|
|
4869
4872
|
# Sub-type of motion detected, if available.
|
|
4870
4873
|
# @return [String, nil]
|
|
4871
4874
|
# Known values:
|
|
@@ -4918,6 +4921,9 @@ module Seam
|
|
|
4918
4921
|
# URL to a thumbnail image captured at the time the doorbell was pressed.
|
|
4919
4922
|
# @return [String, nil]
|
|
4920
4923
|
attr_accessor :image_url
|
|
4924
|
+
# IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one.
|
|
4925
|
+
# @return [Array<String>]
|
|
4926
|
+
attr_accessor :media_ids
|
|
4921
4927
|
# URL to a short video clip captured at the time the doorbell was pressed.
|
|
4922
4928
|
# @return [String, nil]
|
|
4923
4929
|
attr_accessor :video_url
|
data/lib/seam/resources/index.rb
CHANGED
|
@@ -12,6 +12,8 @@ require_relative "acs_system"
|
|
|
12
12
|
require_relative "acs_user"
|
|
13
13
|
require_relative "action_attempt"
|
|
14
14
|
require_relative "batch"
|
|
15
|
+
require_relative "camera_live_view_answer"
|
|
16
|
+
require_relative "camera_live_view_session"
|
|
15
17
|
require_relative "client_session"
|
|
16
18
|
require_relative "connect_webview"
|
|
17
19
|
require_relative "connected_account"
|
|
@@ -20,6 +22,7 @@ require_relative "device"
|
|
|
20
22
|
require_relative "device_provider"
|
|
21
23
|
require_relative "event"
|
|
22
24
|
require_relative "instant_key"
|
|
25
|
+
require_relative "media"
|
|
23
26
|
require_relative "noise_threshold"
|
|
24
27
|
require_relative "pagination"
|
|
25
28
|
require_relative "phone"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Resources
|
|
5
|
+
# Represents a piece of media, such as a video clip or a thumbnail image, that a device captured for an event. Media is in beta.
|
|
6
|
+
class Media < BaseResource
|
|
7
|
+
# MIME type of the media, such as `video/mp4` or `image/jpeg`.
|
|
8
|
+
# @return [String, nil]
|
|
9
|
+
attr_accessor :content_type
|
|
10
|
+
# ID of the device that captured the media.
|
|
11
|
+
# @return [String, nil]
|
|
12
|
+
attr_accessor :device_id
|
|
13
|
+
# ID of the event that the media belongs to.
|
|
14
|
+
# @return [String, nil]
|
|
15
|
+
attr_accessor :event_id
|
|
16
|
+
# ID of the media.
|
|
17
|
+
# @return [String]
|
|
18
|
+
attr_accessor :media_id
|
|
19
|
+
# Type of the media: a video clip or a still image.
|
|
20
|
+
# @return [String]
|
|
21
|
+
# Known values:
|
|
22
|
+
# - `video`
|
|
23
|
+
# - `image`
|
|
24
|
+
attr_accessor :media_type
|
|
25
|
+
# Status of the media. `pending` means that Seam is still retrieving the media. `available` means that `url` can be used to download it. `unavailable` means that no media exists for the event, and `failed` means that Seam could not retrieve it.
|
|
26
|
+
# @return [String]
|
|
27
|
+
# Known values:
|
|
28
|
+
# - `pending`
|
|
29
|
+
# - `available`
|
|
30
|
+
# - `unavailable`
|
|
31
|
+
# - `failed`
|
|
32
|
+
attr_accessor :status
|
|
33
|
+
# Short-lived URL from which you can download the media. Null unless `status` is `available`. The URL expires after about five minutes. Call `/media/get` again for a new URL.
|
|
34
|
+
# @return [String, nil]
|
|
35
|
+
attr_accessor :url
|
|
36
|
+
# Video codec used to encode the media. Only present for video media. `hevc` (H.265) playback support varies by browser and device, so check compatibility before assuming a clip plays inline.
|
|
37
|
+
# @return [String, nil]
|
|
38
|
+
# Known values:
|
|
39
|
+
# - `h264`
|
|
40
|
+
# - `hevc`
|
|
41
|
+
attr_accessor :video_codec
|
|
42
|
+
# ID of the workspace that contains the media.
|
|
43
|
+
# @return [String]
|
|
44
|
+
attr_accessor :workspace_id
|
|
45
|
+
|
|
46
|
+
# Date and time at which the media was created.
|
|
47
|
+
# @return [Time]
|
|
48
|
+
date_accessor :created_at
|
|
49
|
+
|
|
50
|
+
# Date and time at which the media stops being available. Null when Seam does not know when the media expires.
|
|
51
|
+
# @return [Time, nil]
|
|
52
|
+
date_accessor :expires_at
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -310,7 +310,7 @@ module Seam
|
|
|
310
310
|
date_accessor :created_at
|
|
311
311
|
end
|
|
312
312
|
|
|
313
|
-
# Indicates that
|
|
313
|
+
# Indicates that the provider's system to which this device belongs is not letting Seam act on it, so Seam cannot manage access codes or unlock the device. The error message says which of three causes applies. Seam's integration user may not have sufficient permissions on the provider's system, or may have been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. The provider account or site may not have a valid subscription with the provider: set up or renew that subscription with the provider. Or the provider may have rejected the credential Seam uses to operate the device's hub: contact Seam support to re-activate it.
|
|
314
314
|
class InsufficientPermissions < Errors
|
|
315
315
|
# Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
|
|
316
316
|
# @return [String]
|
|
@@ -48,7 +48,7 @@ module Seam
|
|
|
48
48
|
date_accessor :created_at
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
# Indicates that
|
|
51
|
+
# Indicates that the provider's system to which this device belongs is not letting Seam act on it, so Seam cannot manage access codes or unlock the device. The error message says which of three causes applies. Seam's integration user may not have sufficient permissions on the provider's system, or may have been suspended there: grant the integration user the required permissions in the provider's system, or reauthorize the connected account in Seam. The provider account or site may not have a valid subscription with the provider: set up or renew that subscription with the provider. Or the provider may have rejected the credential Seam uses to operate the device's hub: contact Seam support to re-activate it.
|
|
52
52
|
class InsufficientPermissions < Errors
|
|
53
53
|
# Unique identifier of the type of error. Enables quick recognition and categorization of the issue.
|
|
54
54
|
# @return [String]
|
|
@@ -934,6 +934,9 @@ module Seam
|
|
|
934
934
|
# Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it.
|
|
935
935
|
# @return [Array<Warnings>]
|
|
936
936
|
resource_list_accessor :warnings, Warnings
|
|
937
|
+
# Indicates whether the thermostat can be returned to its weekly program, the schedule that is configured on the device itself, releasing any hold that Seam has set.
|
|
938
|
+
# @return [Boolean, nil]
|
|
939
|
+
attr_accessor :can_activate_weekly_program
|
|
937
940
|
# Indicates whether the lock supports configuring automatic locking.
|
|
938
941
|
# @return [Boolean, nil]
|
|
939
942
|
attr_accessor :can_configure_auto_lock
|
|
@@ -988,6 +991,9 @@ module Seam
|
|
|
988
991
|
# Indicates whether the device supports simulating removal in a sandbox.
|
|
989
992
|
# @return [Boolean, nil]
|
|
990
993
|
attr_accessor :can_simulate_removal
|
|
994
|
+
# Indicates whether the camera supports streaming live video through a camera live view session.
|
|
995
|
+
# @return [Boolean, nil]
|
|
996
|
+
attr_accessor :can_stream_live_video
|
|
991
997
|
# Indicates whether the thermostat can be turned off.
|
|
992
998
|
# @return [Boolean, nil]
|
|
993
999
|
attr_accessor :can_turn_off_hvac
|
|
@@ -1061,6 +1067,7 @@ module Seam
|
|
|
1061
1067
|
# - `ring_camera`
|
|
1062
1068
|
# - `tapo_camera`
|
|
1063
1069
|
# - `arlo_camera`
|
|
1070
|
+
# - `reolink_camera`
|
|
1064
1071
|
attr_accessor :device_type
|
|
1065
1072
|
# Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices.
|
|
1066
1073
|
# @return [String]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Clients
|
|
5
|
+
class Cameras
|
|
6
|
+
def initialize(client:, defaults:)
|
|
7
|
+
@client = client
|
|
8
|
+
@defaults = defaults
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def live_views
|
|
12
|
+
@live_views ||= Seam::Clients::CamerasLiveViews.new(client: @client, defaults: @defaults)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Clients
|
|
5
|
+
class CamerasLiveViews
|
|
6
|
+
def initialize(client:, defaults:)
|
|
7
|
+
@client = client
|
|
8
|
+
@defaults = defaults
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Creates a short-lived live view session for a single camera. Pass the returned session ID and token to `/cameras/live_views/offer` to start a WebRTC stream, and to `/cameras/live_views/stop` to end the session.
|
|
12
|
+
#
|
|
13
|
+
# Camera live view is in beta. To enable it for your workspace, contact Seam support. To check whether a camera supports live view, use `device.can_stream_live_video`.
|
|
14
|
+
# @param device_id [String] ID of the camera to view.
|
|
15
|
+
# @param duration_seconds [Integer, nil] Number of seconds for which the live view session is valid, up to 600.
|
|
16
|
+
# @param include_audio [Boolean, nil] Indicates whether to include the camera's audio.
|
|
17
|
+
# @return [Seam::Resources::CameraLiveViewSession] OK
|
|
18
|
+
def create(device_id:, duration_seconds: nil, include_audio: nil)
|
|
19
|
+
res = @client.post("/cameras/live_views/create", {device_id: device_id, duration_seconds: duration_seconds, include_audio: include_audio}.compact)
|
|
20
|
+
|
|
21
|
+
Seam::Resources::CameraLiveViewSession.load_from_response(res.body["camera_live_view_session"])
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Exchanges a WebRTC SDP offer for an SDP answer that starts streaming video from the camera, for a live view session that you created using `/cameras/live_views/create`.
|
|
25
|
+
#
|
|
26
|
+
# Camera live view is in beta. To enable it for your workspace, contact Seam support.
|
|
27
|
+
# @param camera_live_view_session_id [String] ID of the camera live view session.
|
|
28
|
+
# @param sdp_offer [String] WebRTC SDP offer from the viewer, limited to 64 KiB of UTF-8 data.
|
|
29
|
+
# @param token [String] Token returned when the camera live view session was created.
|
|
30
|
+
# @return [Seam::Resources::CameraLiveViewAnswer] OK
|
|
31
|
+
def offer(camera_live_view_session_id:, sdp_offer:, token:)
|
|
32
|
+
res = @client.post("/cameras/live_views/offer", {camera_live_view_session_id: camera_live_view_session_id, sdp_offer: sdp_offer, token: token}.compact)
|
|
33
|
+
|
|
34
|
+
Seam::Resources::CameraLiveViewAnswer.load_from_response(res.body["camera_live_view_answer"])
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Stops a camera live view session that the current client session owns.
|
|
38
|
+
#
|
|
39
|
+
# Camera live view is in beta. To enable it for your workspace, contact Seam support.
|
|
40
|
+
# @param camera_live_view_session_id [String] ID of the camera live view session.
|
|
41
|
+
# @param token [String] Token returned when the camera live view session was created.
|
|
42
|
+
# @return [nil] OK
|
|
43
|
+
def stop(camera_live_view_session_id:, token:)
|
|
44
|
+
@client.post("/cameras/live_views/stop", {camera_live_view_session_id: camera_live_view_session_id, token: token}.compact)
|
|
45
|
+
|
|
46
|
+
nil
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -14,7 +14,7 @@ module Seam
|
|
|
14
14
|
# @param customer_id [String, nil] Customer ID that you want to associate with the new client session.
|
|
15
15
|
# @param customer_key [String, nil] Customer key that you want to associate with the new client session.
|
|
16
16
|
# @param expires_at [Time, nil] Date and time at which the client session should expire, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
|
|
17
|
-
# @param user_identifier_key [String, nil] Your user ID for the user for whom you want to create a client session.
|
|
17
|
+
# @param user_identifier_key [String, nil] Your user ID for the user for whom you want to create a client session. When you authenticate with a publishable key, the `user_identifier_key` must be a high-entropy secret that only the user knows, such as a UUIDv4 or a salted hash. Do not use an email address, name, phone number, or other guessable value, because anyone who knows the `user_identifier_key` can retrieve the client session.
|
|
18
18
|
# @param user_identity_id [String, nil] ID of the [user identity](https://www.seam.co/docs/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to create a client session.
|
|
19
19
|
# @param user_identity_ids [Array<String>, nil] IDs of the [user identities](https://www.seam.co/docs/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session.
|
|
20
20
|
# @deprecated user_identity_ids: Use `user_identity_id` instead.
|
|
@@ -48,7 +48,7 @@ module Seam
|
|
|
48
48
|
# @param connect_webview_ids [Array<String>, nil] IDs of the [Connect Webviews](https://www.seam.co/docs/core-concepts/connect-webviews) that you want to associate with the client session (or that are already associated with the existing client session).
|
|
49
49
|
# @param connected_account_ids [Array<String>, nil] IDs of the [connected accounts](https://www.seam.co/docs/api/connected_accounts/object) that you want to associate with the client session (or that are already associated with the existing client session).
|
|
50
50
|
# @param expires_at [Time, nil] Date and time at which the client session should expire in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. If the client session already exists, this will update the expiration before returning it.
|
|
51
|
-
# @param user_identifier_key [String, nil] Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session).
|
|
51
|
+
# @param user_identifier_key [String, nil] Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). When you authenticate with a publishable key, the `user_identifier_key` must be a high-entropy secret that only the user knows, such as a UUIDv4 or a salted hash. Do not use an email address, name, phone number, or other guessable value, because anyone who knows the `user_identifier_key` can retrieve the client session.
|
|
52
52
|
# @param user_identity_id [String, nil] ID of the [user identity](https://www.seam.co/docs/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session (or that are already associated with the existing client session).
|
|
53
53
|
# @param user_identity_ids [Array<String>, nil] IDs of the [user identities](https://www.seam.co/docs/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session.
|
|
54
54
|
# @deprecated user_identity_ids: Use `user_identity_id`.
|
data/lib/seam/routes/index.rb
CHANGED
|
@@ -16,6 +16,8 @@ require_relative "acs_entrances"
|
|
|
16
16
|
require_relative "acs_systems"
|
|
17
17
|
require_relative "acs_users"
|
|
18
18
|
require_relative "action_attempts"
|
|
19
|
+
require_relative "cameras"
|
|
20
|
+
require_relative "cameras_live_views"
|
|
19
21
|
require_relative "client_sessions"
|
|
20
22
|
require_relative "connect_webviews"
|
|
21
23
|
require_relative "connected_accounts"
|
|
@@ -28,6 +30,7 @@ require_relative "events"
|
|
|
28
30
|
require_relative "instant_keys"
|
|
29
31
|
require_relative "locks"
|
|
30
32
|
require_relative "locks_simulate"
|
|
33
|
+
require_relative "media"
|
|
31
34
|
require_relative "noise_sensors"
|
|
32
35
|
require_relative "noise_sensors_noise_thresholds"
|
|
33
36
|
require_relative "noise_sensors_simulate"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Seam
|
|
4
|
+
module Clients
|
|
5
|
+
class Media
|
|
6
|
+
def initialize(client:, defaults:)
|
|
7
|
+
@client = client
|
|
8
|
+
@defaults = defaults
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Returns a specified piece of media, such as a video clip or thumbnail image captured for a camera event, with a short-lived URL from which you can download it. Camera events list their media in `media_ids`. This endpoint is in beta.
|
|
12
|
+
# @param media_id [String] ID of the media that you want to get.
|
|
13
|
+
# @param format [String, nil] Response format. `json` returns the media object. `redirect` responds with a `302` redirect to the media's download URL, so you can use this endpoint directly as the source of an image or video.
|
|
14
|
+
# @return [Seam::Resources::Media] OK
|
|
15
|
+
def get(media_id:, format: nil)
|
|
16
|
+
res = @client.get("/media/get", {media_id: media_id, format: format}.compact)
|
|
17
|
+
|
|
18
|
+
Seam::Resources::Media.load_from_response(res.body["media"])
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/seam/routes/routes.rb
CHANGED
|
@@ -22,6 +22,10 @@ module Seam
|
|
|
22
22
|
@action_attempts ||= Seam::Clients::ActionAttempts.new(client: @client, defaults: @defaults)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def cameras
|
|
26
|
+
@cameras ||= Seam::Clients::Cameras.new(client: @client, defaults: @defaults)
|
|
27
|
+
end
|
|
28
|
+
|
|
25
29
|
def client_sessions
|
|
26
30
|
@client_sessions ||= Seam::Clients::ClientSessions.new(client: @client, defaults: @defaults)
|
|
27
31
|
end
|
|
@@ -54,6 +58,10 @@ module Seam
|
|
|
54
58
|
@locks ||= Seam::Clients::Locks.new(client: @client, defaults: @defaults)
|
|
55
59
|
end
|
|
56
60
|
|
|
61
|
+
def media
|
|
62
|
+
@media ||= Seam::Clients::Media.new(client: @client, defaults: @defaults)
|
|
63
|
+
end
|
|
64
|
+
|
|
57
65
|
def noise_sensors
|
|
58
66
|
@noise_sensors ||= Seam::Clients::NoiseSensors.new(client: @client, defaults: @defaults)
|
|
59
67
|
end
|
|
@@ -34,6 +34,17 @@ module Seam
|
|
|
34
34
|
Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
# Returns a specified [thermostat](https://www.seam.co/docs/capability-guides/thermostats) to its [weekly program](https://www.seam.co/docs/capability-guides/thermostats/creating-and-managing-thermostat-programs), the schedule that is configured on the device itself, releasing any hold that Seam has set. Seam stops managing the thermostat's climate until you [activate a climate preset](https://www.seam.co/docs/capability-guides/thermostats/configure-current-climate-settings), make a direct climate setting change, or one of the thermostat's [scheduled](https://www.seam.co/docs/capability-guides/thermostats/creating-and-managing-thermostat-schedules) presets reaches its activation time.
|
|
38
|
+
# @param device_id [String] ID of the thermostat device that you want to return to its weekly program.
|
|
39
|
+
# @return [Seam::Resources::ActionAttempt] OK
|
|
40
|
+
def activate_weekly_program(device_id:, wait_for_action_attempt: nil)
|
|
41
|
+
res = @client.post("/thermostats/activate_weekly_program", {device_id: device_id}.compact)
|
|
42
|
+
|
|
43
|
+
wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt
|
|
44
|
+
|
|
45
|
+
Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt)
|
|
46
|
+
end
|
|
47
|
+
|
|
37
48
|
# Sets a specified [thermostat](https://www.seam.co/docs/capability-guides/thermostats) to [cool mode](https://www.seam.co/docs/capability-guides/thermostats/configure-current-climate-settings).
|
|
38
49
|
# @param device_id [String] ID of the thermostat device that you want to set to cool mode.
|
|
39
50
|
# @param cooling_set_point_celsius [Float, nil] [Cooling set point](https://www.seam.co/docs/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters.
|
data/lib/seam/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: seam
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.161.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Seam Labs, Inc.
|
|
@@ -213,6 +213,8 @@ files:
|
|
|
213
213
|
- lib/seam/resources/acs_user.rb
|
|
214
214
|
- lib/seam/resources/action_attempt.rb
|
|
215
215
|
- lib/seam/resources/batch.rb
|
|
216
|
+
- lib/seam/resources/camera_live_view_answer.rb
|
|
217
|
+
- lib/seam/resources/camera_live_view_session.rb
|
|
216
218
|
- lib/seam/resources/client_session.rb
|
|
217
219
|
- lib/seam/resources/connect_webview.rb
|
|
218
220
|
- lib/seam/resources/connected_account.rb
|
|
@@ -222,6 +224,7 @@ files:
|
|
|
222
224
|
- lib/seam/resources/event.rb
|
|
223
225
|
- lib/seam/resources/index.rb
|
|
224
226
|
- lib/seam/resources/instant_key.rb
|
|
227
|
+
- lib/seam/resources/media.rb
|
|
225
228
|
- lib/seam/resources/noise_threshold.rb
|
|
226
229
|
- lib/seam/resources/pagination.rb
|
|
227
230
|
- lib/seam/resources/phone.rb
|
|
@@ -252,6 +255,8 @@ files:
|
|
|
252
255
|
- lib/seam/routes/acs_systems.rb
|
|
253
256
|
- lib/seam/routes/acs_users.rb
|
|
254
257
|
- lib/seam/routes/action_attempts.rb
|
|
258
|
+
- lib/seam/routes/cameras.rb
|
|
259
|
+
- lib/seam/routes/cameras_live_views.rb
|
|
255
260
|
- lib/seam/routes/client_sessions.rb
|
|
256
261
|
- lib/seam/routes/connect_webviews.rb
|
|
257
262
|
- lib/seam/routes/connected_accounts.rb
|
|
@@ -265,6 +270,7 @@ files:
|
|
|
265
270
|
- lib/seam/routes/instant_keys.rb
|
|
266
271
|
- lib/seam/routes/locks.rb
|
|
267
272
|
- lib/seam/routes/locks_simulate.rb
|
|
273
|
+
- lib/seam/routes/media.rb
|
|
268
274
|
- lib/seam/routes/noise_sensors.rb
|
|
269
275
|
- lib/seam/routes/noise_sensors_noise_thresholds.rb
|
|
270
276
|
- lib/seam/routes/noise_sensors_simulate.rb
|