zyphr 0.1.55 → 0.1.57
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/docs/AuthPasswordResetApi.md +1 -1
- data/docs/DevicesApi.md +1 -1
- data/docs/InviteEndUser200ResponseData.md +3 -1
- data/lib/zyphr/api/auth_password_reset_api.rb +2 -2
- data/lib/zyphr/api/devices_api.rb +2 -2
- data/lib/zyphr/models/invite_end_user200_response_data.rb +14 -4
- data/spec/api/auth_password_reset_api_spec.rb +1 -1
- data/spec/api/devices_api_spec.rb +1 -1
- data/spec/models/invite_end_user200_response_data_spec.rb +6 -0
- data/zyphr.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5df74a41bd87130c14d2f741651f1617baade8b9ebe23f90d7edc1b112c15bc0
|
|
4
|
+
data.tar.gz: 72b9840799c7b7e72e16db2bcb96f982e5f7b9a2d4f296195d1303be7549d1fe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7e558a85a1ffcc94bc8e692c4d7338d89632e878daf74229f7689d3b3c2236ae0500e8d375f1ee4d039836f0bd66e33ece72db481e9fb3416916d9d039eabeef
|
|
7
|
+
data.tar.gz: dc84b266eaa34edd83b5000997e8867681378d12564c1b158a492aea6c0adcabaf1d2d28e7b7c5cdc554d5d35bf4905d8f3986745613c10cc4f0030c0530dede
|
|
@@ -15,7 +15,7 @@ All URIs are relative to *https://api.zyphr.dev/v1*
|
|
|
15
15
|
|
|
16
16
|
Request a password reset
|
|
17
17
|
|
|
18
|
-
Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration.
|
|
18
|
+
Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration — the response is identical whether or not the address is registered. An identity with **no password set** still receives a link, which sets a first password. This covers users migrated from a provider that cannot export password hashes. The one case where no email is sent (beyond an unknown address) is an identity that has no password but *does* have another way in — a linked OAuth provider and/or a passkey. Those users are not locked out, so no set-password link is sent; the attempt is recorded as a suppressed message visible via `GET /emails`.
|
|
19
19
|
|
|
20
20
|
### Examples
|
|
21
21
|
|
data/docs/DevicesApi.md
CHANGED
|
@@ -378,7 +378,7 @@ end
|
|
|
378
378
|
|
|
379
379
|
Register a device
|
|
380
380
|
|
|
381
|
-
Register a device for push notifications.
|
|
381
|
+
Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
|
|
382
382
|
|
|
383
383
|
### Examples
|
|
384
384
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
| **user_id** | **String** | | [optional] |
|
|
8
8
|
| **created** | **Boolean** | True when a new user was provisioned; false when an existing user was reused (idempotent on email). | [optional] |
|
|
9
9
|
| **link_sent** | **Boolean** | True when a magic-link or password-reset email was successfully dispatched. | [optional] |
|
|
10
|
+
| **link_suppressed_reason** | **String** | Present only when `send_link` was requested and `link_sent` is false — explains why, so a caller can distinguish \"suppressed by design\" from \"delivery failed\". Known values: - `identity_has_other_auth_methods` — the identity has no password but does have a linked OAuth provider and/or a passkey, so it is not locked out and no set-password link is sent. The attempt is recorded as a suppressed message, visible via `GET /emails`. - `user_not_found_in_environment` — the identity could not be resolved in the calling environment (a race; it was created or resolved immediately prior). - `recipient_not_allowlisted` — the application's `test_recipients` allowlist blocked the recipient. - `send_failed` — dispatch was attempted and failed with no more specific code. Not a closed set: a mail-provider error code may be surfaced verbatim, so treat an unrecognised value as a generic failure rather than an error. | [optional] |
|
|
10
11
|
|
|
11
12
|
## Example
|
|
12
13
|
|
|
@@ -16,7 +17,8 @@ require 'zyphr'
|
|
|
16
17
|
instance = Zyphr::InviteEndUser200ResponseData.new(
|
|
17
18
|
user_id: null,
|
|
18
19
|
created: null,
|
|
19
|
-
link_sent: null
|
|
20
|
+
link_sent: null,
|
|
21
|
+
link_suppressed_reason: identity_has_other_auth_methods
|
|
20
22
|
)
|
|
21
23
|
```
|
|
22
24
|
|
|
@@ -20,7 +20,7 @@ module Zyphr
|
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
22
|
# Request a password reset
|
|
23
|
-
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration.
|
|
23
|
+
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration — the response is identical whether or not the address is registered. An identity with **no password set** still receives a link, which sets a first password. This covers users migrated from a provider that cannot export password hashes. The one case where no email is sent (beyond an unknown address) is an identity that has no password but *does* have another way in — a linked OAuth provider and/or a passkey. Those users are not locked out, so no set-password link is sent; the attempt is recorded as a suppressed message visible via `GET /emails`.
|
|
24
24
|
# @param forgot_password_request [ForgotPasswordRequest]
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
26
26
|
# @return [SuccessResult]
|
|
@@ -30,7 +30,7 @@ module Zyphr
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
# Request a password reset
|
|
33
|
-
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration.
|
|
33
|
+
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration — the response is identical whether or not the address is registered. An identity with **no password set** still receives a link, which sets a first password. This covers users migrated from a provider that cannot export password hashes. The one case where no email is sent (beyond an unknown address) is an identity that has no password but *does* have another way in — a linked OAuth provider and/or a passkey. Those users are not locked out, so no set-password link is sent; the attempt is recorded as a suppressed message visible via `GET /emails`.
|
|
34
34
|
# @param forgot_password_request [ForgotPasswordRequest]
|
|
35
35
|
# @param [Hash] opts the optional parameters
|
|
36
36
|
# @return [Array<(SuccessResult, Integer, Hash)>] SuccessResult data, response status code and response headers
|
|
@@ -339,7 +339,7 @@ module Zyphr
|
|
|
339
339
|
end
|
|
340
340
|
|
|
341
341
|
# Register a device
|
|
342
|
-
# Register a device for push notifications.
|
|
342
|
+
# Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
|
|
343
343
|
# @param register_device_request [RegisterDeviceRequest]
|
|
344
344
|
# @param [Hash] opts the optional parameters
|
|
345
345
|
# @return [DeviceResponse]
|
|
@@ -349,7 +349,7 @@ module Zyphr
|
|
|
349
349
|
end
|
|
350
350
|
|
|
351
351
|
# Register a device
|
|
352
|
-
# Register a device for push notifications.
|
|
352
|
+
# Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
|
|
353
353
|
# @param register_device_request [RegisterDeviceRequest]
|
|
354
354
|
# @param [Hash] opts the optional parameters
|
|
355
355
|
# @return [Array<(DeviceResponse, Integer, Hash)>] DeviceResponse data, response status code and response headers
|
|
@@ -23,12 +23,16 @@ module Zyphr
|
|
|
23
23
|
# True when a magic-link or password-reset email was successfully dispatched.
|
|
24
24
|
attr_accessor :link_sent
|
|
25
25
|
|
|
26
|
+
# Present only when `send_link` was requested and `link_sent` is false — explains why, so a caller can distinguish \"suppressed by design\" from \"delivery failed\". Known values: - `identity_has_other_auth_methods` — the identity has no password but does have a linked OAuth provider and/or a passkey, so it is not locked out and no set-password link is sent. The attempt is recorded as a suppressed message, visible via `GET /emails`. - `user_not_found_in_environment` — the identity could not be resolved in the calling environment (a race; it was created or resolved immediately prior). - `recipient_not_allowlisted` — the application's `test_recipients` allowlist blocked the recipient. - `send_failed` — dispatch was attempted and failed with no more specific code. Not a closed set: a mail-provider error code may be surfaced verbatim, so treat an unrecognised value as a generic failure rather than an error.
|
|
27
|
+
attr_accessor :link_suppressed_reason
|
|
28
|
+
|
|
26
29
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
27
30
|
def self.attribute_map
|
|
28
31
|
{
|
|
29
32
|
:'user_id' => :'user_id',
|
|
30
33
|
:'created' => :'created',
|
|
31
|
-
:'link_sent' => :'link_sent'
|
|
34
|
+
:'link_sent' => :'link_sent',
|
|
35
|
+
:'link_suppressed_reason' => :'link_suppressed_reason'
|
|
32
36
|
}
|
|
33
37
|
end
|
|
34
38
|
|
|
@@ -47,7 +51,8 @@ module Zyphr
|
|
|
47
51
|
{
|
|
48
52
|
:'user_id' => :'String',
|
|
49
53
|
:'created' => :'Boolean',
|
|
50
|
-
:'link_sent' => :'Boolean'
|
|
54
|
+
:'link_sent' => :'Boolean',
|
|
55
|
+
:'link_suppressed_reason' => :'String'
|
|
51
56
|
}
|
|
52
57
|
end
|
|
53
58
|
|
|
@@ -84,6 +89,10 @@ module Zyphr
|
|
|
84
89
|
if attributes.key?(:'link_sent')
|
|
85
90
|
self.link_sent = attributes[:'link_sent']
|
|
86
91
|
end
|
|
92
|
+
|
|
93
|
+
if attributes.key?(:'link_suppressed_reason')
|
|
94
|
+
self.link_suppressed_reason = attributes[:'link_suppressed_reason']
|
|
95
|
+
end
|
|
87
96
|
end
|
|
88
97
|
|
|
89
98
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -108,7 +117,8 @@ module Zyphr
|
|
|
108
117
|
self.class == o.class &&
|
|
109
118
|
user_id == o.user_id &&
|
|
110
119
|
created == o.created &&
|
|
111
|
-
link_sent == o.link_sent
|
|
120
|
+
link_sent == o.link_sent &&
|
|
121
|
+
link_suppressed_reason == o.link_suppressed_reason
|
|
112
122
|
end
|
|
113
123
|
|
|
114
124
|
# @see the `==` method
|
|
@@ -120,7 +130,7 @@ module Zyphr
|
|
|
120
130
|
# Calculates hash code according to all attributes.
|
|
121
131
|
# @return [Integer] Hash code
|
|
122
132
|
def hash
|
|
123
|
-
[user_id, created, link_sent].hash
|
|
133
|
+
[user_id, created, link_sent, link_suppressed_reason].hash
|
|
124
134
|
end
|
|
125
135
|
|
|
126
136
|
# Builds the object from hash
|
|
@@ -34,7 +34,7 @@ describe 'AuthPasswordResetApi' do
|
|
|
34
34
|
|
|
35
35
|
# unit tests for forgot_password
|
|
36
36
|
# Request a password reset
|
|
37
|
-
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration.
|
|
37
|
+
# Request a password reset email. Creates a reset token and sends an email to the user. Always returns success to prevent email enumeration — the response is identical whether or not the address is registered. An identity with **no password set** still receives a link, which sets a first password. This covers users migrated from a provider that cannot export password hashes. The one case where no email is sent (beyond an unknown address) is an identity that has no password but *does* have another way in — a linked OAuth provider and/or a passkey. Those users are not locked out, so no set-password link is sent; the attempt is recorded as a suppressed message visible via `GET /emails`.
|
|
38
38
|
# @param forgot_password_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [SuccessResult]
|
|
@@ -96,7 +96,7 @@ describe 'DevicesApi' do
|
|
|
96
96
|
|
|
97
97
|
# unit tests for register_device
|
|
98
98
|
# Register a device
|
|
99
|
-
# Register a device for push notifications.
|
|
99
|
+
# Register a device for push notifications. Registration is an upsert keyed on (project, token), so calling it on every app launch is safe and idempotent. Re-registering an existing token under a different `user_id` **reassigns** the device to that user — the previous association does not persist, so a push addressed to the old user will not reach this device. `user_id` is an opaque string you choose. It is stored verbatim with no foreign key, and `POST /v1/push` matches on exactly that value. No Subscriber record is created for you. Requires a secret API key, so call it from your backend and derive `user_id` from the authenticated session rather than the request body.
|
|
100
100
|
# @param register_device_request
|
|
101
101
|
# @param [Hash] opts the optional parameters
|
|
102
102
|
# @return [DeviceResponse]
|
|
@@ -45,4 +45,10 @@ describe Zyphr::InviteEndUser200ResponseData do
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
+
describe 'test attribute "link_suppressed_reason"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
48
54
|
end
|
data/zyphr.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zyphr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.57
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Zyphr
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-08-
|
|
11
|
+
date: 2026-08-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|