seam 2.0.0a1 → 2.0.0a2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +34 -2
  3. data/README.md +4 -1
  4. data/Rakefile +1 -1
  5. data/lib/seam/client.rb +129 -0
  6. data/lib/seam/clients/access_codes.rb +95 -0
  7. data/lib/seam/clients/access_codes_simulate.rb +17 -0
  8. data/lib/seam/clients/access_codes_unmanaged.rb +57 -0
  9. data/lib/seam/clients/acs.rb +35 -0
  10. data/lib/seam/clients/acs_access_groups.rb +57 -0
  11. data/lib/seam/clients/acs_credential_pools.rb +17 -0
  12. data/lib/seam/clients/acs_credential_provisioning_automations.rb +17 -0
  13. data/lib/seam/clients/acs_credentials.rb +77 -0
  14. data/lib/seam/clients/acs_entrances.rb +47 -0
  15. data/lib/seam/clients/acs_systems.rb +27 -0
  16. data/lib/seam/clients/acs_users.rb +117 -0
  17. data/lib/seam/clients/action_attempts.rb +30 -0
  18. data/lib/seam/clients/base_client.rb +21 -0
  19. data/lib/seam/clients/client_sessions.rb +77 -0
  20. data/lib/seam/clients/connect_webviews.rb +47 -0
  21. data/lib/seam/clients/connected_accounts.rb +47 -0
  22. data/lib/seam/clients/devices.rb +65 -0
  23. data/lib/seam/clients/devices_simulate.rb +17 -0
  24. data/lib/seam/clients/devices_unmanaged.rb +37 -0
  25. data/lib/seam/clients/events.rb +27 -0
  26. data/lib/seam/clients/locks.rb +53 -0
  27. data/lib/seam/clients/networks.rb +27 -0
  28. data/lib/seam/clients/noise_sensors.rb +15 -0
  29. data/lib/seam/clients/noise_sensors_noise_thresholds.rb +57 -0
  30. data/lib/seam/clients/noise_sensors_simulate.rb +17 -0
  31. data/lib/seam/clients/phones.rb +31 -0
  32. data/lib/seam/clients/phones_simulate.rb +17 -0
  33. data/lib/seam/clients/thermostats.rb +106 -0
  34. data/lib/seam/clients/thermostats_climate_setting_schedules.rb +57 -0
  35. data/lib/seam/clients/user_identities.rb +131 -0
  36. data/lib/seam/clients/user_identities_enrollment_automations.rb +47 -0
  37. data/lib/seam/clients/webhooks.rb +57 -0
  38. data/lib/seam/clients/workspaces.rb +50 -0
  39. data/lib/seam/logger.rb +12 -0
  40. data/lib/seam/lts_version.rb +5 -0
  41. data/lib/seam/request.rb +73 -0
  42. data/lib/seam/resources/access_code.rb +12 -0
  43. data/lib/seam/resources/acs_access_group.rb +9 -0
  44. data/lib/seam/resources/acs_credential.rb +12 -0
  45. data/lib/seam/resources/acs_credential_pool.rb +9 -0
  46. data/lib/seam/resources/acs_credential_provisioning_automation.rb +9 -0
  47. data/lib/seam/resources/acs_entrance.rb +9 -0
  48. data/lib/seam/resources/acs_system.rb +9 -0
  49. data/lib/seam/resources/acs_user.rb +9 -0
  50. data/lib/seam/resources/action_attempt.rb +46 -0
  51. data/lib/seam/resources/base_resource.rb +58 -0
  52. data/lib/seam/resources/client_session.rb +9 -0
  53. data/lib/seam/resources/climate_setting_schedule.rb +11 -0
  54. data/lib/seam/resources/connect_webview.rb +9 -0
  55. data/lib/seam/resources/connected_account.rb +12 -0
  56. data/lib/seam/resources/device.rb +12 -0
  57. data/lib/seam/resources/device_provider.rb +7 -0
  58. data/lib/seam/resources/enrollment_automation.rb +9 -0
  59. data/lib/seam/resources/event.rb +9 -0
  60. data/lib/seam/resources/network.rb +9 -0
  61. data/lib/seam/resources/noise_threshold.rb +7 -0
  62. data/lib/seam/resources/phone.rb +12 -0
  63. data/lib/seam/resources/resource_error.rb +9 -0
  64. data/lib/seam/resources/resource_errors_support.rb +9 -0
  65. data/lib/seam/resources/resource_warning.rb +9 -0
  66. data/lib/seam/resources/resource_warnings_support.rb +9 -0
  67. data/lib/seam/resources/service_health.rb +7 -0
  68. data/lib/seam/resources/unmanaged_access_code.rb +12 -0
  69. data/lib/seam/resources/unmanaged_device.rb +12 -0
  70. data/lib/seam/resources/user_identity.rb +9 -0
  71. data/lib/seam/resources/webhook.rb +7 -0
  72. data/lib/seam/resources/workspace.rb +7 -0
  73. data/lib/seam/version.rb +1 -1
  74. data/lib/seam.rb +68 -2
  75. metadata +98 -3
  76. data/lib/seam/todo.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a88e2aad02f40f721466c0b33699643238246f56a848308cb1ae404182de8585
4
- data.tar.gz: 5f19f1c35824bc75572ca253397d513b77d32aee827db78e6e11a0addefa3384
3
+ metadata.gz: 3bb7a5a7828d18d2b54017d76ed325d0e7e25c482de942eca0330da40f7e1105
4
+ data.tar.gz: 8a86ca467008bb6f8d2b76394f9f773a938f072a384a29dc78dc16e430917bb3
5
5
  SHA512:
6
- metadata.gz: 6614aa8ec8df516ab4c54cbf0203b88efae9fd7f995de8754deddfed00bf5c7f64cdc2c61f28746b38bd5ff9d8268629282387db14fc5351324b6b73e93b455d
7
- data.tar.gz: '03480dd4e1f12fb17f59cb6904734b3357e5c8f9a6d883944499be7b8a31caa527d644a57bfbd65c5fabc015cd293d4146b40698476e3e182203bd56cdf50522'
6
+ metadata.gz: 138e121c4bc2482ca27d3a74df486effb52d749de8e1af57fa95ec20600c109e7b2779794e2724fbe8436192ce3a40481e693857ca19b99a320ca96fe4623fe6
7
+ data.tar.gz: 4ae84ca5a842777f890f5df0cbff9252fa22d9658f7d03422abcb992a1412e1a272a538019c0f436290bb0064dea0344292690a919a4aa305ec7b3d84e96a30b
data/Gemfile.lock CHANGED
@@ -1,19 +1,45 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seam (2.0.0a1)
4
+ seam (2.0.0a2)
5
+ http (~> 5.2)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
10
+ addressable (2.8.6)
11
+ public_suffix (>= 2.0.2, < 6.0)
9
12
  ansi (1.5.0)
10
13
  ast (2.4.2)
14
+ base64 (0.2.0)
15
+ bigdecimal (3.1.7)
16
+ crack (1.0.0)
17
+ bigdecimal
18
+ rexml
11
19
  diff-lcs (1.5.1)
12
20
  docile (1.4.0)
21
+ domain_name (0.6.20240107)
22
+ ffi (1.16.3)
23
+ ffi-compiler (1.3.2)
24
+ ffi (>= 1.15.5)
25
+ rake
13
26
  gem-release (2.2.2)
27
+ hashdiff (1.1.0)
28
+ http (5.2.0)
29
+ addressable (~> 2.8)
30
+ base64 (~> 0.1)
31
+ http-cookie (~> 1.0)
32
+ http-form_data (~> 2.2)
33
+ llhttp-ffi (~> 0.5.0)
34
+ http-cookie (1.0.5)
35
+ domain_name (~> 0.5)
36
+ http-form_data (2.3.0)
14
37
  json (2.7.2)
15
38
  language_server-protocol (3.17.0.3)
16
39
  lint_roller (1.1.0)
40
+ llhttp-ffi (0.5.0)
41
+ ffi-compiler (~> 1.0)
42
+ rake (~> 13.0)
17
43
  multi_json (1.15.0)
18
44
  parallel (1.24.0)
19
45
  parse_gemspec (1.0.0)
@@ -24,6 +50,7 @@ GEM
24
50
  parser (3.3.0.5)
25
51
  ast (~> 2.4.1)
26
52
  racc
53
+ public_suffix (5.0.5)
27
54
  racc (1.7.3)
28
55
  rainbow (3.1.1)
29
56
  rake (13.2.1)
@@ -85,6 +112,10 @@ GEM
85
112
  unicode-display_width (>= 1.1.1, < 3)
86
113
  thor (1.3.1)
87
114
  unicode-display_width (2.5.0)
115
+ webmock (3.0.1)
116
+ addressable (>= 2.3.6)
117
+ crack (>= 0.3.2)
118
+ hashdiff
88
119
 
89
120
  PLATFORMS
90
121
  ruby
@@ -100,6 +131,7 @@ DEPENDENCIES
100
131
  simplecov (~> 0.21)
101
132
  simplecov-console (~> 0.9)
102
133
  standard (~> 1.3)
134
+ webmock (~> 3.0.0)
103
135
 
104
136
  BUNDLED WITH
105
- 2.5.7
137
+ 2.4.19
data/README.md CHANGED
@@ -64,13 +64,14 @@ $ git clone git@github.com:seamapi/ruby-next.git
64
64
 
65
65
  ### Requirements
66
66
 
67
- You will need [Ruby] with [Bundler].
67
+ You will need [Ruby] with [Bundler] and [Node.js] with [npm].
68
68
 
69
69
  Be sure that all commands run under the correct Ruby version, e.g.,
70
70
  if using [rbenv], install the correct version with
71
71
 
72
72
  ```
73
73
  $ rbenv install
74
+ $ npm install
74
75
  ```
75
76
 
76
77
  Install the development dependencies with
@@ -80,6 +81,8 @@ $ bundle install
80
81
  ```
81
82
 
82
83
  [bundler]: https://bundler.io/
84
+ [Node.js]: https://nodejs.org/
85
+ [npm]: https://www.npmjs.com/
83
86
  [ruby]: https://www.ruby-lang.org/
84
87
  [rbenv]: https://github.com/rbenv/rbenv
85
88
 
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require "rspec/core/rake_task"
5
5
  require "standard/rake"
6
6
 
7
7
  RSpec::Core::RakeTask.new(:spec) do |t|
8
- t.rspec_opts = "--pattern {spec,lib}/**/*_spec.rb"
8
+ t.rspec_opts = "--pattern spec/**/*_spec.rb"
9
9
  end
10
10
 
11
11
  task default: %i[lint test]
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ class Client
5
+ attr_accessor :api_key, :base_uri, :debug, :wait_for_action_attempt
6
+
7
+ def self.lts_version
8
+ Seam::LTS_VERSION
9
+ end
10
+
11
+ def initialize(api_key: nil, base_uri: nil, wait_for_action_attempt: false, debug: false)
12
+ @api_key = api_key || ENV["SEAM_API_KEY"]
13
+ @base_uri = base_uri || ENV["SEAM_API_URL"] || ENV["SEAM_ENDPOINT"] || "https://connect.getseam.com"
14
+ @debug = debug
15
+ @wait_for_action_attempt = wait_for_action_attempt
16
+
17
+ raise ArgumentError, "SEAM_API_KEY not found in environment, and api_key not provided" if @api_key.to_s.empty?
18
+
19
+ if ENV["SEAM_API_URL"]
20
+ warn "Using the SEAM_API_URL environment variable is deprecated. " \
21
+ "Support will be removed in a later major version. Use SEAM_ENDPOINT instead."
22
+ end
23
+ end
24
+
25
+ def lts_version
26
+ Seam::LTS_VERSION
27
+ end
28
+
29
+ def access_codes
30
+ @access_codes ||= Seam::Clients::AccessCodes.new(self)
31
+ end
32
+
33
+ def acs
34
+ @acs ||= Seam::Clients::Acs.new(self)
35
+ end
36
+
37
+ def action_attempts
38
+ @action_attempts ||= Seam::Clients::ActionAttempts.new(self)
39
+ end
40
+
41
+ def client_sessions
42
+ @client_sessions ||= Seam::Clients::ClientSessions.new(self)
43
+ end
44
+
45
+ def connect_webviews
46
+ @connect_webviews ||= Seam::Clients::ConnectWebviews.new(self)
47
+ end
48
+
49
+ def connected_accounts
50
+ @connected_accounts ||= Seam::Clients::ConnectedAccounts.new(self)
51
+ end
52
+
53
+ def devices
54
+ @devices ||= Seam::Clients::Devices.new(self)
55
+ end
56
+
57
+ def events
58
+ @events ||= Seam::Clients::Events.new(self)
59
+ end
60
+
61
+ def locks
62
+ @locks ||= Seam::Clients::Locks.new(self)
63
+ end
64
+
65
+ def networks
66
+ @networks ||= Seam::Clients::Networks.new(self)
67
+ end
68
+
69
+ def noise_sensors
70
+ @noise_sensors ||= Seam::Clients::NoiseSensors.new(self)
71
+ end
72
+
73
+ def phones
74
+ @phones ||= Seam::Clients::Phones.new(self)
75
+ end
76
+
77
+ def thermostats
78
+ @thermostats ||= Seam::Clients::Thermostats.new(self)
79
+ end
80
+
81
+ def user_identities
82
+ @user_identities ||= Seam::Clients::UserIdentities.new(self)
83
+ end
84
+
85
+ def webhooks
86
+ @webhooks ||= Seam::Clients::Webhooks.new(self)
87
+ end
88
+
89
+ def workspaces
90
+ @workspaces ||= Seam::Clients::Workspaces.new(self)
91
+ end
92
+
93
+ def health
94
+ request_seam(:get, "/health")
95
+ end
96
+
97
+ # @deprecated Please use {#devices.unmanaged} instead.
98
+ def unmanaged_devices
99
+ warn "[DEPRECATION] 'unmanaged_devices' is deprecated. Please use 'devices.unmanaged' instead."
100
+
101
+ @unmanaged_devices ||= Seam::Clients::DevicesUnmanaged.new(self)
102
+ end
103
+
104
+ # @deprecated Please use {#access_codes.unmanaged} instead.
105
+ def unmanaged_access_codes
106
+ warn "[DEPRECATION] 'unmanaged_access_codes' is deprecated. Please use 'access_codes.unmanaged' instead."
107
+
108
+ @unmanaged_access_codes ||= Seam::Clients::AccessCodesUnmanaged.new(self)
109
+ end
110
+
111
+ def request_seam_object(method, path, klass, inner_object, config = {})
112
+ response = request_seam(method, path, config)
113
+
114
+ data = response[inner_object]
115
+
116
+ klass.load_from_response(data, self)
117
+ end
118
+
119
+ def request_seam(method, path, config = {})
120
+ Seam::Request.new(
121
+ api_key: api_key,
122
+ base_uri: base_uri,
123
+ debug: debug
124
+ ).perform(
125
+ method, path, config
126
+ )
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AccessCodes < BaseClient
6
+ def simulate
7
+ @simulate ||= Seam::Clients::AccessCodesSimulate.new(self)
8
+ end
9
+
10
+ def unmanaged
11
+ @unmanaged ||= Seam::Clients::AccessCodesUnmanaged.new(self)
12
+ end
13
+
14
+ def create(device_id:, allow_external_modification: nil, attempt_for_offline_device: nil, code: nil, common_code_key: nil, ends_at: nil, is_external_modification_allowed: nil, is_offline_access_code: nil, is_one_time_use: nil, max_time_rounding: nil, name: nil, prefer_native_scheduling: nil, starts_at: nil, sync: nil, use_backup_access_code_pool: nil, use_offline_access_code: nil)
15
+ request_seam_object(
16
+ :post,
17
+ "/access_codes/create",
18
+ Seam::AccessCode,
19
+ "access_code",
20
+ body: {device_id: device_id, allow_external_modification: allow_external_modification, attempt_for_offline_device: attempt_for_offline_device, code: code, common_code_key: common_code_key, ends_at: ends_at, is_external_modification_allowed: is_external_modification_allowed, is_offline_access_code: is_offline_access_code, is_one_time_use: is_one_time_use, max_time_rounding: max_time_rounding, name: name, prefer_native_scheduling: prefer_native_scheduling, starts_at: starts_at, sync: sync, use_backup_access_code_pool: use_backup_access_code_pool, use_offline_access_code: use_offline_access_code}.compact
21
+ )
22
+ end
23
+
24
+ def create_multiple(device_ids:, allow_external_modification: nil, attempt_for_offline_device: nil, behavior_when_code_cannot_be_shared: nil, code: nil, ends_at: nil, is_external_modification_allowed: nil, is_offline_access_code: nil, is_one_time_use: nil, max_time_rounding: nil, name: nil, prefer_native_scheduling: nil, preferred_code_length: nil, starts_at: nil, use_backup_access_code_pool: nil, use_offline_access_code: nil)
25
+ request_seam_object(
26
+ :post,
27
+ "/access_codes/create_multiple",
28
+ Seam::AccessCode,
29
+ "access_codes",
30
+ body: {device_ids: device_ids, allow_external_modification: allow_external_modification, attempt_for_offline_device: attempt_for_offline_device, behavior_when_code_cannot_be_shared: behavior_when_code_cannot_be_shared, code: code, ends_at: ends_at, is_external_modification_allowed: is_external_modification_allowed, is_offline_access_code: is_offline_access_code, is_one_time_use: is_one_time_use, max_time_rounding: max_time_rounding, name: name, prefer_native_scheduling: prefer_native_scheduling, preferred_code_length: preferred_code_length, starts_at: starts_at, use_backup_access_code_pool: use_backup_access_code_pool, use_offline_access_code: use_offline_access_code}.compact
31
+ )
32
+ end
33
+
34
+ def delete(access_code_id:, device_id: nil, sync: nil)
35
+ request_seam(
36
+ :post,
37
+ "/access_codes/delete",
38
+ body: {access_code_id: access_code_id, device_id: device_id, sync: sync}.compact
39
+ )
40
+
41
+ nil
42
+ end
43
+
44
+ def generate_code(device_id:)
45
+ request_seam_object(
46
+ :post,
47
+ "/access_codes/generate_code",
48
+ Seam::AccessCode,
49
+ "generated_code",
50
+ body: {device_id: device_id}.compact
51
+ )
52
+ end
53
+
54
+ def get(access_code_id: nil, code: nil, device_id: nil)
55
+ request_seam_object(
56
+ :post,
57
+ "/access_codes/get",
58
+ Seam::AccessCode,
59
+ "access_code",
60
+ body: {access_code_id: access_code_id, code: code, device_id: device_id}.compact
61
+ )
62
+ end
63
+
64
+ def list(access_code_ids: nil, device_id: nil, user_identifier_key: nil)
65
+ request_seam_object(
66
+ :post,
67
+ "/access_codes/list",
68
+ Seam::AccessCode,
69
+ "access_codes",
70
+ body: {access_code_ids: access_code_ids, device_id: device_id, user_identifier_key: user_identifier_key}.compact
71
+ )
72
+ end
73
+
74
+ def pull_backup_access_code(access_code_id:)
75
+ request_seam_object(
76
+ :post,
77
+ "/access_codes/pull_backup_access_code",
78
+ Seam::AccessCode,
79
+ "backup_access_code",
80
+ body: {access_code_id: access_code_id}.compact
81
+ )
82
+ end
83
+
84
+ def update(access_code_id:, allow_external_modification: nil, attempt_for_offline_device: nil, code: nil, device_id: nil, ends_at: nil, is_external_modification_allowed: nil, is_managed: nil, is_offline_access_code: nil, is_one_time_use: nil, max_time_rounding: nil, name: nil, prefer_native_scheduling: nil, starts_at: nil, sync: nil, type: nil, use_backup_access_code_pool: nil, use_offline_access_code: nil)
85
+ request_seam(
86
+ :post,
87
+ "/access_codes/update",
88
+ body: {access_code_id: access_code_id, allow_external_modification: allow_external_modification, attempt_for_offline_device: attempt_for_offline_device, code: code, device_id: device_id, ends_at: ends_at, is_external_modification_allowed: is_external_modification_allowed, is_managed: is_managed, is_offline_access_code: is_offline_access_code, is_one_time_use: is_one_time_use, max_time_rounding: max_time_rounding, name: name, prefer_native_scheduling: prefer_native_scheduling, starts_at: starts_at, sync: sync, type: type, use_backup_access_code_pool: use_backup_access_code_pool, use_offline_access_code: use_offline_access_code}.compact
89
+ )
90
+
91
+ nil
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AccessCodesSimulate < BaseClient
6
+ def create_unmanaged_access_code(code:, device_id:, name:)
7
+ request_seam_object(
8
+ :post,
9
+ "/access_codes/simulate/create_unmanaged_access_code",
10
+ Seam::UnmanagedAccessCode,
11
+ "access_code",
12
+ body: {code: code, device_id: device_id, name: name}.compact
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AccessCodesUnmanaged < BaseClient
6
+ def convert_to_managed(access_code_id:, allow_external_modification: nil, force: nil, is_external_modification_allowed: nil, sync: nil)
7
+ request_seam(
8
+ :post,
9
+ "/access_codes/unmanaged/convert_to_managed",
10
+ body: {access_code_id: access_code_id, allow_external_modification: allow_external_modification, force: force, is_external_modification_allowed: is_external_modification_allowed, sync: sync}.compact
11
+ )
12
+
13
+ nil
14
+ end
15
+
16
+ def delete(access_code_id:, sync: nil)
17
+ request_seam(
18
+ :post,
19
+ "/access_codes/unmanaged/delete",
20
+ body: {access_code_id: access_code_id, sync: sync}.compact
21
+ )
22
+
23
+ nil
24
+ end
25
+
26
+ def get(access_code_id: nil, code: nil, device_id: nil)
27
+ request_seam_object(
28
+ :post,
29
+ "/access_codes/unmanaged/get",
30
+ Seam::UnmanagedAccessCode,
31
+ "access_code",
32
+ body: {access_code_id: access_code_id, code: code, device_id: device_id}.compact
33
+ )
34
+ end
35
+
36
+ def list(device_id:, user_identifier_key: nil)
37
+ request_seam_object(
38
+ :post,
39
+ "/access_codes/unmanaged/list",
40
+ Seam::UnmanagedAccessCode,
41
+ "access_codes",
42
+ body: {device_id: device_id, user_identifier_key: user_identifier_key}.compact
43
+ )
44
+ end
45
+
46
+ def update(access_code_id:, is_managed:, allow_external_modification: nil, force: nil, is_external_modification_allowed: nil)
47
+ request_seam(
48
+ :post,
49
+ "/access_codes/unmanaged/update",
50
+ body: {access_code_id: access_code_id, is_managed: is_managed, allow_external_modification: allow_external_modification, force: force, is_external_modification_allowed: is_external_modification_allowed}.compact
51
+ )
52
+
53
+ nil
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class Acs < BaseClient
6
+ def access_groups
7
+ @access_groups ||= Seam::Clients::AcsAccessGroups.new(self)
8
+ end
9
+
10
+ def credential_pools
11
+ @credential_pools ||= Seam::Clients::AcsCredentialPools.new(self)
12
+ end
13
+
14
+ def credential_provisioning_automations
15
+ @credential_provisioning_automations ||= Seam::Clients::AcsCredentialProvisioningAutomations.new(self)
16
+ end
17
+
18
+ def credentials
19
+ @credentials ||= Seam::Clients::AcsCredentials.new(self)
20
+ end
21
+
22
+ def entrances
23
+ @entrances ||= Seam::Clients::AcsEntrances.new(self)
24
+ end
25
+
26
+ def systems
27
+ @systems ||= Seam::Clients::AcsSystems.new(self)
28
+ end
29
+
30
+ def users
31
+ @users ||= Seam::Clients::AcsUsers.new(self)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AcsAccessGroups < BaseClient
6
+ def add_user(acs_access_group_id:, acs_user_id:)
7
+ request_seam(
8
+ :post,
9
+ "/acs/access_groups/add_user",
10
+ body: {acs_access_group_id: acs_access_group_id, acs_user_id: acs_user_id}.compact
11
+ )
12
+
13
+ nil
14
+ end
15
+
16
+ def get(acs_access_group_id:)
17
+ request_seam_object(
18
+ :post,
19
+ "/acs/access_groups/get",
20
+ Seam::AcsAccessGroup,
21
+ "acs_access_group",
22
+ body: {acs_access_group_id: acs_access_group_id}.compact
23
+ )
24
+ end
25
+
26
+ def list(acs_system_id: nil, acs_user_id: nil)
27
+ request_seam_object(
28
+ :post,
29
+ "/acs/access_groups/list",
30
+ Seam::AcsAccessGroup,
31
+ "acs_access_groups",
32
+ body: {acs_system_id: acs_system_id, acs_user_id: acs_user_id}.compact
33
+ )
34
+ end
35
+
36
+ def list_users(acs_access_group_id:)
37
+ request_seam_object(
38
+ :post,
39
+ "/acs/access_groups/list_users",
40
+ Seam::AcsUser,
41
+ "acs_users",
42
+ body: {acs_access_group_id: acs_access_group_id}.compact
43
+ )
44
+ end
45
+
46
+ def remove_user(acs_access_group_id:, acs_user_id:)
47
+ request_seam(
48
+ :post,
49
+ "/acs/access_groups/remove_user",
50
+ body: {acs_access_group_id: acs_access_group_id, acs_user_id: acs_user_id}.compact
51
+ )
52
+
53
+ nil
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AcsCredentialPools < BaseClient
6
+ def list(acs_system_id:)
7
+ request_seam_object(
8
+ :post,
9
+ "/acs/credential_pools/list",
10
+ Seam::AcsCredentialPool,
11
+ "acs_credential_pools",
12
+ body: {acs_system_id: acs_system_id}.compact
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AcsCredentialProvisioningAutomations < BaseClient
6
+ def launch(credential_manager_acs_system_id:, user_identity_id:, acs_credential_pool_id: nil, create_credential_manager_user: nil, credential_manager_acs_user_id: nil)
7
+ request_seam_object(
8
+ :post,
9
+ "/acs/credential_provisioning_automations/launch",
10
+ Seam::AcsCredentialProvisioningAutomation,
11
+ "acs_credential_provisioning_automation",
12
+ body: {credential_manager_acs_system_id: credential_manager_acs_system_id, user_identity_id: user_identity_id, acs_credential_pool_id: acs_credential_pool_id, create_credential_manager_user: create_credential_manager_user, credential_manager_acs_user_id: credential_manager_acs_user_id}.compact
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AcsCredentials < BaseClient
6
+ def assign(acs_credential_id:, acs_user_id:)
7
+ request_seam(
8
+ :post,
9
+ "/acs/credentials/assign",
10
+ body: {acs_credential_id: acs_credential_id, acs_user_id: acs_user_id}.compact
11
+ )
12
+
13
+ nil
14
+ end
15
+
16
+ def create(access_method:, acs_user_id:, allowed_acs_entrance_ids: nil, code: nil, credential_manager_acs_system_id: nil, ends_at: nil, is_multi_phone_sync_credential: nil, starts_at: nil, visionline_metadata: nil)
17
+ request_seam_object(
18
+ :post,
19
+ "/acs/credentials/create",
20
+ Seam::AcsCredential,
21
+ "acs_credential",
22
+ body: {access_method: access_method, acs_user_id: acs_user_id, allowed_acs_entrance_ids: allowed_acs_entrance_ids, code: code, credential_manager_acs_system_id: credential_manager_acs_system_id, ends_at: ends_at, is_multi_phone_sync_credential: is_multi_phone_sync_credential, starts_at: starts_at, visionline_metadata: visionline_metadata}.compact
23
+ )
24
+ end
25
+
26
+ def delete(acs_credential_id:)
27
+ request_seam(
28
+ :post,
29
+ "/acs/credentials/delete",
30
+ body: {acs_credential_id: acs_credential_id}.compact
31
+ )
32
+
33
+ nil
34
+ end
35
+
36
+ def get(acs_credential_id:)
37
+ request_seam_object(
38
+ :post,
39
+ "/acs/credentials/get",
40
+ Seam::AcsCredential,
41
+ "acs_credential",
42
+ body: {acs_credential_id: acs_credential_id}.compact
43
+ )
44
+ end
45
+
46
+ def list(acs_user_id: nil, acs_system_id: nil, user_identity_id: nil, is_multi_phone_sync_credential: nil)
47
+ request_seam_object(
48
+ :post,
49
+ "/acs/credentials/list",
50
+ Seam::AcsCredential,
51
+ "acs_credentials",
52
+ body: {acs_user_id: acs_user_id, acs_system_id: acs_system_id, user_identity_id: user_identity_id, is_multi_phone_sync_credential: is_multi_phone_sync_credential}.compact
53
+ )
54
+ end
55
+
56
+ def unassign(acs_credential_id:, acs_user_id:)
57
+ request_seam(
58
+ :post,
59
+ "/acs/credentials/unassign",
60
+ body: {acs_credential_id: acs_credential_id, acs_user_id: acs_user_id}.compact
61
+ )
62
+
63
+ nil
64
+ end
65
+
66
+ def update(acs_credential_id:, code:)
67
+ request_seam(
68
+ :post,
69
+ "/acs/credentials/update",
70
+ body: {acs_credential_id: acs_credential_id, code: code}.compact
71
+ )
72
+
73
+ nil
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Seam
4
+ module Clients
5
+ class AcsEntrances < BaseClient
6
+ def get(acs_entrance_id:)
7
+ request_seam_object(
8
+ :post,
9
+ "/acs/entrances/get",
10
+ Seam::AcsEntrance,
11
+ "acs_entrance",
12
+ body: {acs_entrance_id: acs_entrance_id}.compact
13
+ )
14
+ end
15
+
16
+ def grant_access(acs_entrance_id:, acs_user_id:)
17
+ request_seam(
18
+ :post,
19
+ "/acs/entrances/grant_access",
20
+ body: {acs_entrance_id: acs_entrance_id, acs_user_id: acs_user_id}.compact
21
+ )
22
+
23
+ nil
24
+ end
25
+
26
+ def list(acs_credential_id: nil, acs_system_id: nil)
27
+ request_seam_object(
28
+ :post,
29
+ "/acs/entrances/list",
30
+ Seam::AcsEntrance,
31
+ "acs_entrances",
32
+ body: {acs_credential_id: acs_credential_id, acs_system_id: acs_system_id}.compact
33
+ )
34
+ end
35
+
36
+ def list_credentials_with_access(acs_entrance_id:, include_if: nil)
37
+ request_seam_object(
38
+ :post,
39
+ "/acs/entrances/list_credentials_with_access",
40
+ Seam::AcsCredential,
41
+ "acs_credentials",
42
+ body: {acs_entrance_id: acs_entrance_id, include_if: include_if}.compact
43
+ )
44
+ end
45
+ end
46
+ end
47
+ end