prelude-sdk 0.1.0.pre.alpha.3 → 0.2.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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +58 -0
  3. data/README.md +29 -1
  4. data/lib/prelude_sdk/client.rb +8 -0
  5. data/lib/prelude_sdk/errors.rb +25 -11
  6. data/lib/prelude_sdk/file_part.rb +10 -7
  7. data/lib/prelude_sdk/internal/transport/base_client.rb +18 -8
  8. data/lib/prelude_sdk/internal/transport/pooled_net_requester.rb +40 -33
  9. data/lib/prelude_sdk/internal/type/base_page.rb +1 -1
  10. data/lib/prelude_sdk/internal/type/file_input.rb +7 -4
  11. data/lib/prelude_sdk/internal/util.rb +8 -7
  12. data/lib/prelude_sdk/models/notify_get_subscription_config_params.rb +14 -0
  13. data/lib/prelude_sdk/models/notify_get_subscription_config_response.rb +120 -0
  14. data/lib/prelude_sdk/models/notify_get_subscription_phone_number_params.rb +20 -0
  15. data/lib/prelude_sdk/models/notify_get_subscription_phone_number_response.rb +104 -0
  16. data/lib/prelude_sdk/models/notify_list_subscription_configs_params.rb +30 -0
  17. data/lib/prelude_sdk/models/notify_list_subscription_configs_response.rb +144 -0
  18. data/lib/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rb +37 -0
  19. data/lib/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rb +132 -0
  20. data/lib/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rb +49 -0
  21. data/lib/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rb +132 -0
  22. data/lib/prelude_sdk/models/notify_send_batch_params.rb +110 -0
  23. data/lib/prelude_sdk/models/notify_send_batch_response.rb +201 -0
  24. data/lib/prelude_sdk/models/notify_send_params.rb +118 -0
  25. data/lib/prelude_sdk/models/notify_send_response.rb +94 -0
  26. data/lib/prelude_sdk/models/transactional_send_params.rb +37 -1
  27. data/lib/prelude_sdk/models/verification_create_params.rb +45 -5
  28. data/lib/prelude_sdk/models/verification_create_response.rb +26 -0
  29. data/lib/prelude_sdk/models/verification_management_delete_phone_number_params.rb +32 -0
  30. data/lib/prelude_sdk/models/verification_management_delete_phone_number_response.rb +17 -0
  31. data/lib/prelude_sdk/models/verification_management_list_phone_numbers_params.rb +24 -0
  32. data/lib/prelude_sdk/models/verification_management_list_phone_numbers_response.rb +37 -0
  33. data/lib/prelude_sdk/models/verification_management_list_sender_ids_params.rb +14 -0
  34. data/lib/prelude_sdk/models/verification_management_list_sender_ids_response.rb +65 -0
  35. data/lib/prelude_sdk/models/verification_management_set_phone_number_params.rb +32 -0
  36. data/lib/prelude_sdk/models/verification_management_set_phone_number_response.rb +17 -0
  37. data/lib/prelude_sdk/models/verification_management_submit_sender_id_params.rb +22 -0
  38. data/lib/prelude_sdk/models/verification_management_submit_sender_id_response.rb +59 -0
  39. data/lib/prelude_sdk/models/watch_predict_params.rb +11 -1
  40. data/lib/prelude_sdk/models/watch_send_feedbacks_params.rb +11 -1
  41. data/lib/prelude_sdk/models.rb +29 -0
  42. data/lib/prelude_sdk/resources/notify.rb +247 -0
  43. data/lib/prelude_sdk/resources/transactional.rb +7 -2
  44. data/lib/prelude_sdk/resources/verification_management.rb +140 -0
  45. data/lib/prelude_sdk/version.rb +1 -1
  46. data/lib/prelude_sdk.rb +28 -0
  47. data/manifest.yaml +2 -0
  48. data/rbi/prelude_sdk/client.rbi +6 -0
  49. data/rbi/prelude_sdk/errors.rbi +29 -2
  50. data/rbi/prelude_sdk/file_part.rbi +1 -1
  51. data/rbi/prelude_sdk/internal/transport/base_client.rbi +9 -5
  52. data/rbi/prelude_sdk/internal/transport/pooled_net_requester.rbi +6 -2
  53. data/rbi/prelude_sdk/internal/type/base_model.rbi +8 -4
  54. data/rbi/prelude_sdk/internal/type/base_page.rbi +1 -1
  55. data/rbi/prelude_sdk/internal/util.rbi +1 -1
  56. data/rbi/prelude_sdk/models/notify_get_subscription_config_params.rbi +30 -0
  57. data/rbi/prelude_sdk/models/notify_get_subscription_config_response.rbi +224 -0
  58. data/rbi/prelude_sdk/models/notify_get_subscription_phone_number_params.rbi +38 -0
  59. data/rbi/prelude_sdk/models/notify_get_subscription_phone_number_response.rbi +199 -0
  60. data/rbi/prelude_sdk/models/notify_list_subscription_configs_params.rbi +60 -0
  61. data/rbi/prelude_sdk/models/notify_list_subscription_configs_response.rbi +286 -0
  62. data/rbi/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rbi +66 -0
  63. data/rbi/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rbi +259 -0
  64. data/rbi/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rbi +119 -0
  65. data/rbi/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rbi +259 -0
  66. data/rbi/prelude_sdk/models/notify_send_batch_params.rbi +191 -0
  67. data/rbi/prelude_sdk/models/notify_send_batch_response.rbi +360 -0
  68. data/rbi/prelude_sdk/models/notify_send_params.rbi +201 -0
  69. data/rbi/prelude_sdk/models/notify_send_response.rbi +128 -0
  70. data/rbi/prelude_sdk/models/transactional_send_params.rbi +85 -0
  71. data/rbi/prelude_sdk/models/verification_create_params.rbi +97 -5
  72. data/rbi/prelude_sdk/models/verification_create_response.rbi +39 -0
  73. data/rbi/prelude_sdk/models/verification_management_delete_phone_number_params.rbi +77 -0
  74. data/rbi/prelude_sdk/models/verification_management_delete_phone_number_response.rbi +30 -0
  75. data/rbi/prelude_sdk/models/verification_management_list_phone_numbers_params.rbi +64 -0
  76. data/rbi/prelude_sdk/models/verification_management_list_phone_numbers_response.rbi +87 -0
  77. data/rbi/prelude_sdk/models/verification_management_list_sender_ids_params.rbi +30 -0
  78. data/rbi/prelude_sdk/models/verification_management_list_sender_ids_response.rbi +175 -0
  79. data/rbi/prelude_sdk/models/verification_management_set_phone_number_params.rbi +77 -0
  80. data/rbi/prelude_sdk/models/verification_management_set_phone_number_response.rbi +30 -0
  81. data/rbi/prelude_sdk/models/verification_management_submit_sender_id_params.rbi +43 -0
  82. data/rbi/prelude_sdk/models/verification_management_submit_sender_id_response.rbi +117 -0
  83. data/rbi/prelude_sdk/models/watch_predict_params.rbi +15 -0
  84. data/rbi/prelude_sdk/models/watch_send_feedbacks_params.rbi +15 -0
  85. data/rbi/prelude_sdk/models.rbi +34 -0
  86. data/rbi/prelude_sdk/resources/notify.rbi +218 -0
  87. data/rbi/prelude_sdk/resources/transactional.rbi +14 -1
  88. data/rbi/prelude_sdk/resources/verification_management.rbi +112 -0
  89. data/sig/prelude_sdk/client.rbs +4 -0
  90. data/sig/prelude_sdk/errors.rbs +7 -0
  91. data/sig/prelude_sdk/file_part.rbs +1 -1
  92. data/sig/prelude_sdk/internal/transport/base_client.rbs +2 -0
  93. data/sig/prelude_sdk/internal/transport/pooled_net_requester.rbs +4 -1
  94. data/sig/prelude_sdk/models/notify_get_subscription_config_params.rbs +15 -0
  95. data/sig/prelude_sdk/models/notify_get_subscription_config_response.rbs +95 -0
  96. data/sig/prelude_sdk/models/notify_get_subscription_phone_number_params.rbs +23 -0
  97. data/sig/prelude_sdk/models/notify_get_subscription_phone_number_response.rbs +71 -0
  98. data/sig/prelude_sdk/models/notify_list_subscription_configs_params.rbs +32 -0
  99. data/sig/prelude_sdk/models/notify_list_subscription_configs_response.rbs +119 -0
  100. data/sig/prelude_sdk/models/notify_list_subscription_phone_number_events_params.rbs +36 -0
  101. data/sig/prelude_sdk/models/notify_list_subscription_phone_number_events_response.rbs +95 -0
  102. data/sig/prelude_sdk/models/notify_list_subscription_phone_numbers_params.rbs +55 -0
  103. data/sig/prelude_sdk/models/notify_list_subscription_phone_numbers_response.rbs +95 -0
  104. data/sig/prelude_sdk/models/notify_send_batch_params.rbs +100 -0
  105. data/sig/prelude_sdk/models/notify_send_batch_response.rbs +187 -0
  106. data/sig/prelude_sdk/models/notify_send_params.rbs +100 -0
  107. data/sig/prelude_sdk/models/notify_send_response.rbs +73 -0
  108. data/sig/prelude_sdk/models/transactional_send_params.rbs +21 -0
  109. data/sig/prelude_sdk/models/verification_create_params.rbs +29 -1
  110. data/sig/prelude_sdk/models/verification_management_delete_phone_number_params.rbs +34 -0
  111. data/sig/prelude_sdk/models/verification_management_delete_phone_number_response.rbs +14 -0
  112. data/sig/prelude_sdk/models/verification_management_list_phone_numbers_params.rbs +26 -0
  113. data/sig/prelude_sdk/models/verification_management_list_phone_numbers_response.rbs +32 -0
  114. data/sig/prelude_sdk/models/verification_management_list_sender_ids_params.rbs +15 -0
  115. data/sig/prelude_sdk/models/verification_management_list_sender_ids_response.rbs +64 -0
  116. data/sig/prelude_sdk/models/verification_management_set_phone_number_params.rbs +34 -0
  117. data/sig/prelude_sdk/models/verification_management_set_phone_number_response.rbs +14 -0
  118. data/sig/prelude_sdk/models/verification_management_submit_sender_id_params.rbs +23 -0
  119. data/sig/prelude_sdk/models/verification_management_submit_sender_id_response.rbs +44 -0
  120. data/sig/prelude_sdk/models/watch_predict_params.rbs +7 -0
  121. data/sig/prelude_sdk/models/watch_send_feedbacks_params.rbs +7 -0
  122. data/sig/prelude_sdk/models.rbs +24 -0
  123. data/sig/prelude_sdk/resources/notify.rbs +68 -0
  124. data/sig/prelude_sdk/resources/transactional.rbs +1 -0
  125. data/sig/prelude_sdk/resources/verification_management.rbs +33 -0
  126. metadata +82 -4
@@ -0,0 +1,247 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class Notify
6
+ # Retrieve a specific subscription management configuration by its ID.
7
+ #
8
+ # @overload get_subscription_config(config_id, request_options: {})
9
+ #
10
+ # @param config_id [String] The subscription configuration ID
11
+ #
12
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
13
+ #
14
+ # @return [PreludeSDK::Models::NotifyGetSubscriptionConfigResponse]
15
+ #
16
+ # @see PreludeSDK::Models::NotifyGetSubscriptionConfigParams
17
+ def get_subscription_config(config_id, params = {})
18
+ @client.request(
19
+ method: :get,
20
+ path: ["v2/notify/management/subscriptions/%1$s", config_id],
21
+ model: PreludeSDK::Models::NotifyGetSubscriptionConfigResponse,
22
+ options: params[:request_options]
23
+ )
24
+ end
25
+
26
+ # Retrieve the current subscription status for a specific phone number within a
27
+ # subscription configuration.
28
+ #
29
+ # @overload get_subscription_phone_number(phone_number, config_id:, request_options: {})
30
+ #
31
+ # @param phone_number [String] The phone number in E.164 format (e.g., +33612345678)
32
+ #
33
+ # @param config_id [String] The subscription configuration ID
34
+ #
35
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
36
+ #
37
+ # @return [PreludeSDK::Models::NotifyGetSubscriptionPhoneNumberResponse]
38
+ #
39
+ # @see PreludeSDK::Models::NotifyGetSubscriptionPhoneNumberParams
40
+ def get_subscription_phone_number(phone_number, params)
41
+ parsed, options = PreludeSDK::NotifyGetSubscriptionPhoneNumberParams.dump_request(params)
42
+ config_id =
43
+ parsed.delete(:config_id) do
44
+ raise ArgumentError.new("missing required path argument #{_1}")
45
+ end
46
+ @client.request(
47
+ method: :get,
48
+ path: ["v2/notify/management/subscriptions/%1$s/phone_numbers/%2$s", config_id, phone_number],
49
+ model: PreludeSDK::Models::NotifyGetSubscriptionPhoneNumberResponse,
50
+ options: options
51
+ )
52
+ end
53
+
54
+ # Retrieve a paginated list of subscription management configurations for your
55
+ # account.
56
+ #
57
+ # Each configuration represents a subscription management setup with phone numbers
58
+ # for receiving opt-out/opt-in requests and a callback URL for webhook events.
59
+ #
60
+ # @overload list_subscription_configs(cursor: nil, limit: nil, request_options: {})
61
+ #
62
+ # @param cursor [String] Pagination cursor from the previous response
63
+ #
64
+ # @param limit [Integer] Maximum number of configurations to return per page
65
+ #
66
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
67
+ #
68
+ # @return [PreludeSDK::Models::NotifyListSubscriptionConfigsResponse]
69
+ #
70
+ # @see PreludeSDK::Models::NotifyListSubscriptionConfigsParams
71
+ def list_subscription_configs(params = {})
72
+ parsed, options = PreludeSDK::NotifyListSubscriptionConfigsParams.dump_request(params)
73
+ @client.request(
74
+ method: :get,
75
+ path: "v2/notify/management/subscriptions",
76
+ query: parsed,
77
+ model: PreludeSDK::Models::NotifyListSubscriptionConfigsResponse,
78
+ options: options
79
+ )
80
+ end
81
+
82
+ # Retrieve a paginated list of subscription events (status changes) for a specific
83
+ # phone number within a subscription configuration.
84
+ #
85
+ # Events are ordered by timestamp in descending order (most recent first).
86
+ #
87
+ # @overload list_subscription_phone_number_events(phone_number, config_id:, cursor: nil, limit: nil, request_options: {})
88
+ #
89
+ # @param phone_number [String] Path param: The phone number in E.164 format (e.g., +33612345678)
90
+ #
91
+ # @param config_id [String] Path param: The subscription configuration ID
92
+ #
93
+ # @param cursor [String] Query param: Pagination cursor from the previous response
94
+ #
95
+ # @param limit [Integer] Query param: Maximum number of events to return per page
96
+ #
97
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
98
+ #
99
+ # @return [PreludeSDK::Models::NotifyListSubscriptionPhoneNumberEventsResponse]
100
+ #
101
+ # @see PreludeSDK::Models::NotifyListSubscriptionPhoneNumberEventsParams
102
+ def list_subscription_phone_number_events(phone_number, params)
103
+ parsed, options = PreludeSDK::NotifyListSubscriptionPhoneNumberEventsParams.dump_request(params)
104
+ config_id =
105
+ parsed.delete(:config_id) do
106
+ raise ArgumentError.new("missing required path argument #{_1}")
107
+ end
108
+ @client.request(
109
+ method: :get,
110
+ path: [
111
+ "v2/notify/management/subscriptions/%1$s/phone_numbers/%2$s/events",
112
+ config_id,
113
+ phone_number
114
+ ],
115
+ query: parsed,
116
+ model: PreludeSDK::Models::NotifyListSubscriptionPhoneNumberEventsResponse,
117
+ options: options
118
+ )
119
+ end
120
+
121
+ # Retrieve a paginated list of phone numbers and their subscription statuses for a
122
+ # specific subscription configuration.
123
+ #
124
+ # You can optionally filter by subscription state (SUB or UNSUB).
125
+ #
126
+ # @overload list_subscription_phone_numbers(config_id, cursor: nil, limit: nil, state: nil, request_options: {})
127
+ #
128
+ # @param config_id [String] The subscription configuration ID
129
+ #
130
+ # @param cursor [String] Pagination cursor from the previous response
131
+ #
132
+ # @param limit [Integer] Maximum number of phone numbers to return per page
133
+ #
134
+ # @param state [Symbol, PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersParams::State] Filter by subscription state
135
+ #
136
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
137
+ #
138
+ # @return [PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse]
139
+ #
140
+ # @see PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersParams
141
+ def list_subscription_phone_numbers(config_id, params = {})
142
+ parsed, options = PreludeSDK::NotifyListSubscriptionPhoneNumbersParams.dump_request(params)
143
+ @client.request(
144
+ method: :get,
145
+ path: ["v2/notify/management/subscriptions/%1$s/phone_numbers", config_id],
146
+ query: parsed,
147
+ model: PreludeSDK::Models::NotifyListSubscriptionPhoneNumbersResponse,
148
+ options: options
149
+ )
150
+ end
151
+
152
+ # Some parameter documentations has been truncated, see
153
+ # {PreludeSDK::Models::NotifySendParams} for more details.
154
+ #
155
+ # Send transactional and marketing messages to your users via SMS and WhatsApp
156
+ # with automatic compliance enforcement.
157
+ #
158
+ # @overload send_(template_id:, to:, callback_url: nil, correlation_id: nil, expires_at: nil, from: nil, locale: nil, preferred_channel: nil, schedule_at: nil, variables: nil, request_options: {})
159
+ #
160
+ # @param template_id [String] The template identifier configured by your Customer Success team.
161
+ #
162
+ # @param to [String] The recipient's phone number in E.164 format.
163
+ #
164
+ # @param callback_url [String] The URL where webhooks will be sent for message delivery events.
165
+ #
166
+ # @param correlation_id [String] A user-defined identifier to correlate this message with your internal systems.
167
+ #
168
+ # @param expires_at [Time] The message expiration date in RFC3339 format. The message will not be sent if t
169
+ #
170
+ # @param from [String] The Sender ID. Must be approved for your account.
171
+ #
172
+ # @param locale [String] A BCP-47 formatted locale string with the language the text message will be sent
173
+ #
174
+ # @param preferred_channel [Symbol, PreludeSDK::Models::NotifySendParams::PreferredChannel] The preferred channel to be used in priority for message delivery. If the channe
175
+ #
176
+ # @param schedule_at [Time] Schedule the message for future delivery in RFC3339 format. Marketing messages c
177
+ #
178
+ # @param variables [Hash{Symbol=>String}] The variables to be replaced in the template.
179
+ #
180
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
181
+ #
182
+ # @return [PreludeSDK::Models::NotifySendResponse]
183
+ #
184
+ # @see PreludeSDK::Models::NotifySendParams
185
+ def send_(params)
186
+ parsed, options = PreludeSDK::NotifySendParams.dump_request(params)
187
+ @client.request(
188
+ method: :post,
189
+ path: "v2/notify",
190
+ body: parsed,
191
+ model: PreludeSDK::Models::NotifySendResponse,
192
+ options: options
193
+ )
194
+ end
195
+
196
+ # Some parameter documentations has been truncated, see
197
+ # {PreludeSDK::Models::NotifySendBatchParams} for more details.
198
+ #
199
+ # Send the same message to multiple recipients in a single request.
200
+ #
201
+ # @overload send_batch(template_id:, to:, callback_url: nil, correlation_id: nil, expires_at: nil, from: nil, locale: nil, preferred_channel: nil, schedule_at: nil, variables: nil, request_options: {})
202
+ #
203
+ # @param template_id [String] The template identifier configured by your Customer Success team.
204
+ #
205
+ # @param to [Array<String>] The list of recipients' phone numbers in E.164 format.
206
+ #
207
+ # @param callback_url [String] The URL where webhooks will be sent for delivery events.
208
+ #
209
+ # @param correlation_id [String] A user-defined identifier to correlate this request with your internal systems.
210
+ #
211
+ # @param expires_at [Time] The message expiration date in RFC3339 format. Messages will not be sent after t
212
+ #
213
+ # @param from [String] The Sender ID. Must be approved for your account.
214
+ #
215
+ # @param locale [String] A BCP-47 formatted locale string.
216
+ #
217
+ # @param preferred_channel [Symbol, PreludeSDK::Models::NotifySendBatchParams::PreferredChannel] Preferred channel for delivery. If unavailable, automatic fallback applies.
218
+ #
219
+ # @param schedule_at [Time] Schedule delivery in RFC3339 format. Marketing sends may be adjusted to comply w
220
+ #
221
+ # @param variables [Hash{Symbol=>String}] The variables to be replaced in the template.
222
+ #
223
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
224
+ #
225
+ # @return [PreludeSDK::Models::NotifySendBatchResponse]
226
+ #
227
+ # @see PreludeSDK::Models::NotifySendBatchParams
228
+ def send_batch(params)
229
+ parsed, options = PreludeSDK::NotifySendBatchParams.dump_request(params)
230
+ @client.request(
231
+ method: :post,
232
+ path: "v2/notify/batch",
233
+ body: parsed,
234
+ model: PreludeSDK::Models::NotifySendBatchResponse,
235
+ options: options
236
+ )
237
+ end
238
+
239
+ # @api private
240
+ #
241
+ # @param client [PreludeSDK::Client]
242
+ def initialize(client:)
243
+ @client = client
244
+ end
245
+ end
246
+ end
247
+ end
@@ -3,12 +3,15 @@
3
3
  module PreludeSDK
4
4
  module Resources
5
5
  class Transactional
6
+ # @deprecated
7
+ #
6
8
  # Some parameter documentations has been truncated, see
7
9
  # {PreludeSDK::Models::TransactionalSendParams} for more details.
8
10
  #
9
- # Send a transactional message to your user.
11
+ # Legacy route maintained for backward compatibility. Migrate to `/v2/notify`
12
+ # instead.
10
13
  #
11
- # @overload send_(template_id:, to:, callback_url: nil, correlation_id: nil, expires_at: nil, from: nil, locale: nil, variables: nil, request_options: {})
14
+ # @overload send_(template_id:, to:, callback_url: nil, correlation_id: nil, expires_at: nil, from: nil, locale: nil, preferred_channel: nil, variables: nil, request_options: {})
12
15
  #
13
16
  # @param template_id [String] The template identifier.
14
17
  #
@@ -24,6 +27,8 @@ module PreludeSDK
24
27
  #
25
28
  # @param locale [String] A BCP-47 formatted locale string with the language the text message will be sent
26
29
  #
30
+ # @param preferred_channel [Symbol, PreludeSDK::Models::TransactionalSendParams::PreferredChannel] The preferred delivery channel for the message. When specified, the system will
31
+ #
27
32
  # @param variables [Hash{Symbol=>String}] The variables to be replaced in the template.
28
33
  #
29
34
  # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class VerificationManagement
6
+ # Remove a phone number from the allow or block list.
7
+ #
8
+ # This operation is idempotent - re-deleting the same phone number will not result
9
+ # in errors. If the phone number does not exist in the specified list, the
10
+ # operation will succeed without making any changes.
11
+ #
12
+ # In order to get access to this endpoint, contact our support team.
13
+ #
14
+ # @overload delete_phone_number(action, phone_number:, request_options: {})
15
+ #
16
+ # @param action [Symbol, PreludeSDK::Models::VerificationManagementDeletePhoneNumberParams::Action] The action type - either "allow" or "block"
17
+ #
18
+ # @param phone_number [String] An E.164 formatted phone number to remove from the list.
19
+ #
20
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
21
+ #
22
+ # @return [PreludeSDK::Models::VerificationManagementDeletePhoneNumberResponse]
23
+ #
24
+ # @see PreludeSDK::Models::VerificationManagementDeletePhoneNumberParams
25
+ def delete_phone_number(action, params)
26
+ parsed, options = PreludeSDK::VerificationManagementDeletePhoneNumberParams.dump_request(params)
27
+ @client.request(
28
+ method: :delete,
29
+ path: ["v2/verification/management/phone-numbers/%1$s", action],
30
+ body: parsed,
31
+ model: PreludeSDK::Models::VerificationManagementDeletePhoneNumberResponse,
32
+ options: options
33
+ )
34
+ end
35
+
36
+ # Retrieve the list of phone numbers in the allow or block list.
37
+ #
38
+ # In order to get access to this endpoint, contact our support team.
39
+ #
40
+ # @overload list_phone_numbers(action, request_options: {})
41
+ #
42
+ # @param action [Symbol, PreludeSDK::Models::VerificationManagementListPhoneNumbersParams::Action] The action type - either "allow" or "block"
43
+ #
44
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
45
+ #
46
+ # @return [PreludeSDK::Models::VerificationManagementListPhoneNumbersResponse]
47
+ #
48
+ # @see PreludeSDK::Models::VerificationManagementListPhoneNumbersParams
49
+ def list_phone_numbers(action, params = {})
50
+ @client.request(
51
+ method: :get,
52
+ path: ["v2/verification/management/phone-numbers/%1$s", action],
53
+ model: PreludeSDK::Models::VerificationManagementListPhoneNumbersResponse,
54
+ options: params[:request_options]
55
+ )
56
+ end
57
+
58
+ # Retrieve sender IDs list.
59
+ #
60
+ # In order to get access to this endpoint, contact our support team.
61
+ #
62
+ # @overload list_sender_ids(request_options: {})
63
+ #
64
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
65
+ #
66
+ # @return [PreludeSDK::Models::VerificationManagementListSenderIDsResponse]
67
+ #
68
+ # @see PreludeSDK::Models::VerificationManagementListSenderIDsParams
69
+ def list_sender_ids(params = {})
70
+ @client.request(
71
+ method: :get,
72
+ path: "v2/verification/management/sender-id",
73
+ model: PreludeSDK::Models::VerificationManagementListSenderIDsResponse,
74
+ options: params[:request_options]
75
+ )
76
+ end
77
+
78
+ # Add a phone number to the allow or block list.
79
+ #
80
+ # This operation is idempotent - re-adding the same phone number will not result
81
+ # in duplicate entries or errors. If the phone number already exists in the
82
+ # specified list, the operation will succeed without making any changes.
83
+ #
84
+ # In order to get access to this endpoint, contact our support team.
85
+ #
86
+ # @overload set_phone_number(action, phone_number:, request_options: {})
87
+ #
88
+ # @param action [Symbol, PreludeSDK::Models::VerificationManagementSetPhoneNumberParams::Action] The action type - either "allow" or "block"
89
+ #
90
+ # @param phone_number [String] An E.164 formatted phone number to add to the list.
91
+ #
92
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
93
+ #
94
+ # @return [PreludeSDK::Models::VerificationManagementSetPhoneNumberResponse]
95
+ #
96
+ # @see PreludeSDK::Models::VerificationManagementSetPhoneNumberParams
97
+ def set_phone_number(action, params)
98
+ parsed, options = PreludeSDK::VerificationManagementSetPhoneNumberParams.dump_request(params)
99
+ @client.request(
100
+ method: :post,
101
+ path: ["v2/verification/management/phone-numbers/%1$s", action],
102
+ body: parsed,
103
+ model: PreludeSDK::Models::VerificationManagementSetPhoneNumberResponse,
104
+ options: options
105
+ )
106
+ end
107
+
108
+ # This endpoint allows you to submit a new sender ID for verification purposes.
109
+ #
110
+ # In order to get access to this endpoint, contact our support team.
111
+ #
112
+ # @overload submit_sender_id(sender_id:, request_options: {})
113
+ #
114
+ # @param sender_id [String] The sender ID to add.
115
+ #
116
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
117
+ #
118
+ # @return [PreludeSDK::Models::VerificationManagementSubmitSenderIDResponse]
119
+ #
120
+ # @see PreludeSDK::Models::VerificationManagementSubmitSenderIDParams
121
+ def submit_sender_id(params)
122
+ parsed, options = PreludeSDK::VerificationManagementSubmitSenderIDParams.dump_request(params)
123
+ @client.request(
124
+ method: :post,
125
+ path: "v2/verification/management/sender-id",
126
+ body: parsed,
127
+ model: PreludeSDK::Models::VerificationManagementSubmitSenderIDResponse,
128
+ options: options
129
+ )
130
+ end
131
+
132
+ # @api private
133
+ #
134
+ # @param client [PreludeSDK::Client]
135
+ def initialize(client:)
136
+ @client = client
137
+ end
138
+ end
139
+ end
140
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PreludeSDK
4
- VERSION = "0.1.0.pre.alpha.3"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/prelude_sdk.rb CHANGED
@@ -3,12 +3,14 @@
3
3
  # Standard libraries.
4
4
  # rubocop:disable Lint/RedundantRequireStatement
5
5
  require "English"
6
+ require "base64"
6
7
  require "cgi"
7
8
  require "date"
8
9
  require "erb"
9
10
  require "etc"
10
11
  require "json"
11
12
  require "net/http"
13
+ require "openssl"
12
14
  require "pathname"
13
15
  require "rbconfig"
14
16
  require "securerandom"
@@ -52,12 +54,36 @@ require_relative "prelude_sdk/internal/transport/pooled_net_requester"
52
54
  require_relative "prelude_sdk/client"
53
55
  require_relative "prelude_sdk/models/lookup_lookup_params"
54
56
  require_relative "prelude_sdk/models/lookup_lookup_response"
57
+ require_relative "prelude_sdk/models/notify_get_subscription_config_params"
58
+ require_relative "prelude_sdk/models/notify_get_subscription_config_response"
59
+ require_relative "prelude_sdk/models/notify_get_subscription_phone_number_params"
60
+ require_relative "prelude_sdk/models/notify_get_subscription_phone_number_response"
61
+ require_relative "prelude_sdk/models/notify_list_subscription_configs_params"
62
+ require_relative "prelude_sdk/models/notify_list_subscription_configs_response"
63
+ require_relative "prelude_sdk/models/notify_list_subscription_phone_number_events_params"
64
+ require_relative "prelude_sdk/models/notify_list_subscription_phone_number_events_response"
65
+ require_relative "prelude_sdk/models/notify_list_subscription_phone_numbers_params"
66
+ require_relative "prelude_sdk/models/notify_list_subscription_phone_numbers_response"
67
+ require_relative "prelude_sdk/models/notify_send_batch_params"
68
+ require_relative "prelude_sdk/models/notify_send_batch_response"
69
+ require_relative "prelude_sdk/models/notify_send_params"
70
+ require_relative "prelude_sdk/models/notify_send_response"
55
71
  require_relative "prelude_sdk/models/transactional_send_params"
56
72
  require_relative "prelude_sdk/models/transactional_send_response"
57
73
  require_relative "prelude_sdk/models/verification_check_params"
58
74
  require_relative "prelude_sdk/models/verification_check_response"
59
75
  require_relative "prelude_sdk/models/verification_create_params"
60
76
  require_relative "prelude_sdk/models/verification_create_response"
77
+ require_relative "prelude_sdk/models/verification_management_delete_phone_number_params"
78
+ require_relative "prelude_sdk/models/verification_management_delete_phone_number_response"
79
+ require_relative "prelude_sdk/models/verification_management_list_phone_numbers_params"
80
+ require_relative "prelude_sdk/models/verification_management_list_phone_numbers_response"
81
+ require_relative "prelude_sdk/models/verification_management_list_sender_ids_params"
82
+ require_relative "prelude_sdk/models/verification_management_list_sender_ids_response"
83
+ require_relative "prelude_sdk/models/verification_management_set_phone_number_params"
84
+ require_relative "prelude_sdk/models/verification_management_set_phone_number_response"
85
+ require_relative "prelude_sdk/models/verification_management_submit_sender_id_params"
86
+ require_relative "prelude_sdk/models/verification_management_submit_sender_id_response"
61
87
  require_relative "prelude_sdk/models/watch_predict_params"
62
88
  require_relative "prelude_sdk/models/watch_predict_response"
63
89
  require_relative "prelude_sdk/models/watch_send_events_params"
@@ -66,6 +92,8 @@ require_relative "prelude_sdk/models/watch_send_feedbacks_params"
66
92
  require_relative "prelude_sdk/models/watch_send_feedbacks_response"
67
93
  require_relative "prelude_sdk/models"
68
94
  require_relative "prelude_sdk/resources/lookup"
95
+ require_relative "prelude_sdk/resources/notify"
69
96
  require_relative "prelude_sdk/resources/transactional"
70
97
  require_relative "prelude_sdk/resources/verification"
98
+ require_relative "prelude_sdk/resources/verification_management"
71
99
  require_relative "prelude_sdk/resources/watch"
data/manifest.yaml CHANGED
@@ -1,11 +1,13 @@
1
1
  dependencies:
2
2
  - English
3
+ - base64
3
4
  - cgi
4
5
  - date
5
6
  - erb
6
7
  - etc
7
8
  - json
8
9
  - net/http
10
+ - openssl
9
11
  - pathname
10
12
  - rbconfig
11
13
  - securerandom
@@ -17,12 +17,18 @@ module PreludeSDK
17
17
  sig { returns(PreludeSDK::Resources::Lookup) }
18
18
  attr_reader :lookup
19
19
 
20
+ sig { returns(PreludeSDK::Resources::Notify) }
21
+ attr_reader :notify
22
+
20
23
  sig { returns(PreludeSDK::Resources::Transactional) }
21
24
  attr_reader :transactional
22
25
 
23
26
  sig { returns(PreludeSDK::Resources::Verification) }
24
27
  attr_reader :verification
25
28
 
29
+ sig { returns(PreludeSDK::Resources::VerificationManagement) }
30
+ attr_reader :verification_management
31
+
26
32
  sig { returns(PreludeSDK::Resources::Watch) }
27
33
  attr_reader :watch
28
34
 
@@ -33,6 +33,9 @@ module PreludeSDK
33
33
  sig { returns(T.nilable(Integer)) }
34
34
  attr_accessor :status
35
35
 
36
+ sig { returns(T.nilable(T::Hash[String, String])) }
37
+ attr_accessor :headers
38
+
36
39
  sig { returns(T.nilable(T.anything)) }
37
40
  attr_accessor :body
38
41
 
@@ -41,6 +44,7 @@ module PreludeSDK
41
44
  params(
42
45
  url: URI::Generic,
43
46
  status: T.nilable(Integer),
47
+ headers: T.nilable(T::Hash[String, String]),
44
48
  body: T.nilable(Object),
45
49
  request: NilClass,
46
50
  response: NilClass,
@@ -50,6 +54,7 @@ module PreludeSDK
50
54
  def self.new(
51
55
  url:,
52
56
  status: nil,
57
+ headers: nil,
53
58
  body: nil,
54
59
  request: nil,
55
60
  response: nil,
@@ -70,6 +75,7 @@ module PreludeSDK
70
75
  params(
71
76
  url: URI::Generic,
72
77
  status: NilClass,
78
+ headers: T.nilable(T::Hash[String, String]),
73
79
  body: NilClass,
74
80
  request: NilClass,
75
81
  response: NilClass,
@@ -79,6 +85,7 @@ module PreludeSDK
79
85
  def self.new(
80
86
  url:,
81
87
  status: nil,
88
+ headers: nil,
82
89
  body: nil,
83
90
  request: nil,
84
91
  response: nil,
@@ -93,6 +100,7 @@ module PreludeSDK
93
100
  params(
94
101
  url: URI::Generic,
95
102
  status: NilClass,
103
+ headers: T.nilable(T::Hash[String, String]),
96
104
  body: NilClass,
97
105
  request: NilClass,
98
106
  response: NilClass,
@@ -102,6 +110,7 @@ module PreludeSDK
102
110
  def self.new(
103
111
  url:,
104
112
  status: nil,
113
+ headers: nil,
105
114
  body: nil,
106
115
  request: nil,
107
116
  response: nil,
@@ -116,13 +125,22 @@ module PreludeSDK
116
125
  params(
117
126
  url: URI::Generic,
118
127
  status: Integer,
128
+ headers: T.nilable(T::Hash[String, String]),
119
129
  body: T.nilable(Object),
120
130
  request: NilClass,
121
131
  response: NilClass,
122
132
  message: T.nilable(String)
123
133
  ).returns(T.attached_class)
124
134
  end
125
- def self.for(url:, status:, body:, request:, response:, message: nil)
135
+ def self.for(
136
+ url:,
137
+ status:,
138
+ headers:,
139
+ body:,
140
+ request:,
141
+ response:,
142
+ message: nil
143
+ )
126
144
  end
127
145
 
128
146
  sig { returns(Integer) }
@@ -133,13 +151,22 @@ module PreludeSDK
133
151
  params(
134
152
  url: URI::Generic,
135
153
  status: Integer,
154
+ headers: T.nilable(T::Hash[String, String]),
136
155
  body: T.nilable(Object),
137
156
  request: NilClass,
138
157
  response: NilClass,
139
158
  message: T.nilable(String)
140
159
  ).returns(T.attached_class)
141
160
  end
142
- def self.new(url:, status:, body:, request:, response:, message: nil)
161
+ def self.new(
162
+ url:,
163
+ status:,
164
+ headers:,
165
+ body:,
166
+ request:,
167
+ response:,
168
+ message: nil
169
+ )
143
170
  end
144
171
  end
145
172
 
@@ -27,7 +27,7 @@ module PreludeSDK
27
27
  sig do
28
28
  params(
29
29
  content: T.any(Pathname, StringIO, IO, String),
30
- filename: T.nilable(String),
30
+ filename: T.nilable(T.any(Pathname, String)),
31
31
  content_type: T.nilable(String)
32
32
  ).returns(T.attached_class)
33
33
  end
@@ -85,10 +85,9 @@ module PreludeSDK
85
85
 
86
86
  # @api private
87
87
  sig do
88
- params(
89
- status: Integer,
90
- headers: T.any(T::Hash[String, String], Net::HTTPHeader)
91
- ).returns(T::Boolean)
88
+ params(status: Integer, headers: T::Hash[String, String]).returns(
89
+ T::Boolean
90
+ )
92
91
  end
93
92
  def should_retry?(status, headers:)
94
93
  end
@@ -99,7 +98,7 @@ module PreludeSDK
99
98
  request:
100
99
  PreludeSDK::Internal::Transport::BaseClient::RequestInput,
101
100
  status: Integer,
102
- response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
101
+ response_headers: T::Hash[String, String]
103
102
  ).returns(PreludeSDK::Internal::Transport::BaseClient::RequestInput)
104
103
  end
105
104
  def follow_redirect(request, status:, response_headers:)
@@ -179,6 +178,11 @@ module PreludeSDK
179
178
  private def auth_headers
180
179
  end
181
180
 
181
+ # @api private
182
+ sig { returns(String) }
183
+ private def user_agent
184
+ end
185
+
182
186
  # @api private
183
187
  sig { returns(String) }
184
188
  private def generate_idempotency_key
@@ -26,8 +26,12 @@ module PreludeSDK
26
26
 
27
27
  class << self
28
28
  # @api private
29
- sig { params(url: URI::Generic).returns(Net::HTTP) }
30
- def connect(url)
29
+ sig do
30
+ params(cert_store: OpenSSL::X509::Store, url: URI::Generic).returns(
31
+ Net::HTTP
32
+ )
33
+ end
34
+ def connect(cert_store:, url:)
31
35
  end
32
36
 
33
37
  # @api private