mailhub-sdk 0.1.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 (151) hide show
  1. checksums.yaml +7 -0
  2. data/.fern/metadata.json +11 -0
  3. data/.fernignore +3 -0
  4. data/.rubocop.yml +103 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/README.md +159 -0
  7. data/Rakefile +20 -0
  8. data/custom.gemspec.rb +18 -0
  9. data/lib/Mailhub/campaign/client.rb +730 -0
  10. data/lib/Mailhub/campaign/types/add_campaign_media_by_code_request.rb +13 -0
  11. data/lib/Mailhub/campaign/types/cancel_campaign_request.rb +11 -0
  12. data/lib/Mailhub/campaign/types/catch_up_campaign_request.rb +11 -0
  13. data/lib/Mailhub/campaign/types/create_campaign_by_code_request.rb +27 -0
  14. data/lib/Mailhub/campaign/types/delete_campaign_request.rb +11 -0
  15. data/lib/Mailhub/campaign/types/get_campaign_activity_request.rb +11 -0
  16. data/lib/Mailhub/campaign/types/get_campaign_analytics_request.rb +11 -0
  17. data/lib/Mailhub/campaign/types/get_campaign_link_stats_request.rb +11 -0
  18. data/lib/Mailhub/campaign/types/get_campaign_media_request.rb +11 -0
  19. data/lib/Mailhub/campaign/types/get_campaign_rendered_preview_by_code_request.rb +21 -0
  20. data/lib/Mailhub/campaign/types/get_campaign_request.rb +11 -0
  21. data/lib/Mailhub/campaign/types/get_campaigns_request.rb +19 -0
  22. data/lib/Mailhub/campaign/types/pause_campaign_request.rb +11 -0
  23. data/lib/Mailhub/campaign/types/preview_campaign_request.rb +11 -0
  24. data/lib/Mailhub/campaign/types/remove_campaign_media_request.rb +13 -0
  25. data/lib/Mailhub/campaign/types/schedule_campaign_request.rb +11 -0
  26. data/lib/Mailhub/campaign/types/send_campaign_request.rb +11 -0
  27. data/lib/Mailhub/campaign/types/test_campaign_by_code_request.rb +23 -0
  28. data/lib/Mailhub/campaign/types/update_campaign_by_code_request.rb +29 -0
  29. data/lib/Mailhub/client.rb +55 -0
  30. data/lib/Mailhub/contact/client.rb +385 -0
  31. data/lib/Mailhub/contact/types/block_contact_request.rb +11 -0
  32. data/lib/Mailhub/contact/types/block_contacts_by_guid_request.rb +11 -0
  33. data/lib/Mailhub/contact/types/create_contact_request.rb +15 -0
  34. data/lib/Mailhub/contact/types/delete_contact_request.rb +11 -0
  35. data/lib/Mailhub/contact/types/delete_contacts_by_guid_request.rb +11 -0
  36. data/lib/Mailhub/contact/types/get_contact_request.rb +11 -0
  37. data/lib/Mailhub/contact/types/get_contacts_request.rb +21 -0
  38. data/lib/Mailhub/contact/types/get_import_job_request.rb +11 -0
  39. data/lib/Mailhub/contact/types/import_contacts_request.rb +9 -0
  40. data/lib/Mailhub/contact/types/update_contact_request.rb +17 -0
  41. data/lib/Mailhub/custom_field/client.rb +188 -0
  42. data/lib/Mailhub/custom_field/types/create_custom_field_request.rb +15 -0
  43. data/lib/Mailhub/custom_field/types/delete_custom_field_request.rb +11 -0
  44. data/lib/Mailhub/custom_field/types/get_custom_field_request.rb +11 -0
  45. data/lib/Mailhub/custom_field/types/update_custom_field_request.rb +15 -0
  46. data/lib/Mailhub/errors/api_error.rb +8 -0
  47. data/lib/Mailhub/errors/client_error.rb +17 -0
  48. data/lib/Mailhub/errors/redirect_error.rb +8 -0
  49. data/lib/Mailhub/errors/response_error.rb +42 -0
  50. data/lib/Mailhub/errors/server_error.rb +11 -0
  51. data/lib/Mailhub/errors/timeout_error.rb +8 -0
  52. data/lib/Mailhub/internal/errors/constraint_error.rb +10 -0
  53. data/lib/Mailhub/internal/errors/type_error.rb +10 -0
  54. data/lib/Mailhub/internal/http/base_request.rb +51 -0
  55. data/lib/Mailhub/internal/http/raw_client.rb +248 -0
  56. data/lib/Mailhub/internal/iterators/cursor_item_iterator.rb +28 -0
  57. data/lib/Mailhub/internal/iterators/cursor_page_iterator.rb +63 -0
  58. data/lib/Mailhub/internal/iterators/item_iterator.rb +65 -0
  59. data/lib/Mailhub/internal/iterators/offset_item_iterator.rb +30 -0
  60. data/lib/Mailhub/internal/iterators/offset_page_iterator.rb +103 -0
  61. data/lib/Mailhub/internal/json/request.rb +41 -0
  62. data/lib/Mailhub/internal/json/serializable.rb +25 -0
  63. data/lib/Mailhub/internal/multipart/multipart_encoder.rb +141 -0
  64. data/lib/Mailhub/internal/multipart/multipart_form_data.rb +78 -0
  65. data/lib/Mailhub/internal/multipart/multipart_form_data_part.rb +51 -0
  66. data/lib/Mailhub/internal/multipart/multipart_request.rb +40 -0
  67. data/lib/Mailhub/internal/types/array.rb +47 -0
  68. data/lib/Mailhub/internal/types/boolean.rb +34 -0
  69. data/lib/Mailhub/internal/types/enum.rb +56 -0
  70. data/lib/Mailhub/internal/types/hash.rb +36 -0
  71. data/lib/Mailhub/internal/types/model/field.rb +38 -0
  72. data/lib/Mailhub/internal/types/model.rb +208 -0
  73. data/lib/Mailhub/internal/types/type.rb +35 -0
  74. data/lib/Mailhub/internal/types/union.rb +161 -0
  75. data/lib/Mailhub/internal/types/unknown.rb +15 -0
  76. data/lib/Mailhub/internal/types/utils.rb +116 -0
  77. data/lib/Mailhub/media/client.rb +241 -0
  78. data/lib/Mailhub/media/types/delete_media_request.rb +11 -0
  79. data/lib/Mailhub/media/types/download_media_request.rb +11 -0
  80. data/lib/Mailhub/media/types/get_media_request.rb +11 -0
  81. data/lib/Mailhub/media/types/get_medias_request.rb +19 -0
  82. data/lib/Mailhub/media/types/update_media_request.rb +13 -0
  83. data/lib/Mailhub/media/types/upload_media_request.rb +9 -0
  84. data/lib/Mailhub/message/client.rb +201 -0
  85. data/lib/Mailhub/message/types/cancel_message_request.rb +11 -0
  86. data/lib/Mailhub/message/types/get_message_events_request.rb +11 -0
  87. data/lib/Mailhub/message/types/get_message_request.rb +11 -0
  88. data/lib/Mailhub/message/types/get_messages_request.rb +21 -0
  89. data/lib/Mailhub/message/types/send_message_request.rb +23 -0
  90. data/lib/Mailhub/segment/client.rb +377 -0
  91. data/lib/Mailhub/segment/types/create_segment_request.rb +13 -0
  92. data/lib/Mailhub/segment/types/delete_segment_request.rb +11 -0
  93. data/lib/Mailhub/segment/types/delete_segments_by_code_request.rb +13 -0
  94. data/lib/Mailhub/segment/types/get_segment_contacts_request.rb +15 -0
  95. data/lib/Mailhub/segment/types/get_segment_preview_request.rb +11 -0
  96. data/lib/Mailhub/segment/types/get_segment_request.rb +11 -0
  97. data/lib/Mailhub/segment/types/get_segments_request.rb +19 -0
  98. data/lib/Mailhub/segment/types/get_segments_union_preview_by_code_request.rb +11 -0
  99. data/lib/Mailhub/segment/types/sync_segment_request.rb +11 -0
  100. data/lib/Mailhub/segment/types/update_segment_request.rb +15 -0
  101. data/lib/Mailhub/template/client.rb +301 -0
  102. data/lib/Mailhub/template/types/create_template_request.rb +13 -0
  103. data/lib/Mailhub/template/types/delete_template_request.rb +11 -0
  104. data/lib/Mailhub/template/types/get_template_rendered_preview_request.rb +11 -0
  105. data/lib/Mailhub/template/types/get_template_request.rb +11 -0
  106. data/lib/Mailhub/template/types/get_templates_request.rb +19 -0
  107. data/lib/Mailhub/template/types/preview_template_request.rb +11 -0
  108. data/lib/Mailhub/template/types/update_template_request.rb +15 -0
  109. data/lib/Mailhub/types/api_error.rb +16 -0
  110. data/lib/Mailhub/types/api_error_detail.rb +12 -0
  111. data/lib/Mailhub/types/campaign_activity_point_model.rb +18 -0
  112. data/lib/Mailhub/types/campaign_analytics_model.rb +30 -0
  113. data/lib/Mailhub/types/campaign_link_stat_model.rb +14 -0
  114. data/lib/Mailhub/types/campaign_media_model.rb +24 -0
  115. data/lib/Mailhub/types/campaign_model.rb +52 -0
  116. data/lib/Mailhub/types/campaign_model_paged_result.rb +16 -0
  117. data/lib/Mailhub/types/campaign_segment_model.rb +14 -0
  118. data/lib/Mailhub/types/campaign_status.rb +17 -0
  119. data/lib/Mailhub/types/campaign_type.rb +12 -0
  120. data/lib/Mailhub/types/contact_import_job_model.rb +22 -0
  121. data/lib/Mailhub/types/contact_import_model.rb +10 -0
  122. data/lib/Mailhub/types/contact_import_status.rb +14 -0
  123. data/lib/Mailhub/types/contact_model.rb +26 -0
  124. data/lib/Mailhub/types/contact_model_cursor_paged_result.rb +18 -0
  125. data/lib/Mailhub/types/contact_model_paged_result.rb +16 -0
  126. data/lib/Mailhub/types/contact_segment_model.rb +14 -0
  127. data/lib/Mailhub/types/contact_status.rb +13 -0
  128. data/lib/Mailhub/types/custom_field_model.rb +20 -0
  129. data/lib/Mailhub/types/custom_field_type.rb +14 -0
  130. data/lib/Mailhub/types/import_contact_error_model.rb +12 -0
  131. data/lib/Mailhub/types/media_model.rb +28 -0
  132. data/lib/Mailhub/types/media_model_paged_result.rb +16 -0
  133. data/lib/Mailhub/types/message_event_model.rb +16 -0
  134. data/lib/Mailhub/types/message_event_type.rb +18 -0
  135. data/lib/Mailhub/types/message_model.rb +36 -0
  136. data/lib/Mailhub/types/message_model_cursor_paged_result.rb +18 -0
  137. data/lib/Mailhub/types/preview_segment_model.rb +10 -0
  138. data/lib/Mailhub/types/running_campaign_stats_model.rb +32 -0
  139. data/lib/Mailhub/types/segment_filter_group_model.rb +12 -0
  140. data/lib/Mailhub/types/segment_filter_model.rb +10 -0
  141. data/lib/Mailhub/types/segment_filter_rule_model.rb +14 -0
  142. data/lib/Mailhub/types/segment_model.rb +32 -0
  143. data/lib/Mailhub/types/segment_model_paged_result.rb +16 -0
  144. data/lib/Mailhub/types/segment_sync_status.rb +14 -0
  145. data/lib/Mailhub/types/template_expression_model.rb +14 -0
  146. data/lib/Mailhub/types/template_model.rb +20 -0
  147. data/lib/Mailhub/types/template_model_paged_result.rb +16 -0
  148. data/lib/Mailhub/version.rb +5 -0
  149. data/lib/Mailhub.rb +145 -0
  150. data/reference.md +3691 -0
  151. metadata +193 -0
@@ -0,0 +1,730 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Campaign
5
+ class Client
6
+ # @param client [Mailhub::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # @param request_options [Hash]
14
+ # @param params [Hash]
15
+ # @option request_options [String] :base_url
16
+ # @option request_options [Hash{String => Object}] :additional_headers
17
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
18
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
19
+ # @option request_options [Integer] :timeout_in_seconds
20
+ # @option params [String, nil] :search
21
+ # @option params [String, nil] :sort_by
22
+ # @option params [String, nil] :sort_direction
23
+ # @option params [Integer, nil] :page_size
24
+ # @option params [Integer, nil] :page_index
25
+ #
26
+ # @example
27
+ # client.campaign.get_campaigns
28
+ #
29
+ # @return [Mailhub::Types::CampaignModelPagedResult]
30
+ def get_campaigns(request_options: {}, **params)
31
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
32
+ query_params = {}
33
+ query_params["search"] = params[:search] if params.key?(:search)
34
+ query_params["sortBy"] = params[:sort_by] if params.key?(:sort_by)
35
+ query_params["sortDirection"] = params[:sort_direction] if params.key?(:sort_direction)
36
+ query_params["pageSize"] = params[:page_size] if params.key?(:page_size)
37
+ query_params["pageIndex"] = params[:page_index] if params.key?(:page_index)
38
+
39
+ request = Mailhub::Internal::JSON::Request.new(
40
+ base_url: request_options[:base_url],
41
+ method: "GET",
42
+ path: "v1/campaigns",
43
+ query: query_params,
44
+ request_options: request_options
45
+ )
46
+ begin
47
+ response = @client.send(request)
48
+ rescue Net::HTTPRequestTimeout
49
+ raise Mailhub::Errors::TimeoutError
50
+ end
51
+ code = response.code.to_i
52
+ if code.between?(200, 299)
53
+ Mailhub::Types::CampaignModelPagedResult.load(response.body)
54
+ else
55
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
56
+ raise error_class.new(response.body, code: code)
57
+ end
58
+ end
59
+
60
+ # @param request_options [Hash]
61
+ # @param params [Mailhub::Campaign::Types::CreateCampaignByCodeRequest]
62
+ # @option request_options [String] :base_url
63
+ # @option request_options [Hash{String => Object}] :additional_headers
64
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
65
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
66
+ # @option request_options [Integer] :timeout_in_seconds
67
+ #
68
+ # @example
69
+ # client.campaign.create_campaign
70
+ #
71
+ # @return [Mailhub::Types::CampaignModel]
72
+ def create_campaign(request_options: {}, **params)
73
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
74
+ request = Mailhub::Internal::JSON::Request.new(
75
+ base_url: request_options[:base_url],
76
+ method: "POST",
77
+ path: "v1/campaigns",
78
+ body: Mailhub::Campaign::Types::CreateCampaignByCodeRequest.new(params).to_h,
79
+ request_options: request_options
80
+ )
81
+ begin
82
+ response = @client.send(request)
83
+ rescue Net::HTTPRequestTimeout
84
+ raise Mailhub::Errors::TimeoutError
85
+ end
86
+ code = response.code.to_i
87
+ if code.between?(200, 299)
88
+ Mailhub::Types::CampaignModel.load(response.body)
89
+ else
90
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
91
+ raise error_class.new(response.body, code: code)
92
+ end
93
+ end
94
+
95
+ # @param request_options [Hash]
96
+ # @param params [Hash]
97
+ # @option request_options [String] :base_url
98
+ # @option request_options [Hash{String => Object}] :additional_headers
99
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
100
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
101
+ # @option request_options [Integer] :timeout_in_seconds
102
+ # @option params [String] :code
103
+ #
104
+ # @example
105
+ # client.campaign.get_campaign(code: "code")
106
+ #
107
+ # @return [Mailhub::Types::CampaignModel]
108
+ def get_campaign(request_options: {}, **params)
109
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
110
+ request = Mailhub::Internal::JSON::Request.new(
111
+ base_url: request_options[:base_url],
112
+ method: "GET",
113
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}",
114
+ request_options: request_options
115
+ )
116
+ begin
117
+ response = @client.send(request)
118
+ rescue Net::HTTPRequestTimeout
119
+ raise Mailhub::Errors::TimeoutError
120
+ end
121
+ code = response.code.to_i
122
+ if code.between?(200, 299)
123
+ Mailhub::Types::CampaignModel.load(response.body)
124
+ else
125
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
126
+ raise error_class.new(response.body, code: code)
127
+ end
128
+ end
129
+
130
+ # @param request_options [Hash]
131
+ # @param params [Mailhub::Campaign::Types::UpdateCampaignByCodeRequest]
132
+ # @option request_options [String] :base_url
133
+ # @option request_options [Hash{String => Object}] :additional_headers
134
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
135
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
136
+ # @option request_options [Integer] :timeout_in_seconds
137
+ # @option params [String] :code
138
+ #
139
+ # @example
140
+ # client.campaign.update_campaign(code: "code")
141
+ #
142
+ # @return [Mailhub::Types::CampaignModel]
143
+ def update_campaign(request_options: {}, **params)
144
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
145
+ request_data = Mailhub::Campaign::Types::UpdateCampaignByCodeRequest.new(params).to_h
146
+ non_body_param_names = %w[code]
147
+ body = request_data.except(*non_body_param_names)
148
+
149
+ request = Mailhub::Internal::JSON::Request.new(
150
+ base_url: request_options[:base_url],
151
+ method: "PUT",
152
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}",
153
+ body: body,
154
+ request_options: request_options
155
+ )
156
+ begin
157
+ response = @client.send(request)
158
+ rescue Net::HTTPRequestTimeout
159
+ raise Mailhub::Errors::TimeoutError
160
+ end
161
+ code = response.code.to_i
162
+ if code.between?(200, 299)
163
+ Mailhub::Types::CampaignModel.load(response.body)
164
+ else
165
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
166
+ raise error_class.new(response.body, code: code)
167
+ end
168
+ end
169
+
170
+ # @param request_options [Hash]
171
+ # @param params [Hash]
172
+ # @option request_options [String] :base_url
173
+ # @option request_options [Hash{String => Object}] :additional_headers
174
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
175
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
176
+ # @option request_options [Integer] :timeout_in_seconds
177
+ # @option params [String] :code
178
+ #
179
+ # @example
180
+ # client.campaign.delete_campaign(code: "code")
181
+ #
182
+ # @return [untyped]
183
+ def delete_campaign(request_options: {}, **params)
184
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
185
+ request = Mailhub::Internal::JSON::Request.new(
186
+ base_url: request_options[:base_url],
187
+ method: "DELETE",
188
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}",
189
+ request_options: request_options
190
+ )
191
+ begin
192
+ response = @client.send(request)
193
+ rescue Net::HTTPRequestTimeout
194
+ raise Mailhub::Errors::TimeoutError
195
+ end
196
+ code = response.code.to_i
197
+ return if code.between?(200, 299)
198
+
199
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
200
+ raise error_class.new(response.body, code: code)
201
+ end
202
+
203
+ # @param request_options [Hash]
204
+ # @param params [Hash]
205
+ # @option request_options [String] :base_url
206
+ # @option request_options [Hash{String => Object}] :additional_headers
207
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
208
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
209
+ # @option request_options [Integer] :timeout_in_seconds
210
+ # @option params [String] :code
211
+ #
212
+ # @example
213
+ # client.campaign.preview_campaign(code: "code")
214
+ #
215
+ # @return [String]
216
+ def preview_campaign(request_options: {}, **params)
217
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
218
+ request = Mailhub::Internal::JSON::Request.new(
219
+ base_url: request_options[:base_url],
220
+ method: "GET",
221
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/preview",
222
+ request_options: request_options
223
+ )
224
+ begin
225
+ response = @client.send(request)
226
+ rescue Net::HTTPRequestTimeout
227
+ raise Mailhub::Errors::TimeoutError
228
+ end
229
+ code = response.code.to_i
230
+ return if code.between?(200, 299)
231
+
232
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
233
+ raise error_class.new(response.body, code: code)
234
+ end
235
+
236
+ # @param request_options [Hash]
237
+ # @param params [Mailhub::Campaign::Types::GetCampaignRenderedPreviewByCodeRequest]
238
+ # @option request_options [String] :base_url
239
+ # @option request_options [Hash{String => Object}] :additional_headers
240
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
241
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
242
+ # @option request_options [Integer] :timeout_in_seconds
243
+ # @option params [String] :code
244
+ #
245
+ # @example
246
+ # client.campaign.render_campaign_preview(code: "code")
247
+ #
248
+ # @return [String]
249
+ def render_campaign_preview(request_options: {}, **params)
250
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
251
+ request_data = Mailhub::Campaign::Types::GetCampaignRenderedPreviewByCodeRequest.new(params).to_h
252
+ non_body_param_names = %w[code]
253
+ body = request_data.except(*non_body_param_names)
254
+
255
+ request = Mailhub::Internal::JSON::Request.new(
256
+ base_url: request_options[:base_url],
257
+ method: "POST",
258
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/preview",
259
+ body: body,
260
+ request_options: request_options
261
+ )
262
+ begin
263
+ response = @client.send(request)
264
+ rescue Net::HTTPRequestTimeout
265
+ raise Mailhub::Errors::TimeoutError
266
+ end
267
+ code = response.code.to_i
268
+ return if code.between?(200, 299)
269
+
270
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
271
+ raise error_class.new(response.body, code: code)
272
+ end
273
+
274
+ # @param request_options [Hash]
275
+ # @param params [Mailhub::Campaign::Types::TestCampaignByCodeRequest]
276
+ # @option request_options [String] :base_url
277
+ # @option request_options [Hash{String => Object}] :additional_headers
278
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
279
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
280
+ # @option request_options [Integer] :timeout_in_seconds
281
+ # @option params [String] :code
282
+ #
283
+ # @example
284
+ # client.campaign.test_campaign(code: "code")
285
+ #
286
+ # @return [Boolean]
287
+ def test_campaign(request_options: {}, **params)
288
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
289
+ request_data = Mailhub::Campaign::Types::TestCampaignByCodeRequest.new(params).to_h
290
+ non_body_param_names = %w[code]
291
+ body = request_data.except(*non_body_param_names)
292
+
293
+ request = Mailhub::Internal::JSON::Request.new(
294
+ base_url: request_options[:base_url],
295
+ method: "POST",
296
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/test",
297
+ body: body,
298
+ request_options: request_options
299
+ )
300
+ begin
301
+ response = @client.send(request)
302
+ rescue Net::HTTPRequestTimeout
303
+ raise Mailhub::Errors::TimeoutError
304
+ end
305
+ code = response.code.to_i
306
+ return if code.between?(200, 299)
307
+
308
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
309
+ raise error_class.new(response.body, code: code)
310
+ end
311
+
312
+ # @param request_options [Hash]
313
+ # @param _params [Hash]
314
+ # @option request_options [String] :base_url
315
+ # @option request_options [Hash{String => Object}] :additional_headers
316
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
317
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
318
+ # @option request_options [Integer] :timeout_in_seconds
319
+ #
320
+ # @example
321
+ # client.campaign.get_running_campaign_stats
322
+ #
323
+ # @return [Array[Mailhub::Types::RunningCampaignStatsModel]]
324
+ def get_running_campaign_stats(request_options: {}, **_params)
325
+ request = Mailhub::Internal::JSON::Request.new(
326
+ base_url: request_options[:base_url],
327
+ method: "GET",
328
+ path: "v1/campaigns/stats/running",
329
+ request_options: request_options
330
+ )
331
+ begin
332
+ response = @client.send(request)
333
+ rescue Net::HTTPRequestTimeout
334
+ raise Mailhub::Errors::TimeoutError
335
+ end
336
+ code = response.code.to_i
337
+ return if code.between?(200, 299)
338
+
339
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
340
+ raise error_class.new(response.body, code: code)
341
+ end
342
+
343
+ # @param request_options [Hash]
344
+ # @param params [Hash]
345
+ # @option request_options [String] :base_url
346
+ # @option request_options [Hash{String => Object}] :additional_headers
347
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
348
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
349
+ # @option request_options [Integer] :timeout_in_seconds
350
+ # @option params [String] :code
351
+ #
352
+ # @example
353
+ # client.campaign.get_campaign_analytics(code: "code")
354
+ #
355
+ # @return [Mailhub::Types::CampaignAnalyticsModel]
356
+ def get_campaign_analytics(request_options: {}, **params)
357
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
358
+ request = Mailhub::Internal::JSON::Request.new(
359
+ base_url: request_options[:base_url],
360
+ method: "GET",
361
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/analytics",
362
+ request_options: request_options
363
+ )
364
+ begin
365
+ response = @client.send(request)
366
+ rescue Net::HTTPRequestTimeout
367
+ raise Mailhub::Errors::TimeoutError
368
+ end
369
+ code = response.code.to_i
370
+ if code.between?(200, 299)
371
+ Mailhub::Types::CampaignAnalyticsModel.load(response.body)
372
+ else
373
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
374
+ raise error_class.new(response.body, code: code)
375
+ end
376
+ end
377
+
378
+ # @param request_options [Hash]
379
+ # @param params [Hash]
380
+ # @option request_options [String] :base_url
381
+ # @option request_options [Hash{String => Object}] :additional_headers
382
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
383
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
384
+ # @option request_options [Integer] :timeout_in_seconds
385
+ # @option params [String] :code
386
+ #
387
+ # @example
388
+ # client.campaign.get_campaign_activity(code: "code")
389
+ #
390
+ # @return [Array[Mailhub::Types::CampaignActivityPointModel]]
391
+ def get_campaign_activity(request_options: {}, **params)
392
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
393
+ request = Mailhub::Internal::JSON::Request.new(
394
+ base_url: request_options[:base_url],
395
+ method: "GET",
396
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/activity",
397
+ request_options: request_options
398
+ )
399
+ begin
400
+ response = @client.send(request)
401
+ rescue Net::HTTPRequestTimeout
402
+ raise Mailhub::Errors::TimeoutError
403
+ end
404
+ code = response.code.to_i
405
+ return if code.between?(200, 299)
406
+
407
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
408
+ raise error_class.new(response.body, code: code)
409
+ end
410
+
411
+ # @param request_options [Hash]
412
+ # @param params [Hash]
413
+ # @option request_options [String] :base_url
414
+ # @option request_options [Hash{String => Object}] :additional_headers
415
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
416
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
417
+ # @option request_options [Integer] :timeout_in_seconds
418
+ # @option params [String] :code
419
+ #
420
+ # @example
421
+ # client.campaign.get_campaign_link_stats(code: "code")
422
+ #
423
+ # @return [Array[Mailhub::Types::CampaignLinkStatModel]]
424
+ def get_campaign_link_stats(request_options: {}, **params)
425
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
426
+ request = Mailhub::Internal::JSON::Request.new(
427
+ base_url: request_options[:base_url],
428
+ method: "GET",
429
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/link-stats",
430
+ request_options: request_options
431
+ )
432
+ begin
433
+ response = @client.send(request)
434
+ rescue Net::HTTPRequestTimeout
435
+ raise Mailhub::Errors::TimeoutError
436
+ end
437
+ code = response.code.to_i
438
+ return if code.between?(200, 299)
439
+
440
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
441
+ raise error_class.new(response.body, code: code)
442
+ end
443
+
444
+ # @param request_options [Hash]
445
+ # @param params [Hash]
446
+ # @option request_options [String] :base_url
447
+ # @option request_options [Hash{String => Object}] :additional_headers
448
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
449
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
450
+ # @option request_options [Integer] :timeout_in_seconds
451
+ # @option params [String] :code
452
+ #
453
+ # @example
454
+ # client.campaign.get_campaign_media(code: "code")
455
+ #
456
+ # @return [Array[Mailhub::Types::CampaignMediaModel]]
457
+ def get_campaign_media(request_options: {}, **params)
458
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
459
+ request = Mailhub::Internal::JSON::Request.new(
460
+ base_url: request_options[:base_url],
461
+ method: "GET",
462
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/media",
463
+ request_options: request_options
464
+ )
465
+ begin
466
+ response = @client.send(request)
467
+ rescue Net::HTTPRequestTimeout
468
+ raise Mailhub::Errors::TimeoutError
469
+ end
470
+ code = response.code.to_i
471
+ return if code.between?(200, 299)
472
+
473
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
474
+ raise error_class.new(response.body, code: code)
475
+ end
476
+
477
+ # @param request_options [Hash]
478
+ # @param params [Mailhub::Campaign::Types::AddCampaignMediaByCodeRequest]
479
+ # @option request_options [String] :base_url
480
+ # @option request_options [Hash{String => Object}] :additional_headers
481
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
482
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
483
+ # @option request_options [Integer] :timeout_in_seconds
484
+ # @option params [String] :code
485
+ #
486
+ # @example
487
+ # client.campaign.add_campaign_media(code: "code")
488
+ #
489
+ # @return [Mailhub::Types::CampaignMediaModel]
490
+ def add_campaign_media(request_options: {}, **params)
491
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
492
+ request_data = Mailhub::Campaign::Types::AddCampaignMediaByCodeRequest.new(params).to_h
493
+ non_body_param_names = %w[code]
494
+ body = request_data.except(*non_body_param_names)
495
+
496
+ request = Mailhub::Internal::JSON::Request.new(
497
+ base_url: request_options[:base_url],
498
+ method: "POST",
499
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/media",
500
+ body: body,
501
+ request_options: request_options
502
+ )
503
+ begin
504
+ response = @client.send(request)
505
+ rescue Net::HTTPRequestTimeout
506
+ raise Mailhub::Errors::TimeoutError
507
+ end
508
+ code = response.code.to_i
509
+ if code.between?(200, 299)
510
+ Mailhub::Types::CampaignMediaModel.load(response.body)
511
+ else
512
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
513
+ raise error_class.new(response.body, code: code)
514
+ end
515
+ end
516
+
517
+ # @param request_options [Hash]
518
+ # @param params [Hash]
519
+ # @option request_options [String] :base_url
520
+ # @option request_options [Hash{String => Object}] :additional_headers
521
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
522
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
523
+ # @option request_options [Integer] :timeout_in_seconds
524
+ # @option params [String] :code
525
+ # @option params [String] :media_code
526
+ #
527
+ # @example
528
+ # client.campaign.remove_campaign_media(
529
+ # code: "code",
530
+ # media_code: "mediaCode"
531
+ # )
532
+ #
533
+ # @return [untyped]
534
+ def remove_campaign_media(request_options: {}, **params)
535
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
536
+ request = Mailhub::Internal::JSON::Request.new(
537
+ base_url: request_options[:base_url],
538
+ method: "DELETE",
539
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/media/#{URI.encode_uri_component(params[:media_code].to_s)}",
540
+ request_options: request_options
541
+ )
542
+ begin
543
+ response = @client.send(request)
544
+ rescue Net::HTTPRequestTimeout
545
+ raise Mailhub::Errors::TimeoutError
546
+ end
547
+ code = response.code.to_i
548
+ return if code.between?(200, 299)
549
+
550
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
551
+ raise error_class.new(response.body, code: code)
552
+ end
553
+
554
+ # @param request_options [Hash]
555
+ # @param params [Hash]
556
+ # @option request_options [String] :base_url
557
+ # @option request_options [Hash{String => Object}] :additional_headers
558
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
559
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
560
+ # @option request_options [Integer] :timeout_in_seconds
561
+ # @option params [String] :code
562
+ #
563
+ # @example
564
+ # client.campaign.schedule_campaign(code: "code")
565
+ #
566
+ # @return [Mailhub::Types::CampaignModel]
567
+ def schedule_campaign(request_options: {}, **params)
568
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
569
+ request = Mailhub::Internal::JSON::Request.new(
570
+ base_url: request_options[:base_url],
571
+ method: "PUT",
572
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/schedule",
573
+ request_options: request_options
574
+ )
575
+ begin
576
+ response = @client.send(request)
577
+ rescue Net::HTTPRequestTimeout
578
+ raise Mailhub::Errors::TimeoutError
579
+ end
580
+ code = response.code.to_i
581
+ if code.between?(200, 299)
582
+ Mailhub::Types::CampaignModel.load(response.body)
583
+ else
584
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
585
+ raise error_class.new(response.body, code: code)
586
+ end
587
+ end
588
+
589
+ # @param request_options [Hash]
590
+ # @param params [Hash]
591
+ # @option request_options [String] :base_url
592
+ # @option request_options [Hash{String => Object}] :additional_headers
593
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
594
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
595
+ # @option request_options [Integer] :timeout_in_seconds
596
+ # @option params [String] :code
597
+ #
598
+ # @example
599
+ # client.campaign.send_campaign(code: "code")
600
+ #
601
+ # @return [Mailhub::Types::CampaignModel]
602
+ def send_campaign(request_options: {}, **params)
603
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
604
+ request = Mailhub::Internal::JSON::Request.new(
605
+ base_url: request_options[:base_url],
606
+ method: "PUT",
607
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/send",
608
+ request_options: request_options
609
+ )
610
+ begin
611
+ response = @client.send(request)
612
+ rescue Net::HTTPRequestTimeout
613
+ raise Mailhub::Errors::TimeoutError
614
+ end
615
+ code = response.code.to_i
616
+ if code.between?(200, 299)
617
+ Mailhub::Types::CampaignModel.load(response.body)
618
+ else
619
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
620
+ raise error_class.new(response.body, code: code)
621
+ end
622
+ end
623
+
624
+ # @param request_options [Hash]
625
+ # @param params [Hash]
626
+ # @option request_options [String] :base_url
627
+ # @option request_options [Hash{String => Object}] :additional_headers
628
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
629
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
630
+ # @option request_options [Integer] :timeout_in_seconds
631
+ # @option params [String] :code
632
+ #
633
+ # @example
634
+ # client.campaign.pause_campaign(code: "code")
635
+ #
636
+ # @return [Mailhub::Types::CampaignModel]
637
+ def pause_campaign(request_options: {}, **params)
638
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
639
+ request = Mailhub::Internal::JSON::Request.new(
640
+ base_url: request_options[:base_url],
641
+ method: "PUT",
642
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/pause",
643
+ request_options: request_options
644
+ )
645
+ begin
646
+ response = @client.send(request)
647
+ rescue Net::HTTPRequestTimeout
648
+ raise Mailhub::Errors::TimeoutError
649
+ end
650
+ code = response.code.to_i
651
+ if code.between?(200, 299)
652
+ Mailhub::Types::CampaignModel.load(response.body)
653
+ else
654
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
655
+ raise error_class.new(response.body, code: code)
656
+ end
657
+ end
658
+
659
+ # @param request_options [Hash]
660
+ # @param params [Hash]
661
+ # @option request_options [String] :base_url
662
+ # @option request_options [Hash{String => Object}] :additional_headers
663
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
664
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
665
+ # @option request_options [Integer] :timeout_in_seconds
666
+ # @option params [String] :code
667
+ #
668
+ # @example
669
+ # client.campaign.cancel_campaign(code: "code")
670
+ #
671
+ # @return [Mailhub::Types::CampaignModel]
672
+ def cancel_campaign(request_options: {}, **params)
673
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
674
+ request = Mailhub::Internal::JSON::Request.new(
675
+ base_url: request_options[:base_url],
676
+ method: "PUT",
677
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/cancel",
678
+ request_options: request_options
679
+ )
680
+ begin
681
+ response = @client.send(request)
682
+ rescue Net::HTTPRequestTimeout
683
+ raise Mailhub::Errors::TimeoutError
684
+ end
685
+ code = response.code.to_i
686
+ if code.between?(200, 299)
687
+ Mailhub::Types::CampaignModel.load(response.body)
688
+ else
689
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
690
+ raise error_class.new(response.body, code: code)
691
+ end
692
+ end
693
+
694
+ # @param request_options [Hash]
695
+ # @param params [Hash]
696
+ # @option request_options [String] :base_url
697
+ # @option request_options [Hash{String => Object}] :additional_headers
698
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
699
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
700
+ # @option request_options [Integer] :timeout_in_seconds
701
+ # @option params [String] :code
702
+ #
703
+ # @example
704
+ # client.campaign.catch_up_campaign(code: "code")
705
+ #
706
+ # @return [Mailhub::Types::CampaignModel]
707
+ def catch_up_campaign(request_options: {}, **params)
708
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
709
+ request = Mailhub::Internal::JSON::Request.new(
710
+ base_url: request_options[:base_url],
711
+ method: "PUT",
712
+ path: "v1/campaigns/#{URI.encode_uri_component(params[:code].to_s)}/catch-up",
713
+ request_options: request_options
714
+ )
715
+ begin
716
+ response = @client.send(request)
717
+ rescue Net::HTTPRequestTimeout
718
+ raise Mailhub::Errors::TimeoutError
719
+ end
720
+ code = response.code.to_i
721
+ if code.between?(200, 299)
722
+ Mailhub::Types::CampaignModel.load(response.body)
723
+ else
724
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
725
+ raise error_class.new(response.body, code: code)
726
+ end
727
+ end
728
+ end
729
+ end
730
+ end