prelude-sdk 0.5.0 → 0.6.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +1 -1
  4. data/lib/prelude_sdk/internal/transport/base_client.rb +5 -0
  5. data/lib/prelude_sdk/models/notify_send_batch_params.rb +13 -1
  6. data/lib/prelude_sdk/models/notify_send_params.rb +13 -1
  7. data/lib/prelude_sdk/models/transactional_send_params.rb +11 -1
  8. data/lib/prelude_sdk/models/verification_check_params.rb +44 -1
  9. data/lib/prelude_sdk/models/verification_check_response.rb +12 -3
  10. data/lib/prelude_sdk/models/verification_create_params.rb +82 -4
  11. data/lib/prelude_sdk/models/watch_predict_params.rb +3 -3
  12. data/lib/prelude_sdk/models/watch_send_events_params.rb +22 -3
  13. data/lib/prelude_sdk/resources/notify.rb +6 -2
  14. data/lib/prelude_sdk/resources/transactional.rb +3 -1
  15. data/lib/prelude_sdk/resources/verification.rb +3 -1
  16. data/lib/prelude_sdk/resources/watch.rb +19 -6
  17. data/lib/prelude_sdk/version.rb +1 -1
  18. data/rbi/prelude_sdk/models/notify_send_batch_params.rbi +19 -0
  19. data/rbi/prelude_sdk/models/notify_send_params.rbi +19 -0
  20. data/rbi/prelude_sdk/models/transactional_send_params.rbi +15 -0
  21. data/rbi/prelude_sdk/models/verification_check_params.rbi +68 -0
  22. data/rbi/prelude_sdk/models/verification_check_response.rbi +19 -3
  23. data/rbi/prelude_sdk/models/verification_create_params.rbi +184 -3
  24. data/rbi/prelude_sdk/models/watch_predict_params.rbi +3 -3
  25. data/rbi/prelude_sdk/models/watch_send_events_params.rbi +27 -3
  26. data/rbi/prelude_sdk/resources/notify.rbi +14 -0
  27. data/rbi/prelude_sdk/resources/transactional.rbi +5 -0
  28. data/rbi/prelude_sdk/resources/verification.rbi +6 -0
  29. data/rbi/prelude_sdk/resources/watch.rbi +19 -6
  30. data/sig/prelude_sdk/models/notify_send_batch_params.rbs +7 -0
  31. data/sig/prelude_sdk/models/notify_send_params.rbs +7 -0
  32. data/sig/prelude_sdk/models/transactional_send_params.rbs +7 -0
  33. data/sig/prelude_sdk/models/verification_check_params.rbs +31 -1
  34. data/sig/prelude_sdk/models/verification_check_response.rbs +8 -1
  35. data/sig/prelude_sdk/models/verification_create_params.rbs +38 -0
  36. data/sig/prelude_sdk/resources/notify.rbs +2 -0
  37. data/sig/prelude_sdk/resources/transactional.rbs +1 -0
  38. data/sig/prelude_sdk/resources/verification.rbs +1 -0
  39. metadata +2 -2
@@ -16,6 +16,7 @@ module PreludeSDK
16
16
  expires_at: String,
17
17
  from: String,
18
18
  locale: String,
19
+ max_auto_retries: Integer,
19
20
  preferred_channel:
20
21
  PreludeSDK::TransactionalSendParams::PreferredChannel::OrSymbol,
21
22
  variables: T::Hash[Symbol, String],
@@ -53,6 +54,10 @@ module PreludeSDK
53
54
  # code of the phone number. If the language specified doesn't exist, the default
54
55
  # set on the template will be used.
55
56
  locale: nil,
57
+ # Maximum number of automatic retry attempts across channels for this send, in
58
+ # addition to the first attempt. For example, `2` allows up to 3 total delivery
59
+ # attempts. When omitted, your account's configured default applies.
60
+ max_auto_retries: nil,
56
61
  # The preferred delivery channel for the message. When specified, the system will
57
62
  # prioritize sending via the requested channel if the template is configured for
58
63
  # it.
@@ -40,6 +40,7 @@ module PreludeSDK
40
40
  params(
41
41
  code: String,
42
42
  target: PreludeSDK::VerificationCheckParams::Target::OrHash,
43
+ psd2: PreludeSDK::VerificationCheckParams::Psd2::OrHash,
43
44
  request_options: PreludeSDK::RequestOptions::OrHash
44
45
  ).returns(PreludeSDK::Models::VerificationCheckResponse)
45
46
  end
@@ -49,6 +50,11 @@ module PreludeSDK
49
50
  # The verification target. Either a phone number or an email address. To use the
50
51
  # email verification feature contact us to discuss your use case.
51
52
  target:,
53
+ # Required when checking a code issued under the `prelude:psd2` template. The
54
+ # submitted variables must match those provided at issuance; any mismatch
55
+ # invalidates the code (PSD2 SCA RTS Article 5 dynamic linking). Ignored on
56
+ # non-PSD2 verifications.
57
+ psd2: nil,
52
58
  request_options: {}
53
59
  )
54
60
  end
@@ -4,7 +4,12 @@ module PreludeSDK
4
4
  module Resources
5
5
  # Evaluate email addresses and phone numbers for trustworthiness.
6
6
  class Watch
7
- # Predict the outcome of a verification based on Prelude’s anti-fraud system.
7
+ # At signup, score the user's phone number or email address (target) as legitimate
8
+ # or suspicious. Scoring-only — does not update counters by itself. When using
9
+ # Feedback, call predict before verification.started on the same target (and
10
+ # correlation_id when used) so feedback can warm Watch auth-start counters. Use
11
+ # Events for product fraud labels; use Feedback only if you run your own phone
12
+ # verification funnel outside Prelude Verify.
8
13
  sig do
9
14
  params(
10
15
  target: PreludeSDK::WatchPredictParams::Target::OrHash,
@@ -15,7 +20,7 @@ module PreludeSDK
15
20
  ).returns(PreludeSDK::Models::WatchPredictResponse)
16
21
  end
17
22
  def predict(
18
- # The prediction target. Only supports phone numbers for now.
23
+ # The signup identifier to score — a phone number or email address.
19
24
  target:,
20
25
  # The identifier of the dispatch that came from the front-end SDK.
21
26
  dispatch_id: nil,
@@ -28,8 +33,11 @@ module PreludeSDK
28
33
  )
29
34
  end
30
35
 
31
- # Send real-time event data from end-user interactions within your application.
32
- # Events will be analyzed for proactive fraud prevention and risk scoring.
36
+ # Send custom fraud signals from your application (labels and confidence levels).
37
+ # Events capture product-specific risk patterns and are weighted when scoring
38
+ # traffic. Use without Predict or Feedback if you only need to report product-side
39
+ # abuse (for example account.banned). Feedback is a separate, optional endpoint
40
+ # for self-hosted phone verification funnels.
33
41
  sig do
34
42
  params(
35
43
  events: T::Array[PreludeSDK::WatchSendEventsParams::Event::OrHash],
@@ -44,8 +52,13 @@ module PreludeSDK
44
52
  )
45
53
  end
46
54
 
47
- # Send feedback regarding your end-users verification funnel. Events will be
48
- # analyzed for proactive fraud prevention and risk scoring.
55
+ # Optional. Report verification-funnel steps (verification.started,
56
+ # verification.completed) when you run phone verification outside Prelude Verify.
57
+ # Feeds Watch abuse-rate counters for your own flow. Call Predict on the same
58
+ # target before verification.started and reuse metadata.correlation_id so
59
+ # auth-start counters receive predict signals; without a linked predict, only
60
+ # attempt-rate counters update on started. Not required if you only use Events
61
+ # and/or Predict, or if Verify already handles verification for that traffic.
49
62
  sig do
50
63
  params(
51
64
  feedbacks:
@@ -10,6 +10,7 @@ module PreludeSDK
10
10
  expires_at: Time,
11
11
  from: String,
12
12
  locale: String,
13
+ max_auto_retries: Integer,
13
14
  preferred_channel: PreludeSDK::Models::NotifySendBatchParams::preferred_channel,
14
15
  schedule_at: Time,
15
16
  variables: ::Hash[Symbol, String]
@@ -50,6 +51,10 @@ module PreludeSDK
50
51
 
51
52
  def locale=: (String) -> String
52
53
 
54
+ attr_reader max_auto_retries: Integer?
55
+
56
+ def max_auto_retries=: (Integer) -> Integer
57
+
53
58
  attr_reader preferred_channel: PreludeSDK::Models::NotifySendBatchParams::preferred_channel?
54
59
 
55
60
  def preferred_channel=: (
@@ -73,6 +78,7 @@ module PreludeSDK
73
78
  ?expires_at: Time,
74
79
  ?from: String,
75
80
  ?locale: String,
81
+ ?max_auto_retries: Integer,
76
82
  ?preferred_channel: PreludeSDK::Models::NotifySendBatchParams::preferred_channel,
77
83
  ?schedule_at: Time,
78
84
  ?variables: ::Hash[Symbol, String],
@@ -88,6 +94,7 @@ module PreludeSDK
88
94
  expires_at: Time,
89
95
  from: String,
90
96
  locale: String,
97
+ max_auto_retries: Integer,
91
98
  preferred_channel: PreludeSDK::Models::NotifySendBatchParams::preferred_channel,
92
99
  schedule_at: Time,
93
100
  variables: ::Hash[Symbol, String],
@@ -10,6 +10,7 @@ module PreludeSDK
10
10
  expires_at: Time,
11
11
  from: String,
12
12
  locale: String,
13
+ max_auto_retries: Integer,
13
14
  preferred_channel: PreludeSDK::Models::NotifySendParams::preferred_channel,
14
15
  schedule_at: Time,
15
16
  variables: ::Hash[Symbol, String]
@@ -50,6 +51,10 @@ module PreludeSDK
50
51
 
51
52
  def locale=: (String) -> String
52
53
 
54
+ attr_reader max_auto_retries: Integer?
55
+
56
+ def max_auto_retries=: (Integer) -> Integer
57
+
53
58
  attr_reader preferred_channel: PreludeSDK::Models::NotifySendParams::preferred_channel?
54
59
 
55
60
  def preferred_channel=: (
@@ -73,6 +78,7 @@ module PreludeSDK
73
78
  ?expires_at: Time,
74
79
  ?from: String,
75
80
  ?locale: String,
81
+ ?max_auto_retries: Integer,
76
82
  ?preferred_channel: PreludeSDK::Models::NotifySendParams::preferred_channel,
77
83
  ?schedule_at: Time,
78
84
  ?variables: ::Hash[Symbol, String],
@@ -88,6 +94,7 @@ module PreludeSDK
88
94
  expires_at: Time,
89
95
  from: String,
90
96
  locale: String,
97
+ max_auto_retries: Integer,
91
98
  preferred_channel: PreludeSDK::Models::NotifySendParams::preferred_channel,
92
99
  schedule_at: Time,
93
100
  variables: ::Hash[Symbol, String],
@@ -10,6 +10,7 @@ module PreludeSDK
10
10
  expires_at: String,
11
11
  from: String,
12
12
  locale: String,
13
+ max_auto_retries: Integer,
13
14
  preferred_channel: PreludeSDK::Models::TransactionalSendParams::preferred_channel,
14
15
  variables: ::Hash[Symbol, String]
15
16
  }
@@ -49,6 +50,10 @@ module PreludeSDK
49
50
 
50
51
  def locale=: (String) -> String
51
52
 
53
+ attr_reader max_auto_retries: Integer?
54
+
55
+ def max_auto_retries=: (Integer) -> Integer
56
+
52
57
  attr_reader preferred_channel: PreludeSDK::Models::TransactionalSendParams::preferred_channel?
53
58
 
54
59
  def preferred_channel=: (
@@ -68,6 +73,7 @@ module PreludeSDK
68
73
  ?expires_at: String,
69
74
  ?from: String,
70
75
  ?locale: String,
76
+ ?max_auto_retries: Integer,
71
77
  ?preferred_channel: PreludeSDK::Models::TransactionalSendParams::preferred_channel,
72
78
  ?variables: ::Hash[Symbol, String],
73
79
  ?request_options: PreludeSDK::request_opts
@@ -82,6 +88,7 @@ module PreludeSDK
82
88
  expires_at: String,
83
89
  from: String,
84
90
  locale: String,
91
+ max_auto_retries: Integer,
85
92
  preferred_channel: PreludeSDK::Models::TransactionalSendParams::preferred_channel,
86
93
  variables: ::Hash[Symbol, String],
87
94
  request_options: PreludeSDK::RequestOptions
@@ -1,7 +1,11 @@
1
1
  module PreludeSDK
2
2
  module Models
3
3
  type verification_check_params =
4
- { code: String, target: PreludeSDK::VerificationCheckParams::Target }
4
+ {
5
+ code: String,
6
+ target: PreludeSDK::VerificationCheckParams::Target,
7
+ :psd2 => PreludeSDK::VerificationCheckParams::Psd2
8
+ }
5
9
  & PreludeSDK::Internal::Type::request_parameters
6
10
 
7
11
  class VerificationCheckParams < PreludeSDK::Internal::Type::BaseModel
@@ -12,15 +16,23 @@ module PreludeSDK
12
16
 
13
17
  attr_accessor target: PreludeSDK::VerificationCheckParams::Target
14
18
 
19
+ attr_reader psd2: PreludeSDK::VerificationCheckParams::Psd2?
20
+
21
+ def psd2=: (
22
+ PreludeSDK::VerificationCheckParams::Psd2
23
+ ) -> PreludeSDK::VerificationCheckParams::Psd2
24
+
15
25
  def initialize: (
16
26
  code: String,
17
27
  target: PreludeSDK::VerificationCheckParams::Target,
28
+ ?psd2: PreludeSDK::VerificationCheckParams::Psd2,
18
29
  ?request_options: PreludeSDK::request_opts
19
30
  ) -> void
20
31
 
21
32
  def to_hash: -> {
22
33
  code: String,
23
34
  target: PreludeSDK::VerificationCheckParams::Target,
35
+ :psd2 => PreludeSDK::VerificationCheckParams::Psd2,
24
36
  request_options: PreludeSDK::RequestOptions
25
37
  }
26
38
 
@@ -56,6 +68,24 @@ module PreludeSDK
56
68
  def self?.values: -> ::Array[PreludeSDK::Models::VerificationCheckParams::Target::type_]
57
69
  end
58
70
  end
71
+
72
+ type psd2 = { amount: String, currency: String, recipient: String }
73
+
74
+ class Psd2 < PreludeSDK::Internal::Type::BaseModel
75
+ attr_accessor amount: String
76
+
77
+ attr_accessor currency: String
78
+
79
+ attr_accessor recipient: String
80
+
81
+ def initialize: (
82
+ amount: String,
83
+ currency: String,
84
+ recipient: String
85
+ ) -> void
86
+
87
+ def to_hash: -> { amount: String, currency: String, recipient: String }
88
+ end
59
89
  end
60
90
  end
61
91
  end
@@ -39,7 +39,12 @@ module PreludeSDK
39
39
  request_id: String
40
40
  }
41
41
 
42
- type status = :success | :failure | :expired_or_not_found
42
+ type status =
43
+ :success
44
+ | :failure
45
+ | :expired_or_not_found
46
+ | :transaction_missing
47
+ | :transaction_mismatch
43
48
 
44
49
  module Status
45
50
  extend PreludeSDK::Internal::Type::Enum
@@ -47,6 +52,8 @@ module PreludeSDK
47
52
  SUCCESS: :success
48
53
  FAILURE: :failure
49
54
  EXPIRED_OR_NOT_FOUND: :expired_or_not_found
55
+ TRANSACTION_MISSING: :transaction_missing
56
+ TRANSACTION_MISMATCH: :transaction_mismatch
50
57
 
51
58
  def self?.values: -> ::Array[PreludeSDK::Models::VerificationCheckResponse::status]
52
59
  end
@@ -105,9 +105,12 @@ module PreludeSDK
105
105
  {
106
106
  app_realm: PreludeSDK::VerificationCreateParams::Options::AppRealm,
107
107
  callback_url: String,
108
+ channels: ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel],
108
109
  code_size: Integer,
109
110
  custom_code: String,
111
+ force_challenge: bool,
110
112
  locale: String,
113
+ max_auto_fallbacks: Integer,
111
114
  verification_method: PreludeSDK::Models::VerificationCreateParams::Options::method_,
112
115
  preferred_channel: PreludeSDK::Models::VerificationCreateParams::Options::preferred_channel,
113
116
  sender_id: String,
@@ -126,6 +129,12 @@ module PreludeSDK
126
129
 
127
130
  def callback_url=: (String) -> String
128
131
 
132
+ attr_reader channels: ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel]?
133
+
134
+ def channels=: (
135
+ ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel]
136
+ ) -> ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel]
137
+
129
138
  attr_reader code_size: Integer?
130
139
 
131
140
  def code_size=: (Integer) -> Integer
@@ -134,10 +143,18 @@ module PreludeSDK
134
143
 
135
144
  def custom_code=: (String) -> String
136
145
 
146
+ attr_reader force_challenge: bool?
147
+
148
+ def force_challenge=: (bool) -> bool
149
+
137
150
  attr_reader locale: String?
138
151
 
139
152
  def locale=: (String) -> String
140
153
 
154
+ attr_reader max_auto_fallbacks: Integer?
155
+
156
+ def max_auto_fallbacks=: (Integer) -> Integer
157
+
141
158
  attr_reader verification_method: PreludeSDK::Models::VerificationCreateParams::Options::method_?
142
159
 
143
160
  def verification_method=: (
@@ -165,9 +182,12 @@ module PreludeSDK
165
182
  def initialize: (
166
183
  ?app_realm: PreludeSDK::VerificationCreateParams::Options::AppRealm,
167
184
  ?callback_url: String,
185
+ ?channels: ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel],
168
186
  ?code_size: Integer,
169
187
  ?custom_code: String,
188
+ ?force_challenge: bool,
170
189
  ?locale: String,
190
+ ?max_auto_fallbacks: Integer,
171
191
  ?verification_method: PreludeSDK::Models::VerificationCreateParams::Options::method_,
172
192
  ?preferred_channel: PreludeSDK::Models::VerificationCreateParams::Options::preferred_channel,
173
193
  ?sender_id: String,
@@ -178,9 +198,12 @@ module PreludeSDK
178
198
  def to_hash: -> {
179
199
  app_realm: PreludeSDK::VerificationCreateParams::Options::AppRealm,
180
200
  callback_url: String,
201
+ channels: ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel],
181
202
  code_size: Integer,
182
203
  custom_code: String,
204
+ force_challenge: bool,
183
205
  locale: String,
206
+ max_auto_fallbacks: Integer,
184
207
  verification_method: PreludeSDK::Models::VerificationCreateParams::Options::method_,
185
208
  preferred_channel: PreludeSDK::Models::VerificationCreateParams::Options::preferred_channel,
186
209
  sender_id: String,
@@ -221,6 +244,21 @@ module PreludeSDK
221
244
  end
222
245
  end
223
246
 
247
+ type channel = :sms | :rcs | :whatsapp | :viber | :zalo | :telegram
248
+
249
+ module Channel
250
+ extend PreludeSDK::Internal::Type::Enum
251
+
252
+ SMS: :sms
253
+ RCS: :rcs
254
+ WHATSAPP: :whatsapp
255
+ VIBER: :viber
256
+ ZALO: :zalo
257
+ TELEGRAM: :telegram
258
+
259
+ def self?.values: -> ::Array[PreludeSDK::Models::VerificationCreateParams::Options::channel]
260
+ end
261
+
224
262
  type method_ = :auto | :voice | :message
225
263
 
226
264
  module Method
@@ -43,6 +43,7 @@ module PreludeSDK
43
43
  ?expires_at: Time,
44
44
  ?from: String,
45
45
  ?locale: String,
46
+ ?max_auto_retries: Integer,
46
47
  ?preferred_channel: PreludeSDK::Models::NotifySendParams::preferred_channel,
47
48
  ?schedule_at: Time,
48
49
  ?variables: ::Hash[Symbol, String],
@@ -58,6 +59,7 @@ module PreludeSDK
58
59
  ?expires_at: Time,
59
60
  ?from: String,
60
61
  ?locale: String,
62
+ ?max_auto_retries: Integer,
61
63
  ?preferred_channel: PreludeSDK::Models::NotifySendBatchParams::preferred_channel,
62
64
  ?schedule_at: Time,
63
65
  ?variables: ::Hash[Symbol, String],
@@ -10,6 +10,7 @@ module PreludeSDK
10
10
  ?expires_at: String,
11
11
  ?from: String,
12
12
  ?locale: String,
13
+ ?max_auto_retries: Integer,
13
14
  ?preferred_channel: PreludeSDK::Models::TransactionalSendParams::preferred_channel,
14
15
  ?variables: ::Hash[Symbol, String],
15
16
  ?request_options: PreludeSDK::request_opts
@@ -13,6 +13,7 @@ module PreludeSDK
13
13
  def check: (
14
14
  code: String,
15
15
  target: PreludeSDK::VerificationCheckParams::Target,
16
+ ?psd2: PreludeSDK::VerificationCheckParams::Psd2,
16
17
  ?request_options: PreludeSDK::request_opts
17
18
  ) -> PreludeSDK::Models::VerificationCheckResponse
18
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prelude-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Prelude
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-07 00:00:00.000000000 Z
11
+ date: 2026-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi