seam 2.147.0 → 2.148.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 470a850ce5dd503011b867a031c833b177fe0e5119443887ba8048b943ab51ce
4
- data.tar.gz: b04262ca58b2d2975ce2a611ae726d18d2fc8f9fc4d98090a731c7630bdcb44a
3
+ metadata.gz: '06196d87a7db7cb6f396e2ce2f94f02d9dfb2c2eecff52fa314df6d95856ff57'
4
+ data.tar.gz: f7be00a016e5c13fc8e937595b80302453ae8625d27df6a0541d1eacf5b3504e
5
5
  SHA512:
6
- metadata.gz: b7e9fbb08d1dff7832512701291ae80c5facaad8954fb55b620ae7947f66d80a605abf35a3523fcd58ae95d2a122e606688ee3d982283e7be202bd6d2753ae57
7
- data.tar.gz: '075198d637457d867c8123d62e6e5e55022b914f131fa70c5be52489ad2e27e739bae09277a0786ce087d7b2fd43f0fd9b36d0c197e5ede2df9301448fbf422e'
6
+ metadata.gz: 68f7a956b71ae32046af99e15b612d1fa1ac4a689539dadf795776bdd873ea5bd4ed7ace6105f17678c760184567a02bd5b6d472d0c536ab19eba4fa3e45f655
7
+ data.tar.gz: 66906c6e6172416dc861bb7dc71b6e51a49baba23331b4ddc5d0ef1fa6f677fa13841bd913a6c2537cfbc00eaf74e9700f14cef44907efbff213960836ac5b75
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seam (2.147.0)
4
+ seam (2.148.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.147.0)
174
+ seam (2.148.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
@@ -320,7 +320,7 @@ module Seam
320
320
  # Display name of the Access Grant.
321
321
  # @return [String]
322
322
  attr_accessor :display_name
323
- # Human-readable sentence answering whether the user can currently get in, for example `Awaiting encoding` on an access method or `Upcoming` here. For display only. The wording is not stable and is not an enumeration — it may change at any time, so never compare against or branch on it. To make decisions, read `starts_at`, `ends_at`, `errors`, and the access methods' own fields.
323
+ # Human-readable sentence answering whether the user can currently get in, for example `Active`, `Awaiting issuance`, or `Upcoming`. For display only. The wording is not stable and is not an enumeration — it may change at any time, so never compare against or branch on it. To make decisions, read `starts_at`, `ends_at`, `errors`, and the access methods' own fields.
324
324
  # @return [String]
325
325
  attr_accessor :display_status
326
326
  # Instant Key URL. Only returned if the Access Grant has a single mobile_key access_method.
@@ -3481,15 +3481,13 @@ module Seam
3481
3481
 
3482
3482
  # A device battery level dropped below the low threshold.
3483
3483
  class DeviceLowBattery < SeamEvent
3484
- # Number in the range 0 to 1.0 indicating the amount of battery in the affected device, as reported by the device.
3484
+ # Number in the range 0 to 1.0 indicating the battery level of the affected device's paired accessory keypad, when the device has one and its level is known.
3485
+ # @return [Float, nil]
3486
+ attr_accessor :accessory_keypad_battery_level
3487
+ # Number in the range 0 to 1.0 indicating the level of the battery whose drop triggered this event.
3485
3488
  # @return [Float]
3489
+ # @deprecated Use device_battery_level and accessory_keypad_battery_level, which distinguish the device's own battery from a paired accessory keypad's battery.
3486
3490
  attr_accessor :battery_level
3487
- # Battery that dropped below the low threshold. `lock`: the lock's own battery. `accessory_keypad`: a paired accessory keypad's battery. Omitted for events emitted before this field existed, which always refer to the lock's own battery.
3488
- # @return [String, nil]
3489
- # Known values:
3490
- # - `lock`
3491
- # - `accessory_keypad`
3492
- attr_accessor :battery_source
3493
3491
  # Custom metadata of the connected account, present when connected_account_id is provided.
3494
3492
  # @return [Hash{String => String, Boolean}, nil]
3495
3493
  attr_accessor :connected_account_custom_metadata
@@ -3499,6 +3497,9 @@ module Seam
3499
3497
  # The customer key associated with the device, if any.
3500
3498
  # @return [String, nil]
3501
3499
  attr_accessor :customer_key
3500
+ # Number in the range 0 to 1.0 indicating the affected device's own battery level, when known.
3501
+ # @return [Float, nil]
3502
+ attr_accessor :device_battery_level
3502
3503
  # Custom metadata of the device, present when device_id is provided.
3503
3504
  # @return [Hash{String => String, Boolean}, nil]
3504
3505
  attr_accessor :device_custom_metadata
@@ -196,7 +196,7 @@ module Seam
196
196
  # @param type [String, nil] Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access).
197
197
  # @return [nil] OK
198
198
  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, name: nil, starts_at: nil, type: nil)
199
- @client.put("/access_codes/update", {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, name: name, starts_at: starts_at, type: type}.compact)
199
+ @client.patch("/access_codes/update", {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, name: name, starts_at: starts_at, type: type}.compact)
200
200
 
201
201
  nil
202
202
  end
@@ -14,8 +14,6 @@ module Seam
14
14
 
15
15
  # Creates a new [Access Grant](https://docs.seam.co/use-cases/granting-access/access-grants). Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using `device_ids`) and access control systems (using `acs_entrance_ids` or `space_ids`), and can issue PIN codes, key cards, and mobile keys through a single request.
16
16
  # @param requested_access_methods [Array<Hash>]
17
- # @param user_identity_id [String, nil] ID of user identity for whom access is being granted.
18
- # @param user_identity [Hash, nil] When used, creates a new user identity with the given details, and grants them access.
19
17
  # @param access_grant_key [String, nil] Unique key for the access grant within the workspace.
20
18
  # @param acs_entrance_ids [Array<String>, nil] Set of IDs of the [entrances](https://docs.seam.co/api/acs/systems/list) to which access is being granted.
21
19
  # @param customization_profile_id [String, nil] ID of the customization profile to apply to the Access Grant and its access methods.
@@ -30,9 +28,11 @@ module Seam
30
28
  # @param space_ids [Array<String>, nil] Set of IDs of existing spaces to which access is being granted.
31
29
  # @param space_keys [Array<String>, nil] Set of keys of existing spaces to which access is being granted.
32
30
  # @param starts_at [String, nil] Date and time at which the validity of the new grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
31
+ # @param user_identity [Hash, nil] When used, creates a new user identity with the given details, and grants them access.
32
+ # @param user_identity_id [String, nil] ID of user identity for whom access is being granted.
33
33
  # @return [Seam::Resources::AccessGrant] OK
34
- def create(requested_access_methods:, user_identity_id: nil, user_identity: nil, access_grant_key: nil, acs_entrance_ids: nil, customization_profile_id: nil, device_ids: nil, ends_at: nil, location: nil, location_ids: nil, name: nil, reservation_key: nil, space_ids: nil, space_keys: nil, starts_at: nil)
35
- res = @client.post("/access_grants/create", {requested_access_methods: requested_access_methods, user_identity_id: user_identity_id, user_identity: user_identity, access_grant_key: access_grant_key, acs_entrance_ids: acs_entrance_ids, customization_profile_id: customization_profile_id, device_ids: device_ids, ends_at: ends_at, location: location, location_ids: location_ids, name: name, reservation_key: reservation_key, space_ids: space_ids, space_keys: space_keys, starts_at: starts_at}.compact)
34
+ def create(requested_access_methods:, access_grant_key: nil, acs_entrance_ids: nil, customization_profile_id: nil, device_ids: nil, ends_at: nil, location: nil, location_ids: nil, name: nil, reservation_key: nil, space_ids: nil, space_keys: nil, starts_at: nil, user_identity: nil, user_identity_id: nil)
35
+ res = @client.post("/access_grants/create", {requested_access_methods: requested_access_methods, access_grant_key: access_grant_key, acs_entrance_ids: acs_entrance_ids, customization_profile_id: customization_profile_id, device_ids: device_ids, ends_at: ends_at, location: location, location_ids: location_ids, name: name, reservation_key: reservation_key, space_ids: space_ids, space_keys: space_keys, starts_at: starts_at, user_identity: user_identity, user_identity_id: user_identity_id}.compact)
36
36
 
37
37
  Seam::Resources::AccessGrant.load_from_response(res.body["access_grant"])
38
38
  end
@@ -27,16 +27,16 @@ module Seam
27
27
  end
28
28
 
29
29
  # Deletes an access method.
30
- # @param access_method_id [String, nil] ID of access method to delete.
31
30
  # @param access_grant_id [String, nil] ID of access grant whose access methods should be deleted.
31
+ # @param access_method_id [String, nil] ID of access method to delete.
32
32
  # @param reservation_key [String, nil] Reservation key of the access grant whose access methods should be deleted.
33
33
  # @return [nil] OK
34
- def delete(access_method_id: nil, access_grant_id: nil, reservation_key: nil)
35
- if access_method_id.nil? && access_grant_id.nil? && reservation_key.nil?
34
+ def delete(access_grant_id: nil, access_method_id: nil, reservation_key: nil)
35
+ if access_grant_id.nil? && access_method_id.nil? && reservation_key.nil?
36
36
  raise TypeError, "At least one parameter is required for /access_methods/delete"
37
37
  end
38
38
 
39
- @client.delete("/access_methods/delete", {access_method_id: access_method_id, access_grant_id: access_grant_id, reservation_key: reservation_key}.compact)
39
+ @client.delete("/access_methods/delete", {access_grant_id: access_grant_id, access_method_id: access_method_id, reservation_key: reservation_key}.compact)
40
40
 
41
41
  nil
42
42
  end
@@ -10,11 +10,11 @@ module Seam
10
10
 
11
11
  # Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces).
12
12
  # @param acs_encoder_id [String] ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`.
13
- # @param error_code [String, nil] Code of the error to simulate.
14
13
  # @param acs_credential_id [String, nil] ID of the `acs_credential` that will fail to be encoded onto a card in the next request.
14
+ # @param error_code [String, nil] Code of the error to simulate.
15
15
  # @return [nil] OK
16
- def next_credential_encode_will_fail(acs_encoder_id:, error_code: nil, acs_credential_id: nil)
17
- @client.post("/acs/encoders/simulate/next_credential_encode_will_fail", {acs_encoder_id: acs_encoder_id, error_code: error_code, acs_credential_id: acs_credential_id}.compact)
16
+ def next_credential_encode_will_fail(acs_encoder_id:, acs_credential_id: nil, error_code: nil)
17
+ @client.post("/acs/encoders/simulate/next_credential_encode_will_fail", {acs_encoder_id: acs_encoder_id, acs_credential_id: acs_credential_id, error_code: error_code}.compact)
18
18
 
19
19
  nil
20
20
  end
@@ -31,11 +31,11 @@ module Seam
31
31
 
32
32
  # Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces).
33
33
  # @param acs_encoder_id [String] ID of the `acs_encoder` that will fail to scan the `acs_credential` in the next request.
34
- # @param error_code [String, nil]
35
34
  # @param acs_credential_id_on_seam [String, nil]
35
+ # @param error_code [String, nil]
36
36
  # @return [nil] OK
37
- def next_credential_scan_will_fail(acs_encoder_id:, error_code: nil, acs_credential_id_on_seam: nil)
38
- @client.post("/acs/encoders/simulate/next_credential_scan_will_fail", {acs_encoder_id: acs_encoder_id, error_code: error_code, acs_credential_id_on_seam: acs_credential_id_on_seam}.compact)
37
+ def next_credential_scan_will_fail(acs_encoder_id:, acs_credential_id_on_seam: nil, error_code: nil)
38
+ @client.post("/acs/encoders/simulate/next_credential_scan_will_fail", {acs_encoder_id: acs_encoder_id, acs_credential_id_on_seam: acs_credential_id_on_seam, error_code: error_code}.compact)
39
39
 
40
40
  nil
41
41
  end
@@ -9,6 +9,7 @@ module Seam
9
9
  end
10
10
 
11
11
  # Creates a new customer portal magic link with configurable features.
12
+ # @param customer_data [Hash, nil]
12
13
  # @param customer_resources_filters [Array<Hash>, nil] Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata.
13
14
  # @param customization_profile_id [String, nil] The ID of the customization profile to use for the portal.
14
15
  # @param deep_link [Hash, nil] Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource.
@@ -19,10 +20,9 @@ module Seam
19
20
  # @param locale [String, nil] The locale to use for the portal.
20
21
  # @param navigation_mode [String, nil] Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links.
21
22
  # @param read_only [Boolean, nil] Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected.
22
- # @param customer_data [Hash, nil]
23
23
  # @return [Seam::Resources::CustomerPortal] OK
24
- def create_portal(customer_resources_filters: nil, customization_profile_id: nil, deep_link: nil, exclude_locale_picker: nil, features: nil, is_embedded: nil, landing_page: nil, locale: nil, navigation_mode: nil, read_only: nil, customer_data: nil)
25
- res = @client.post("/customers/create_portal", {customer_resources_filters: customer_resources_filters, customization_profile_id: customization_profile_id, deep_link: deep_link, exclude_locale_picker: exclude_locale_picker, features: features, is_embedded: is_embedded, landing_page: landing_page, locale: locale, navigation_mode: navigation_mode, read_only: read_only, customer_data: customer_data}.compact)
24
+ def create_portal(customer_data: nil, customer_resources_filters: nil, customization_profile_id: nil, deep_link: nil, exclude_locale_picker: nil, features: nil, is_embedded: nil, landing_page: nil, locale: nil, navigation_mode: nil, read_only: nil)
25
+ res = @client.post("/customers/create_portal", {customer_data: customer_data, customer_resources_filters: customer_resources_filters, customization_profile_id: customization_profile_id, deep_link: deep_link, exclude_locale_picker: exclude_locale_picker, features: features, is_embedded: is_embedded, landing_page: landing_page, locale: locale, navigation_mode: navigation_mode, read_only: read_only}.compact)
26
26
 
27
27
  Seam::Resources::CustomerPortal.load_from_response(res.body["customer_portal"])
28
28
  end
@@ -60,7 +60,7 @@ module Seam
60
60
  # @param starts_daily_at [String, nil] Time at which the noise threshold should become active daily.
61
61
  # @return [nil] OK
62
62
  def update(device_id:, noise_threshold_id:, ends_daily_at: nil, name: nil, noise_threshold_decibels: nil, noise_threshold_nrs: nil, starts_daily_at: nil)
63
- @client.put("/noise_sensors/noise_thresholds/update", {device_id: device_id, noise_threshold_id: noise_threshold_id, ends_daily_at: ends_daily_at, name: name, noise_threshold_decibels: noise_threshold_decibels, noise_threshold_nrs: noise_threshold_nrs, starts_daily_at: starts_daily_at}.compact)
63
+ @client.patch("/noise_sensors/noise_thresholds/update", {device_id: device_id, noise_threshold_id: noise_threshold_id, ends_daily_at: ends_daily_at, name: name, noise_threshold_decibels: noise_threshold_decibels, noise_threshold_nrs: noise_threshold_nrs, starts_daily_at: starts_daily_at}.compact)
64
64
 
65
65
  nil
66
66
  end
@@ -142,16 +142,16 @@ module Seam
142
142
  #
143
143
  # Identify the user identities either by ID or by key, but not both in the same request. Repeating a merge that has already been applied makes no further changes.
144
144
  # @param merged_user_identity_ids [Array<String>, nil] IDs of the user identities to merge into the primary user identity. These user identities are deleted.
145
- # @param user_identity_id [String, nil] ID of the primary user identity to keep.
146
145
  # @param merged_user_identity_keys [Array<String>, nil] Keys of the user identities to merge into the primary user identity. These user identities are deleted.
146
+ # @param user_identity_id [String, nil] ID of the primary user identity to keep.
147
147
  # @param user_identity_key [String, nil] Key of the primary user identity to keep.
148
148
  # @return [nil] OK
149
- def merge(merged_user_identity_ids: nil, user_identity_id: nil, merged_user_identity_keys: nil, user_identity_key: nil)
150
- if merged_user_identity_ids.nil? && user_identity_id.nil? && merged_user_identity_keys.nil? && user_identity_key.nil?
149
+ def merge(merged_user_identity_ids: nil, merged_user_identity_keys: nil, user_identity_id: nil, user_identity_key: nil)
150
+ if merged_user_identity_ids.nil? && merged_user_identity_keys.nil? && user_identity_id.nil? && user_identity_key.nil?
151
151
  raise TypeError, "At least one parameter is required for /user_identities/merge"
152
152
  end
153
153
 
154
- @client.post("/user_identities/merge", {merged_user_identity_ids: merged_user_identity_ids, user_identity_id: user_identity_id, merged_user_identity_keys: merged_user_identity_keys, user_identity_key: user_identity_key}.compact)
154
+ @client.post("/user_identities/merge", {merged_user_identity_ids: merged_user_identity_ids, merged_user_identity_keys: merged_user_identity_keys, user_identity_id: user_identity_id, user_identity_key: user_identity_key}.compact)
155
155
 
156
156
  nil
157
157
  end
@@ -17,7 +17,7 @@ module Seam
17
17
  # @param connect_partner_name [String, Seam::Null, nil] Connect partner name for the new workspace.
18
18
  # @param connect_webview_customization [Hash, nil] [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the new workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews).
19
19
  # @param is_sandbox [Boolean, nil] Indicates whether the new workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces).
20
- # @param organization_id [String, nil] ID of the organization to associate with the new workspace.
20
+ # @param organization_id [String, nil] ID of the organization to associate with the new workspace. If omitted, the new workspace is associated with the organization that you administer, if you administer exactly one.
21
21
  # @param webview_logo_shape [String, nil]
22
22
  # @deprecated webview_logo_shape: Use `connect_webview_customization.webview_logo_shape` instead.
23
23
  # @param webview_primary_button_color [String, nil]
data/lib/seam/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Seam
4
- VERSION = "2.147.0"
4
+ VERSION = "2.148.0"
5
5
  end
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.147.0
4
+ version: 2.148.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seam Labs, Inc.