prelude-sdk 0.3.0 → 0.5.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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -0
  3. data/README.md +1 -1
  4. data/lib/prelude_sdk/client.rb +15 -1
  5. data/lib/prelude_sdk/internal/util.rb +22 -7
  6. data/lib/prelude_sdk/models/notify_send_batch_params.rb +38 -15
  7. data/lib/prelude_sdk/models/notify_send_params.rb +38 -15
  8. data/lib/prelude_sdk/models/transactional_send_params.rb +37 -15
  9. data/lib/prelude_sdk/models/verification_create_response.rb +60 -3
  10. data/lib/prelude_sdk/models/watch_send_events_params.rb +6 -2
  11. data/lib/prelude_sdk/models/watch_send_feedbacks_params.rb +6 -2
  12. data/lib/prelude_sdk/resources/notify.rb +4 -4
  13. data/lib/prelude_sdk/resources/transactional.rb +1 -1
  14. data/lib/prelude_sdk/resources/watch.rb +8 -2
  15. data/lib/prelude_sdk/version.rb +1 -1
  16. data/rbi/prelude_sdk/internal/util.rbi +8 -0
  17. data/rbi/prelude_sdk/models/notify_send_batch_params.rbi +55 -17
  18. data/rbi/prelude_sdk/models/notify_send_params.rbi +55 -17
  19. data/rbi/prelude_sdk/models/transactional_send_params.rbi +50 -17
  20. data/rbi/prelude_sdk/models/verification_create_response.rbi +169 -3
  21. data/rbi/prelude_sdk/models/watch_send_events_params.rbi +4 -2
  22. data/rbi/prelude_sdk/models/watch_send_feedbacks_params.rbi +4 -2
  23. data/rbi/prelude_sdk/resources/notify.rbi +22 -6
  24. data/rbi/prelude_sdk/resources/transactional.rbi +10 -2
  25. data/rbi/prelude_sdk/resources/watch.rbi +4 -2
  26. data/sig/prelude_sdk/internal/util.rbs +4 -0
  27. data/sig/prelude_sdk/models/notify_send_batch_params.rbs +9 -6
  28. data/sig/prelude_sdk/models/notify_send_params.rbs +9 -6
  29. data/sig/prelude_sdk/models/transactional_send_params.rbs +7 -5
  30. data/sig/prelude_sdk/models/verification_create_response.rbs +40 -1
  31. metadata +2 -2
@@ -114,8 +114,8 @@ module PreludeSDK
114
114
  )
115
115
  end
116
116
 
117
- # Send transactional and marketing messages to your users via SMS and WhatsApp
118
- # with automatic compliance enforcement.
117
+ # Send transactional and marketing messages to your users via SMS, RCS and
118
+ # WhatsApp with automatic compliance enforcement.
119
119
  sig do
120
120
  params(
121
121
  template_id: String,
@@ -144,8 +144,16 @@ module PreludeSDK
144
144
  # It is returned in the response and any webhook events that refer to this
145
145
  # message.
146
146
  correlation_id: nil,
147
- # A document to attach to the message. Only supported on WhatsApp templates that
148
- # have a document header.
147
+ # A media attachment to include in the message header. Supported on WhatsApp
148
+ # templates registered with a `DOCUMENT`, `IMAGE`, or `VIDEO` header. The media
149
+ # type is determined by the template's registered header format; send the matching
150
+ # file type for each.
151
+ #
152
+ # - `DOCUMENT` headers accept PDF and other document formats; `filename` is
153
+ # required and displayed to the recipient.
154
+ # - `IMAGE` headers accept `.png`, `.jpg`, `.jpeg`, and `.webp` URLs; `filename`
155
+ # is ignored.
156
+ # - `VIDEO` headers accept `.mp4` and `.3gp` URLs; `filename` is ignored.
149
157
  document: nil,
150
158
  # The message expiration date in RFC3339 format. The message will not be sent if
151
159
  # this time is reached.
@@ -197,8 +205,16 @@ module PreludeSDK
197
205
  callback_url: nil,
198
206
  # A user-defined identifier to correlate this request with your internal systems.
199
207
  correlation_id: nil,
200
- # A document to attach to the message. Only supported on WhatsApp templates that
201
- # have a document header.
208
+ # A media attachment to include in the message header. Supported on WhatsApp
209
+ # templates registered with a `DOCUMENT`, `IMAGE`, or `VIDEO` header. The media
210
+ # type is determined by the template's registered header format; send the matching
211
+ # file type for each.
212
+ #
213
+ # - `DOCUMENT` headers accept PDF and other document formats; `filename` is
214
+ # required and displayed to the recipient.
215
+ # - `IMAGE` headers accept `.png`, `.jpg`, `.jpeg`, and `.webp` URLs; `filename`
216
+ # is ignored.
217
+ # - `VIDEO` headers accept `.mp4` and `.3gp` URLs; `filename` is ignored.
202
218
  document: nil,
203
219
  # The message expiration date in RFC3339 format. Messages will not be sent after
204
220
  # this time.
@@ -33,8 +33,16 @@ module PreludeSDK
33
33
  # returned in the response and any webhook events that refer to this
34
34
  # transactionalmessage.
35
35
  correlation_id: nil,
36
- # A document to attach to the message. Only supported on WhatsApp templates that
37
- # have a document header.
36
+ # A media attachment to include in the message header. Supported on WhatsApp
37
+ # templates registered with a `DOCUMENT`, `IMAGE`, or `VIDEO` header. The media
38
+ # type is determined by the template's registered header format; send the matching
39
+ # file type for each.
40
+ #
41
+ # - `DOCUMENT` headers accept PDF and other document formats; `filename` is
42
+ # required and displayed to the recipient.
43
+ # - `IMAGE` headers accept `.png`, `.jpg`, `.jpeg`, and `.webp` URLs; `filename`
44
+ # is ignored.
45
+ # - `VIDEO` headers accept `.mp4` and `.3gp` URLs; `filename` is ignored.
38
46
  document: nil,
39
47
  # The message expiration date.
40
48
  expires_at: nil,
@@ -37,7 +37,8 @@ module PreludeSDK
37
37
  ).returns(PreludeSDK::Models::WatchSendEventsResponse)
38
38
  end
39
39
  def send_events(
40
- # A list of events to dispatch.
40
+ # A list of events to dispatch. A maximum of 100 events can be sent in a single
41
+ # request.
41
42
  events:,
42
43
  request_options: {}
43
44
  )
@@ -53,7 +54,8 @@ module PreludeSDK
53
54
  ).returns(PreludeSDK::Models::WatchSendFeedbacksResponse)
54
55
  end
55
56
  def send_feedbacks(
56
- # A list of feedbacks to send.
57
+ # A list of feedbacks to send. A maximum of 100 feedbacks can be sent in a single
58
+ # request.
57
59
  feedbacks:,
58
60
  request_options: {}
59
61
  )
@@ -45,8 +45,12 @@ module PreludeSDK
45
45
  -> top?
46
46
  } -> top?
47
47
 
48
+ RFC_3986_NOT_PCHARS: Regexp
49
+
48
50
  def self?.uri_origin: (URI::Generic uri) -> String
49
51
 
52
+ def self?.encode_path: (String | Integer path) -> String
53
+
50
54
  def self?.interpolate_path: (String | ::Array[String] path) -> String
51
55
 
52
56
  def self?.decode_query: (String? query) -> ::Hash[String, ::Array[String]]
@@ -94,24 +94,27 @@ module PreludeSDK
94
94
  request_options: PreludeSDK::RequestOptions
95
95
  }
96
96
 
97
- type document = { filename: String, url: String }
97
+ type document = { url: String, filename: String }
98
98
 
99
99
  class Document < PreludeSDK::Internal::Type::BaseModel
100
- attr_accessor filename: String
101
-
102
100
  attr_accessor url: String
103
101
 
104
- def initialize: (filename: String, url: String) -> void
102
+ attr_reader filename: String?
103
+
104
+ def filename=: (String) -> String
105
+
106
+ def initialize: (url: String, ?filename: String) -> void
105
107
 
106
- def to_hash: -> { filename: String, url: String }
108
+ def to_hash: -> { url: String, filename: String }
107
109
  end
108
110
 
109
- type preferred_channel = :sms | :whatsapp
111
+ type preferred_channel = :sms | :rcs | :whatsapp
110
112
 
111
113
  module PreferredChannel
112
114
  extend PreludeSDK::Internal::Type::Enum
113
115
 
114
116
  SMS: :sms
117
+ RCS: :rcs
115
118
  WHATSAPP: :whatsapp
116
119
 
117
120
  def self?.values: -> ::Array[PreludeSDK::Models::NotifySendBatchParams::preferred_channel]
@@ -94,24 +94,27 @@ module PreludeSDK
94
94
  request_options: PreludeSDK::RequestOptions
95
95
  }
96
96
 
97
- type document = { filename: String, url: String }
97
+ type document = { url: String, filename: String }
98
98
 
99
99
  class Document < PreludeSDK::Internal::Type::BaseModel
100
- attr_accessor filename: String
101
-
102
100
  attr_accessor url: String
103
101
 
104
- def initialize: (filename: String, url: String) -> void
102
+ attr_reader filename: String?
103
+
104
+ def filename=: (String) -> String
105
+
106
+ def initialize: (url: String, ?filename: String) -> void
105
107
 
106
- def to_hash: -> { filename: String, url: String }
108
+ def to_hash: -> { url: String, filename: String }
107
109
  end
108
110
 
109
- type preferred_channel = :sms | :whatsapp
111
+ type preferred_channel = :sms | :rcs | :whatsapp
110
112
 
111
113
  module PreferredChannel
112
114
  extend PreludeSDK::Internal::Type::Enum
113
115
 
114
116
  SMS: :sms
117
+ RCS: :rcs
115
118
  WHATSAPP: :whatsapp
116
119
 
117
120
  def self?.values: -> ::Array[PreludeSDK::Models::NotifySendParams::preferred_channel]
@@ -87,16 +87,18 @@ module PreludeSDK
87
87
  request_options: PreludeSDK::RequestOptions
88
88
  }
89
89
 
90
- type document = { filename: String, url: String }
90
+ type document = { url: String, filename: String }
91
91
 
92
92
  class Document < PreludeSDK::Internal::Type::BaseModel
93
- attr_accessor filename: String
94
-
95
93
  attr_accessor url: String
96
94
 
97
- def initialize: (filename: String, url: String) -> void
95
+ attr_reader filename: String?
96
+
97
+ def filename=: (String) -> String
98
+
99
+ def initialize: (url: String, ?filename: String) -> void
98
100
 
99
- def to_hash: -> { filename: String, url: String }
101
+ def to_hash: -> { url: String, filename: String }
100
102
  end
101
103
 
102
104
  type preferred_channel = :sms | :rcs | :whatsapp
@@ -9,6 +9,7 @@ module PreludeSDK
9
9
  metadata: PreludeSDK::Models::VerificationCreateResponse::Metadata,
10
10
  reason: PreludeSDK::Models::VerificationCreateResponse::reason,
11
11
  request_id: String,
12
+ risk_factors: ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor],
12
13
  silent: PreludeSDK::Models::VerificationCreateResponse::Silent
13
14
  }
14
15
 
@@ -41,6 +42,12 @@ module PreludeSDK
41
42
 
42
43
  def request_id=: (String) -> String
43
44
 
45
+ attr_reader risk_factors: ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor]?
46
+
47
+ def risk_factors=: (
48
+ ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor]
49
+ ) -> ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor]
50
+
44
51
  attr_reader silent: PreludeSDK::Models::VerificationCreateResponse::Silent?
45
52
 
46
53
  def silent=: (
@@ -55,6 +62,7 @@ module PreludeSDK
55
62
  ?metadata: PreludeSDK::Models::VerificationCreateResponse::Metadata,
56
63
  ?reason: PreludeSDK::Models::VerificationCreateResponse::reason,
57
64
  ?request_id: String,
65
+ ?risk_factors: ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor],
58
66
  ?silent: PreludeSDK::Models::VerificationCreateResponse::Silent
59
67
  ) -> void
60
68
 
@@ -66,6 +74,7 @@ module PreludeSDK
66
74
  metadata: PreludeSDK::Models::VerificationCreateResponse::Metadata,
67
75
  reason: PreludeSDK::Models::VerificationCreateResponse::reason,
68
76
  request_id: String,
77
+ risk_factors: ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor],
69
78
  silent: PreludeSDK::Models::VerificationCreateResponse::Silent
70
79
  }
71
80
 
@@ -82,7 +91,7 @@ module PreludeSDK
82
91
  def self?.values: -> ::Array[PreludeSDK::Models::VerificationCreateResponse::method_]
83
92
  end
84
93
 
85
- type status = :success | :retry | :challenged | :blocked
94
+ type status = :success | :retry | :challenged | :blocked | :shadow_blocked
86
95
 
87
96
  module Status
88
97
  extend PreludeSDK::Internal::Type::Enum
@@ -91,6 +100,7 @@ module PreludeSDK
91
100
  RETRY: :retry
92
101
  CHALLENGED: :challenged
93
102
  BLOCKED: :blocked
103
+ SHADOW_BLOCKED: :shadow_blocked
94
104
 
95
105
  def self?.values: -> ::Array[PreludeSDK::Models::VerificationCreateResponse::status]
96
106
  end
@@ -148,6 +158,35 @@ module PreludeSDK
148
158
  def self?.values: -> ::Array[PreludeSDK::Models::VerificationCreateResponse::reason]
149
159
  end
150
160
 
161
+ type risk_factor =
162
+ :behavioral_pattern
163
+ | :device_attribute
164
+ | :fraud_database
165
+ | :location_discrepancy
166
+ | :network_fingerprint
167
+ | :poor_conversion_history
168
+ | :prefix_concentration
169
+ | :suspected_request_tampering
170
+ | :suspicious_ip_address
171
+ | :temporary_phone_number
172
+
173
+ module RiskFactor
174
+ extend PreludeSDK::Internal::Type::Enum
175
+
176
+ BEHAVIORAL_PATTERN: :behavioral_pattern
177
+ DEVICE_ATTRIBUTE: :device_attribute
178
+ FRAUD_DATABASE: :fraud_database
179
+ LOCATION_DISCREPANCY: :location_discrepancy
180
+ NETWORK_FINGERPRINT: :network_fingerprint
181
+ POOR_CONVERSION_HISTORY: :poor_conversion_history
182
+ PREFIX_CONCENTRATION: :prefix_concentration
183
+ SUSPECTED_REQUEST_TAMPERING: :suspected_request_tampering
184
+ SUSPICIOUS_IP_ADDRESS: :suspicious_ip_address
185
+ TEMPORARY_PHONE_NUMBER: :temporary_phone_number
186
+
187
+ def self?.values: -> ::Array[PreludeSDK::Models::VerificationCreateResponse::risk_factor]
188
+ end
189
+
151
190
  type silent = { request_url: String }
152
191
 
153
192
  class Silent < PreludeSDK::Internal::Type::BaseModel
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.3.0
4
+ version: 0.5.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-03-23 00:00:00.000000000 Z
11
+ date: 2026-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi