sendpost_ruby_sdk 1.2.2 → 2.0.2

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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +583 -145
  4. data/docs/AccountStats.md +20 -0
  5. data/docs/AccountStatsStat.md +38 -0
  6. data/docs/AggregateStat.md +38 -0
  7. data/docs/AggregateStats.md +38 -0
  8. data/docs/AggregatedEmailStats.md +38 -0
  9. data/docs/Attachment.md +4 -4
  10. data/docs/AutoWarmupPlan.md +80 -0
  11. data/docs/CopyTo.md +5 -5
  12. data/docs/CreateDomainRequest.md +18 -0
  13. data/docs/CreateSubAccountRequest.md +18 -0
  14. data/docs/CreateSuppressionRequest.md +24 -0
  15. data/docs/CreateSuppressionRequestHardBounceInner.md +18 -0
  16. data/docs/{SuppressionEmail.md → CreateSuppressionRequestManualInner.md} +3 -3
  17. data/docs/CreateSuppressionRequestSpamComplaintInner.md +18 -0
  18. data/docs/CreateSuppressionRequestUnsubscribeInner.md +18 -0
  19. data/docs/CreateWebhookRequest.md +46 -0
  20. data/docs/DeleteResponse.md +2 -2
  21. data/docs/DeleteSubAccountResponse.md +20 -0
  22. data/docs/DeleteSuppression200ResponseInner.md +20 -0
  23. data/docs/DeleteSuppressionRequest.md +18 -0
  24. data/docs/DeleteWebhookResponse.md +20 -0
  25. data/docs/Device.md +1 -1
  26. data/docs/Domain.md +56 -0
  27. data/docs/DomainApi.md +301 -0
  28. data/docs/DomainDkim.md +22 -0
  29. data/docs/DomainDmarc.md +22 -0
  30. data/docs/DomainGpt.md +22 -0
  31. data/docs/DomainReturnPath.md +22 -0
  32. data/docs/DomainSpf.md +22 -0
  33. data/docs/DomainTrack.md +22 -0
  34. data/docs/EIP.md +18 -0
  35. data/docs/{From.md → EmailAddress.md} +4 -4
  36. data/docs/EmailApi.md +38 -32
  37. data/docs/EmailMessage.md +30 -24
  38. data/docs/EmailMessageFrom.md +20 -0
  39. data/docs/EmailMessageObject.md +46 -0
  40. data/docs/{ReplyTo.md → EmailMessageReplyTo.md} +5 -5
  41. data/docs/EmailMessageToInner.md +26 -0
  42. data/docs/EmailMessageToInnerBccInner.md +22 -0
  43. data/docs/EmailMessageToInnerCcInner.md +22 -0
  44. data/docs/EmailMessageWithTemplate.md +52 -0
  45. data/docs/EmailResponse.md +8 -8
  46. data/docs/EmailStats.md +20 -0
  47. data/docs/EmailStatsStats.md +38 -0
  48. data/docs/Event.md +56 -0
  49. data/docs/EventMetadata.md +13 -13
  50. data/docs/{City.md → GeoLocation.md} +8 -8
  51. data/docs/IP.md +62 -0
  52. data/docs/IPAllocationRequest.md +20 -0
  53. data/docs/IPApi.md +375 -0
  54. data/docs/IPDeletionResponse.md +20 -0
  55. data/docs/IPPool.md +42 -0
  56. data/docs/IPPoolCreateRequest.md +28 -0
  57. data/docs/IPPoolDeleteResponse.md +20 -0
  58. data/docs/IPPoolUpdateRequest.md +24 -0
  59. data/docs/IPPoolsApi.md +361 -0
  60. data/docs/IPUpdateRequest.md +18 -0
  61. data/docs/Label.md +22 -0
  62. data/docs/Member.md +40 -0
  63. data/docs/Message.md +76 -0
  64. data/docs/MessageApi.md +79 -0
  65. data/docs/MessageHeaderTo.md +26 -0
  66. data/docs/MessageTo.md +26 -0
  67. data/docs/{Os.md → OperatingSystem.md} +7 -7
  68. data/docs/Person.md +20 -0
  69. data/docs/{To.md → Recipient.md} +7 -7
  70. data/docs/SMTPAuth.md +26 -0
  71. data/docs/Stat.md +20 -0
  72. data/docs/StatStat.md +38 -0
  73. data/docs/StatStats.md +38 -0
  74. data/docs/StatsAApi.md +307 -0
  75. data/docs/StatsApi.md +237 -0
  76. data/docs/SubAccount.md +48 -0
  77. data/docs/SubAccountApi.md +375 -0
  78. data/docs/Suppression.md +8 -8
  79. data/docs/SuppressionApi.md +76 -134
  80. data/docs/ThirdPartySendingProvider.md +38 -0
  81. data/docs/UpdateSubAccount.md +18 -0
  82. data/docs/UpdateWebhook.md +46 -0
  83. data/docs/UserAgent.md +4 -4
  84. data/docs/Webhook.md +54 -0
  85. data/docs/WebhookApi.md +375 -0
  86. data/git_push.sh +1 -1
  87. data/lib/sendpost_ruby_sdk/api/domain_api.rb +290 -0
  88. data/lib/sendpost_ruby_sdk/api/email_api.rb +33 -35
  89. data/lib/sendpost_ruby_sdk/api/ip_api.rb +356 -0
  90. data/lib/sendpost_ruby_sdk/api/ip_pools_api.rb +356 -0
  91. data/lib/sendpost_ruby_sdk/api/message_api.rb +85 -0
  92. data/lib/sendpost_ruby_sdk/api/stats_a_api.rb +320 -0
  93. data/lib/sendpost_ruby_sdk/api/stats_api.rb +260 -0
  94. data/lib/sendpost_ruby_sdk/api/sub_account_api.rb +356 -0
  95. data/lib/sendpost_ruby_sdk/api/suppression_api.rb +81 -141
  96. data/lib/sendpost_ruby_sdk/api/webhook_api.rb +356 -0
  97. data/lib/sendpost_ruby_sdk/api_client.rb +26 -24
  98. data/lib/sendpost_ruby_sdk/api_error.rb +3 -3
  99. data/lib/sendpost_ruby_sdk/configuration.rb +28 -3
  100. data/lib/sendpost_ruby_sdk/models/account_stats.rb +229 -0
  101. data/lib/sendpost_ruby_sdk/models/account_stats_stat.rb +311 -0
  102. data/lib/sendpost_ruby_sdk/models/aggregate_stat.rb +321 -0
  103. data/lib/sendpost_ruby_sdk/models/aggregate_stats.rb +310 -0
  104. data/lib/sendpost_ruby_sdk/models/aggregated_email_stats.rb +321 -0
  105. data/lib/sendpost_ruby_sdk/models/attachment.rb +15 -7
  106. data/lib/sendpost_ruby_sdk/models/auto_warmup_plan.rb +531 -0
  107. data/lib/sendpost_ruby_sdk/models/copy_to.rb +28 -19
  108. data/lib/sendpost_ruby_sdk/models/create_domain_request.rb +221 -0
  109. data/lib/sendpost_ruby_sdk/models/create_sub_account_request.rb +221 -0
  110. data/lib/sendpost_ruby_sdk/models/create_suppression_request.rb +259 -0
  111. data/lib/sendpost_ruby_sdk/models/create_suppression_request_hard_bounce_inner.rb +220 -0
  112. data/lib/sendpost_ruby_sdk/models/create_suppression_request_manual_inner.rb +220 -0
  113. data/lib/sendpost_ruby_sdk/models/create_suppression_request_spam_complaint_inner.rb +220 -0
  114. data/lib/sendpost_ruby_sdk/models/create_suppression_request_unsubscribe_inner.rb +220 -0
  115. data/lib/sendpost_ruby_sdk/models/create_webhook_request.rb +361 -0
  116. data/lib/sendpost_ruby_sdk/models/delete_response.rb +15 -7
  117. data/lib/sendpost_ruby_sdk/models/delete_sub_account_response.rb +231 -0
  118. data/lib/sendpost_ruby_sdk/models/delete_suppression200_response_inner.rb +231 -0
  119. data/lib/sendpost_ruby_sdk/models/delete_suppression_request.rb +222 -0
  120. data/lib/sendpost_ruby_sdk/models/delete_webhook_response.rb +231 -0
  121. data/lib/sendpost_ruby_sdk/models/device.rb +13 -7
  122. data/lib/sendpost_ruby_sdk/models/domain.rb +435 -0
  123. data/lib/sendpost_ruby_sdk/models/domain_dkim.rb +239 -0
  124. data/lib/sendpost_ruby_sdk/models/domain_dmarc.rb +239 -0
  125. data/lib/sendpost_ruby_sdk/models/domain_gpt.rb +239 -0
  126. data/lib/sendpost_ruby_sdk/models/domain_return_path.rb +239 -0
  127. data/lib/sendpost_ruby_sdk/models/domain_spf.rb +239 -0
  128. data/lib/sendpost_ruby_sdk/models/domain_track.rb +239 -0
  129. data/lib/sendpost_ruby_sdk/models/eip.rb +238 -0
  130. data/lib/sendpost_ruby_sdk/models/email_address.rb +229 -0
  131. data/lib/sendpost_ruby_sdk/models/email_message.rb +121 -86
  132. data/lib/sendpost_ruby_sdk/models/email_message_from.rb +229 -0
  133. data/lib/sendpost_ruby_sdk/models/email_message_object.rb +354 -0
  134. data/lib/sendpost_ruby_sdk/models/email_message_reply_to.rb +229 -0
  135. data/lib/sendpost_ruby_sdk/models/email_message_to_inner.rb +262 -0
  136. data/lib/sendpost_ruby_sdk/models/email_message_to_inner_bcc_inner.rb +240 -0
  137. data/lib/sendpost_ruby_sdk/models/email_message_to_inner_cc_inner.rb +240 -0
  138. data/lib/sendpost_ruby_sdk/models/email_message_with_template.rb +392 -0
  139. data/lib/sendpost_ruby_sdk/models/email_response.rb +40 -32
  140. data/lib/sendpost_ruby_sdk/models/email_stats.rb +230 -0
  141. data/lib/sendpost_ruby_sdk/models/email_stats_stats.rb +321 -0
  142. data/lib/sendpost_ruby_sdk/models/event.rb +393 -0
  143. data/lib/sendpost_ruby_sdk/models/event_metadata.rb +59 -53
  144. data/lib/sendpost_ruby_sdk/models/geo_location.rb +256 -0
  145. data/lib/sendpost_ruby_sdk/models/ip.rb +643 -0
  146. data/lib/sendpost_ruby_sdk/models/ip_allocation_request.rb +266 -0
  147. data/lib/sendpost_ruby_sdk/models/ip_deletion_response.rb +265 -0
  148. data/lib/sendpost_ruby_sdk/models/ip_pool.rb +357 -0
  149. data/lib/sendpost_ruby_sdk/models/ip_pool_create_request.rb +299 -0
  150. data/lib/sendpost_ruby_sdk/models/ip_pool_delete_response.rb +229 -0
  151. data/lib/sendpost_ruby_sdk/models/ip_pool_update_request.rb +249 -0
  152. data/lib/sendpost_ruby_sdk/models/ip_update_request.rb +238 -0
  153. data/lib/sendpost_ruby_sdk/models/label.rb +241 -0
  154. data/lib/sendpost_ruby_sdk/models/member.rb +331 -0
  155. data/lib/sendpost_ruby_sdk/models/message.rb +523 -0
  156. data/lib/sendpost_ruby_sdk/models/message_header_to.rb +268 -0
  157. data/lib/sendpost_ruby_sdk/models/message_to.rb +268 -0
  158. data/lib/sendpost_ruby_sdk/models/operating_system.rb +256 -0
  159. data/lib/sendpost_ruby_sdk/models/person.rb +231 -0
  160. data/lib/sendpost_ruby_sdk/models/recipient.rb +263 -0
  161. data/lib/sendpost_ruby_sdk/models/smtp_auth.rb +261 -0
  162. data/lib/sendpost_ruby_sdk/models/stat.rb +230 -0
  163. data/lib/sendpost_ruby_sdk/models/stat_stat.rb +322 -0
  164. data/lib/sendpost_ruby_sdk/models/stat_stats.rb +321 -0
  165. data/lib/sendpost_ruby_sdk/models/sub_account.rb +415 -0
  166. data/lib/sendpost_ruby_sdk/models/suppression.rb +40 -29
  167. data/lib/sendpost_ruby_sdk/models/third_party_sending_provider.rb +310 -0
  168. data/lib/sendpost_ruby_sdk/models/update_sub_account.rb +221 -0
  169. data/lib/sendpost_ruby_sdk/models/update_webhook.rb +368 -0
  170. data/lib/sendpost_ruby_sdk/models/user_agent.rb +13 -7
  171. data/lib/sendpost_ruby_sdk/models/webhook.rb +405 -0
  172. data/lib/sendpost_ruby_sdk/version.rb +4 -4
  173. data/lib/sendpost_ruby_sdk.rb +73 -15
  174. data/spec/api/domain_api_spec.rb +85 -0
  175. data/spec/api/email_api_spec.rb +9 -9
  176. data/spec/api/ip_api_spec.rb +98 -0
  177. data/spec/api/ip_pools_api_spec.rb +98 -0
  178. data/spec/api/message_api_spec.rb +47 -0
  179. data/spec/api/stats_a_api_spec.rb +89 -0
  180. data/spec/api/stats_api_spec.rb +78 -0
  181. data/spec/api/sub_account_api_spec.rb +98 -0
  182. data/spec/api/suppression_api_spec.rb +22 -34
  183. data/spec/api/webhook_api_spec.rb +98 -0
  184. data/spec/models/account_stats_spec.rb +42 -0
  185. data/spec/models/account_stats_stat_spec.rb +96 -0
  186. data/spec/models/aggregate_stat_spec.rb +96 -0
  187. data/spec/models/aggregate_stats_spec.rb +96 -0
  188. data/spec/models/aggregated_email_stats_spec.rb +96 -0
  189. data/spec/models/attachment_spec.rb +6 -4
  190. data/spec/models/auto_warmup_plan_spec.rb +222 -0
  191. data/spec/models/copy_to_spec.rb +8 -6
  192. data/spec/models/create_domain_request_spec.rb +36 -0
  193. data/spec/models/create_sub_account_request_spec.rb +36 -0
  194. data/spec/models/create_suppression_request_hard_bounce_inner_spec.rb +36 -0
  195. data/spec/models/create_suppression_request_manual_inner_spec.rb +36 -0
  196. data/spec/models/create_suppression_request_spam_complaint_inner_spec.rb +36 -0
  197. data/spec/models/create_suppression_request_spec.rb +54 -0
  198. data/spec/models/create_suppression_request_unsubscribe_inner_spec.rb +36 -0
  199. data/spec/models/create_webhook_request_spec.rb +120 -0
  200. data/spec/models/delete_response_spec.rb +6 -4
  201. data/spec/models/delete_sub_account_response_spec.rb +42 -0
  202. data/spec/models/delete_suppression200_response_inner_spec.rb +42 -0
  203. data/spec/models/delete_suppression_request_spec.rb +36 -0
  204. data/spec/models/delete_webhook_response_spec.rb +42 -0
  205. data/spec/models/device_spec.rb +6 -4
  206. data/spec/models/domain_dkim_spec.rb +48 -0
  207. data/spec/models/domain_dmarc_spec.rb +48 -0
  208. data/spec/models/domain_gpt_spec.rb +48 -0
  209. data/spec/models/domain_return_path_spec.rb +48 -0
  210. data/spec/models/domain_spec.rb +150 -0
  211. data/spec/models/domain_spf_spec.rb +48 -0
  212. data/spec/models/domain_track_spec.rb +48 -0
  213. data/spec/models/eip_spec.rb +36 -0
  214. data/spec/models/email_address_spec.rb +42 -0
  215. data/spec/models/email_message_from_spec.rb +42 -0
  216. data/spec/models/email_message_object_spec.rb +120 -0
  217. data/spec/models/email_message_reply_to_spec.rb +42 -0
  218. data/spec/models/email_message_spec.rb +37 -17
  219. data/spec/models/email_message_to_inner_bcc_inner_spec.rb +48 -0
  220. data/spec/models/email_message_to_inner_cc_inner_spec.rb +48 -0
  221. data/spec/models/email_message_to_inner_spec.rb +60 -0
  222. data/spec/models/email_message_with_template_spec.rb +138 -0
  223. data/spec/models/email_response_spec.rb +10 -8
  224. data/spec/models/email_stats_spec.rb +42 -0
  225. data/spec/models/email_stats_stats_spec.rb +96 -0
  226. data/spec/models/event_metadata_spec.rb +24 -10
  227. data/spec/models/event_spec.rb +150 -0
  228. data/spec/models/geo_location_spec.rb +60 -0
  229. data/spec/models/ip_allocation_request_spec.rb +42 -0
  230. data/spec/models/ip_deletion_response_spec.rb +42 -0
  231. data/spec/models/ip_pool_create_request_spec.rb +66 -0
  232. data/spec/models/ip_pool_delete_response_spec.rb +42 -0
  233. data/spec/models/ip_pool_spec.rb +108 -0
  234. data/spec/models/ip_pool_update_request_spec.rb +54 -0
  235. data/spec/models/ip_spec.rb +168 -0
  236. data/spec/models/ip_update_request_spec.rb +36 -0
  237. data/spec/models/label_spec.rb +48 -0
  238. data/spec/models/member_spec.rb +102 -0
  239. data/spec/models/message_header_to_spec.rb +60 -0
  240. data/spec/models/message_spec.rb +210 -0
  241. data/spec/models/message_to_spec.rb +60 -0
  242. data/spec/models/operating_system_spec.rb +60 -0
  243. data/spec/models/person_spec.rb +42 -0
  244. data/spec/models/recipient_spec.rb +60 -0
  245. data/spec/models/smtp_auth_spec.rb +60 -0
  246. data/spec/models/stat_spec.rb +42 -0
  247. data/spec/models/stat_stat_spec.rb +96 -0
  248. data/spec/models/stat_stats_spec.rb +96 -0
  249. data/spec/models/sub_account_spec.rb +130 -0
  250. data/spec/models/suppression_spec.rb +11 -9
  251. data/spec/models/third_party_sending_provider_spec.rb +96 -0
  252. data/spec/models/update_sub_account_spec.rb +36 -0
  253. data/spec/models/update_webhook_spec.rb +120 -0
  254. data/spec/models/user_agent_spec.rb +6 -4
  255. data/spec/models/webhook_spec.rb +144 -0
  256. data/spec/spec_helper.rb +3 -3
  257. metadata +295 -66
  258. data/config-ruby.json +0 -11
  259. data/docs/CountStat.md +0 -18
  260. data/docs/QEmailMessage.md +0 -70
  261. data/docs/QEvent.md +0 -42
  262. data/docs/RDSuppression.md +0 -18
  263. data/docs/RSuppression.md +0 -24
  264. data/docs/WebhookEvent.md +0 -20
  265. data/generate-libs.bash +0 -1
  266. data/lib/sendpost_ruby_sdk/models/city.rb +0 -250
  267. data/lib/sendpost_ruby_sdk/models/count_stat.rb +0 -214
  268. data/lib/sendpost_ruby_sdk/models/from.rb +0 -223
  269. data/lib/sendpost_ruby_sdk/models/os.rb +0 -250
  270. data/lib/sendpost_ruby_sdk/models/q_email_message.rb +0 -456
  271. data/lib/sendpost_ruby_sdk/models/q_event.rb +0 -324
  272. data/lib/sendpost_ruby_sdk/models/r_suppression.rb +0 -249
  273. data/lib/sendpost_ruby_sdk/models/rd_suppression.rb +0 -216
  274. data/lib/sendpost_ruby_sdk/models/reply_to.rb +0 -223
  275. data/lib/sendpost_ruby_sdk/models/suppression_email.rb +0 -214
  276. data/lib/sendpost_ruby_sdk/models/to.rb +0 -254
  277. data/lib/sendpost_ruby_sdk/models/webhook_event.rb +0 -223
  278. data/sendpost.yaml +0 -666
  279. data/sendpost_ruby_sdk.gemspec +0 -38
  280. data/spec/api_client_spec.rb +0 -228
  281. data/spec/configuration_spec.rb +0 -42
  282. data/spec/models/city_spec.rb +0 -58
  283. data/spec/models/count_stat_spec.rb +0 -34
  284. data/spec/models/from_spec.rb +0 -40
  285. data/spec/models/os_spec.rb +0 -58
  286. data/spec/models/q_email_message_spec.rb +0 -190
  287. data/spec/models/q_event_spec.rb +0 -106
  288. data/spec/models/r_suppression_spec.rb +0 -52
  289. data/spec/models/rd_suppression_spec.rb +0 -34
  290. data/spec/models/reply_to_spec.rb +0 -40
  291. data/spec/models/suppression_email_spec.rb +0 -34
  292. data/spec/models/to_spec.rb +0 -58
  293. data/spec/models/webhook_event_spec.rb +0 -40
data/README.md CHANGED
@@ -1,233 +1,671 @@
1
- # sendpost_ruby_sdk
1
+ # SendPost Ruby SDK
2
2
 
3
- Sendpost - the Ruby gem for the SendPost API
3
+ A Ruby gem for sending emails and managing your SendPost account programmatically.
4
4
 
5
- Email API and SMTP relay to not just send and measure email sending, but also alert and optimise. We provide you with tools, expertise and support needed to reliably deliver emails to your customers inboxes on time, every time.
5
+ ## What is SendPost?
6
6
 
7
+ SendPost is an email delivery service that helps you send transactional and marketing emails reliably. With SendPost, you can:
8
+
9
+ - Send personalized emails to multiple recipients
10
+ - Track email opens and link clicks
11
+ - Monitor email statistics (deliveries, bounces, spam complaints)
12
+ - Manage multiple sending domains and IP addresses
13
+ - Set up webhooks to receive real-time email event notifications
7
14
 
8
15
  ## Installation
9
16
 
10
- ```shell
17
+ ### Install from RubyGems (Recommended)
18
+
19
+ ```bash
11
20
  gem install sendpost_ruby_sdk
12
21
  ```
13
22
 
14
- ## Getting Started
23
+ ### Install from Source
24
+
25
+ If you're installing from the source code:
26
+
27
+ ```bash
28
+ gem build sendpost_ruby_sdk.gemspec
29
+ gem install ./sendpost_ruby_sdk-2.0.0.gem
30
+ ```
31
+
32
+ ### Add to Your Gemfile
33
+
34
+ Add this line to your application's `Gemfile`:
35
+
36
+ ```ruby
37
+ gem 'sendpost_ruby_sdk', '~> 2.0.0'
38
+ ```
39
+
40
+ Then run:
41
+
42
+ ```bash
43
+ bundle install
44
+ ```
45
+
46
+ ## Quick Start
47
+
48
+ ### 1. Get Your API Keys
49
+
50
+ Before you can use the SDK, you need API keys from SendPost:
51
+
52
+ 1. Sign up at [https://app.sendpost.io/register](https://app.sendpost.io/register)
53
+ 2. Log in to your SendPost dashboard
54
+ 3. Navigate to API Keys section
55
+ 4. Copy your **Sub-Account API Key** (for sending emails)
56
+ 5. Copy your **Account API Key** (for managing sub-accounts, IPs, etc.)
15
57
 
16
- Please follow the [installation](#installation) procedure and then run the following code:
58
+ ### 2. Configure the SDK
17
59
 
18
60
  ```ruby
19
61
  require 'sendpost_ruby_sdk'
20
62
 
21
- api_instance = Sendpost::EmailApi.new
22
- x_sub_account_api_key = 'your_api_key' # String | Sub-Account API Key
23
- email_message = Sendpost::EmailMessage.new
24
- email_message.from = {
25
- email: 'richard@piedpiper.com'
26
- }
27
- email_message.to = [{
28
- email: 'gavin@hooli.com'
29
- }]
30
- email_message.subject = 'Hello World'
31
- email_message.html_body = '<strong>it works!</strong>'
32
- email_message.ippool = 'PiedPiper'
33
-
34
- opts = {
35
- email_message: email_message # EmailMessage | Email message
36
- }
63
+ # Create configuration
64
+ config = Sendpost::Configuration.new
65
+ config.host = 'https://api.sendpost.io/api/v1'
66
+
67
+ # Set your Sub-Account API Key (for sending emails)
68
+ config.api_key['X-SubAccount-ApiKey'] = 'your_sub_account_api_key_here'
69
+ ```
37
70
 
71
+ ### 3. Send Your First Email
72
+
73
+ ```ruby
74
+ # Create API client
75
+ api_client = Sendpost::ApiClient.new(config)
76
+ email_api = Sendpost::EmailApi.new(api_client)
77
+
78
+ # Create email message
79
+ email_message = Sendpost::EmailMessageObject.new
80
+
81
+ # Set sender
82
+ from_addr = Sendpost::EmailMessageFrom.new
83
+ from_addr.email = 'sender@yourdomain.com'
84
+ from_addr.name = 'Your Name'
85
+ email_message.from = from_addr
86
+
87
+ # Set recipient
88
+ recipient = Sendpost::EmailMessageToInner.new
89
+ recipient.email = 'recipient@example.com'
90
+ recipient.name = 'Recipient Name'
91
+ email_message.to = [recipient]
92
+
93
+ # Set email content
94
+ email_message.subject = 'Hello from SendPost!'
95
+ email_message.html_body = '<h1>Welcome!</h1><p>This is your first email sent with SendPost Ruby SDK.</p>'
96
+ email_message.text_body = 'Welcome! This is your first email sent with SendPost Ruby SDK.'
97
+
98
+ # Enable tracking
99
+ email_message.track_opens = true
100
+ email_message.track_clicks = true
101
+
102
+ # Send the email
38
103
  begin
39
- result = api_instance.send_email(x_sub_account_api_key, opts)
40
- p result
104
+ responses = email_api.send_email(email_message)
105
+ if responses && !responses.empty?
106
+ puts "Email sent successfully! Message ID: #{responses[0].message_id}"
107
+ end
41
108
  rescue Sendpost::ApiError => e
42
- puts "Exception when calling EmailApi->send_email: #{e}"
109
+ puts "Error sending email: #{e.code} - #{e.response_body}"
43
110
  end
44
-
45
111
  ```
46
112
 
47
- Example with cc, bcc and template:
113
+ ## Detailed Usage Guide
114
+
115
+ ### Understanding API Keys
116
+
117
+ SendPost uses two types of API keys:
118
+
119
+ **Sub-Account API Key (`X-SubAccount-ApiKey`)**
120
+ - Used for: Sending emails, managing domains, viewing sub-account statistics
121
+ - Where to find: SendPost Dashboard → Sub-Accounts → API Keys
122
+
123
+ **Account API Key (`X-Account-ApiKey`)**
124
+ - Used for: Creating sub-accounts, managing IPs, creating webhooks, account-level statistics
125
+ - Where to find: SendPost Dashboard → Account Settings → API Keys
126
+
127
+ ### Sending Emails
128
+
129
+ #### Basic Email
48
130
 
49
131
  ```ruby
50
132
  require 'sendpost_ruby_sdk'
51
133
 
52
- api_instance = Sendpost::EmailApi.new
53
- x_sub_account_api_key = 'your_api_key' # String | Sub-Account API Key
54
- email_message = Sendpost::EmailMessage.new
55
- email_message.from = {
56
- email: 'richard@piedpiper.com'
134
+ # Setup
135
+ config = Sendpost::Configuration.new
136
+ config.host = 'https://api.sendpost.io/api/v1'
137
+ config.api_key['X-SubAccount-ApiKey'] = 'your_sub_account_api_key'
138
+
139
+ api_client = Sendpost::ApiClient.new(config)
140
+ email_api = Sendpost::EmailApi.new(api_client)
141
+
142
+ # Create message
143
+ email_message = Sendpost::EmailMessageObject.new
144
+
145
+ # From address
146
+ from = Sendpost::EmailMessageFrom.new
147
+ from.email = 'noreply@yourdomain.com'
148
+ from.name = 'Your Company'
149
+ email_message.from = from
150
+
151
+ # To address
152
+ to = Sendpost::EmailMessageToInner.new
153
+ to.email = 'customer@example.com'
154
+ to.name = 'Customer Name'
155
+ email_message.to = [to]
156
+
157
+ # Email content
158
+ email_message.subject = 'Order Confirmation'
159
+ email_message.html_body = '<h1>Thank you for your order!</h1>'
160
+ email_message.text_body = 'Thank you for your order!'
161
+
162
+ # Send
163
+ responses = email_api.send_email(email_message)
164
+ puts "Sent! Message ID: #{responses[0].message_id}"
165
+ ```
166
+
167
+ #### Email with Multiple Recipients
168
+
169
+ ```ruby
170
+ # Create multiple recipients
171
+ recipient1 = Sendpost::EmailMessageToInner.new
172
+ recipient1.email = 'user1@example.com'
173
+ recipient1.name = 'User One'
174
+
175
+ recipient2 = Sendpost::EmailMessageToInner.new
176
+ recipient2.email = 'user2@example.com'
177
+ recipient2.name = 'User Two'
178
+
179
+ # Add CC recipients
180
+ cc_recipient = Sendpost::EmailMessageToInnerCcInner.new
181
+ cc_recipient.email = 'cc@example.com'
182
+ recipient1.cc = [cc_recipient]
183
+
184
+ # Add BCC recipients
185
+ bcc_recipient = Sendpost::EmailMessageToInnerBccInner.new
186
+ bcc_recipient.email = 'bcc@example.com'
187
+ recipient1.bcc = [bcc_recipient]
188
+
189
+ # Set all recipients
190
+ email_message.to = [recipient1, recipient2]
191
+ ```
192
+
193
+ #### Email with Attachments
194
+
195
+ ```ruby
196
+ # Create attachment
197
+ attachment = Sendpost::Attachment.new
198
+ attachment.name = 'invoice.pdf'
199
+ attachment.content = Base64.encode64(File.read('path/to/invoice.pdf'))
200
+ attachment.content_type = 'application/pdf'
201
+
202
+ email_message.attachments = [attachment]
203
+ ```
204
+
205
+ #### Email with Custom Fields and Headers
206
+
207
+ ```ruby
208
+ # Add custom fields to recipient (for personalization)
209
+ recipient = Sendpost::EmailMessageToInner.new
210
+ recipient.email = 'customer@example.com'
211
+ recipient.custom_fields = {
212
+ 'customer_id' => '12345',
213
+ 'order_number' => 'ORD-67890',
214
+ 'total_amount' => '99.99'
57
215
  }
58
- email_message.to = [{
59
- email: 'gavin@hooli.com',
60
- cc: [{ email: 'dinesh@bachmanity.com' }],
61
- bcc: [{ email: 'jian@bachmanity.com' }]
62
- }]
63
-
64
- email_message.subject = 'Hello World'
65
- email_message.template = 'Welcome Mail'
66
- email_message.html_body = '<strong>it works!</strong>'
67
- email_message.ippool = 'PiedPiper'
68
-
69
- opts = {
70
- email_message: email_message # EmailMessage | Email message
216
+
217
+ # Add custom headers
218
+ email_message.headers = {
219
+ 'X-Order-ID' => '12345',
220
+ 'X-Email-Type' => 'transactional'
71
221
  }
72
222
 
73
- begin
74
- result = api_instance.send_email_with_template(x_sub_account_api_key, opts)
75
- p result
76
- rescue Sendpost::ApiError => e
77
- puts "Exception when calling EmailApi->send_email: #{e}"
223
+ # Add groups for analytics
224
+ email_message.groups = ['transactional', 'order-confirmation']
225
+ ```
226
+
227
+ #### Email with Reply-To
228
+
229
+ ```ruby
230
+ reply_to = Sendpost::EmailMessageReplyTo.new
231
+ reply_to.email = 'support@yourdomain.com'
232
+ reply_to.name = 'Support Team'
233
+ email_message.reply_to = reply_to
234
+ ```
235
+
236
+ ### Managing Domains
237
+
238
+ Before sending emails, you need to add and verify your sending domain.
239
+
240
+ #### Add a Domain
241
+
242
+ ```ruby
243
+ # Use Sub-Account API Key
244
+ config = Sendpost::Configuration.new
245
+ config.host = 'https://api.sendpost.io/api/v1'
246
+ config.api_key['X-SubAccount-ApiKey'] = 'your_sub_account_api_key'
247
+
248
+ api_client = Sendpost::ApiClient.new(config)
249
+ domain_api = Sendpost::DomainApi.new(api_client)
250
+
251
+ # Create domain request
252
+ domain_request = Sendpost::CreateDomainRequest.new
253
+ domain_request.name = 'yourdomain.com'
254
+
255
+ # Add domain
256
+ domain = domain_api.subaccount_domain_post(domain_request)
257
+
258
+ puts "Domain added! ID: #{domain.id}"
259
+ puts "DKIM Record: #{domain.dkim.text_value}" if domain.dkim
260
+
261
+ # IMPORTANT: Add the DNS records shown to your domain's DNS settings
262
+ ```
263
+
264
+ #### List All Domains
265
+
266
+ ```ruby
267
+ domains = domain_api.get_all_domains
268
+
269
+ domains.each do |domain|
270
+ puts "Domain: #{domain.name}"
271
+ puts "Verified: #{domain.verified ? 'Yes' : 'No'}"
272
+ puts "---"
78
273
  end
274
+ ```
275
+
276
+ #### Get Domain Details
277
+
278
+ ```ruby
279
+ domain_id = 'your_domain_id'
280
+ domain = domain_api.subaccount_domain_domain_id_get(domain_id)
79
281
 
282
+ puts "Domain: #{domain.name}"
283
+ puts "Verified: #{domain.verified}"
284
+ puts "DKIM: #{domain.dkim.text_value}" if domain.dkim
80
285
  ```
81
286
 
82
- ## Suppressions
287
+ ### Viewing Statistics
83
288
 
84
- Create Suppressions
289
+ #### Get Sub-Account Statistics
85
290
 
86
291
  ```ruby
87
- require 'sendpost_ruby_sdk'
88
- api_instance = Sendpost::SuppressionApi.new
292
+ require 'date'
293
+
294
+ # Use Account API Key for statistics
295
+ config = Sendpost::Configuration.new
296
+ config.host = 'https://api.sendpost.io/api/v1'
297
+ config.api_key['X-Account-ApiKey'] = 'your_account_api_key'
298
+
299
+ api_client = Sendpost::ApiClient.new(config)
300
+ stats_api = Sendpost::StatsApi.new(api_client)
301
+
302
+ # Get stats for last 7 days
303
+ sub_account_id = 'your_sub_account_id'
304
+ to_date = Date.today
305
+ from_date = to_date - 7
306
+
307
+ stats = stats_api.account_subaccount_stat_subaccount_id_get(
308
+ from_date,
309
+ to_date,
310
+ sub_account_id
311
+ )
312
+
313
+ stats.each do |stat|
314
+ puts "Date: #{stat.date}"
315
+ if stat.stats
316
+ puts " Processed: #{stat.stats.processed || 0}"
317
+ puts " Delivered: #{stat.stats.delivered || 0}"
318
+ puts " Opened: #{stat.stats.opened || 0}"
319
+ puts " Clicked: #{stat.stats.clicked || 0}"
320
+ puts " Bounced: #{stat.stats.hard_bounced || 0}"
321
+ puts " Spam: #{stat.stats.spam || 0}"
322
+ end
323
+ puts "---"
324
+ end
325
+ ```
89
326
 
90
- x_sub_account_api_key = 'your_api_key'
327
+ #### Get Aggregate Statistics
91
328
 
92
- r_suppression = Sendpost::RSuppression.new
329
+ ```ruby
330
+ # Get overall stats for a sub-account
331
+ aggregate_stat = stats_api.account_subaccount_stat_subaccount_id_aggregate_get(
332
+ from_date,
333
+ to_date,
334
+ sub_account_id
335
+ )
336
+
337
+ puts "Total Processed: #{aggregate_stat.processed || 0}"
338
+ puts "Total Delivered: #{aggregate_stat.delivered || 0}"
339
+ puts "Total Opened: #{aggregate_stat.opened || 0}"
340
+ puts "Total Clicked: #{aggregate_stat.clicked || 0}"
341
+ ```
93
342
 
94
- r_suppression.hard_bounce = [{ email: 'richard@piedpiper_fake.com' }]
343
+ #### Get Account-Level Statistics
95
344
 
96
- # fields are optional, but you have to send at least one of them.
345
+ ```ruby
346
+ # Use StatsAApi for account-level stats
347
+ stats_a_api = Sendpost::StatsAApi.new(api_client)
97
348
 
98
- # r_suppression.manual = [{ email: 'richard@piedpiper_fake2.com' }]
99
- # r_suppression.spam_complaint = [{ email: 'richard@piedpiper_fake3.com' }]
100
- # r_suppression.unsubscribe = [{ email: 'richard@piedpiper_fake4.com' }]
349
+ account_stats = stats_a_api.get_all_account_stats(from_date, to_date)
101
350
 
102
- opts = {
103
- r_suppression: r_suppression
104
- }
351
+ account_stats.each do |stat|
352
+ puts "Date: #{stat.date}"
353
+ if stat.stat
354
+ puts " Processed: #{stat.stat.processed || 0}"
355
+ puts " Delivered: #{stat.stat.delivered || 0}"
356
+ end
357
+ end
358
+ ```
105
359
 
106
- p opts
360
+ ### Managing Sub-Accounts
107
361
 
108
- begin
109
- result = api_instance.create_suppressions(x_sub_account_api_key, opts)
110
- p result
111
- rescue Sendpost::ApiError => e
112
- puts "Exception when calling SuppressionApi->create_suppressions: #{e}"
362
+ #### List All Sub-Accounts
363
+
364
+ ```ruby
365
+ # Use Account API Key
366
+ config = Sendpost::Configuration.new
367
+ config.host = 'https://api.sendpost.io/api/v1'
368
+ config.api_key['X-Account-ApiKey'] = 'your_account_api_key'
369
+
370
+ api_client = Sendpost::ApiClient.new(config)
371
+ sub_account_api = Sendpost::SubAccountApi.new(api_client)
372
+
373
+ sub_accounts = sub_account_api.get_all_sub_accounts
374
+
375
+ sub_accounts.each do |sub_account|
376
+ puts "ID: #{sub_account.id}"
377
+ puts "Name: #{sub_account.name}"
378
+ puts "API Key: #{sub_account.api_key}"
379
+ puts "---"
113
380
  end
114
381
  ```
115
382
 
116
- Get Suppressions
383
+ #### Create a Sub-Account
117
384
 
118
385
  ```ruby
119
- require 'sendpost_ruby_sdk'
120
- api_instance = Sendpost::SuppressionApi.new
386
+ new_sub_account = Sendpost::CreateSubAccountRequest.new
387
+ new_sub_account.name = "Client Account - #{Time.now.to_i}"
121
388
 
122
- x_sub_account_api_key = 'your_api_key'
389
+ sub_account = sub_account_api.create_sub_account(new_sub_account)
123
390
 
124
- opts = {
125
- offset: 0,
126
- limit: 20,
127
- search: nil,
128
- from: '2023-06-07',
129
- to: '2023-08-04'
130
- }
391
+ puts "Created! ID: #{sub_account.id}"
392
+ puts "API Key: #{sub_account.api_key}"
393
+ ```
131
394
 
132
- p opts
395
+ #### Get Sub-Account Details
133
396
 
134
- begin
135
- result = api_instance.get_suppressions(x_sub_account_api_key, opts)
136
- p result
137
- rescue Sendpost::ApiError => e
138
- puts "Exception when calling SuppressionApi->get_suppressions: #{e}"
397
+ ```ruby
398
+ sub_account_id = 'your_sub_account_id'
399
+ sub_account = sub_account_api.get_sub_account(sub_account_id)
400
+
401
+ puts "Name: #{sub_account.name}"
402
+ puts "Type: #{sub_account.type}"
403
+ puts "Blocked: #{sub_account.blocked}"
404
+ ```
405
+
406
+ ### Managing Webhooks
407
+
408
+ Webhooks allow you to receive real-time notifications when email events occur.
409
+
410
+ #### Create a Webhook
411
+
412
+ ```ruby
413
+ # Use Account API Key
414
+ config = Sendpost::Configuration.new
415
+ config.host = 'https://api.sendpost.io/api/v1'
416
+ config.api_key['X-Account-ApiKey'] = 'your_account_api_key'
417
+
418
+ api_client = Sendpost::ApiClient.new(config)
419
+ webhook_api = Sendpost::WebhookApi.new(api_client)
420
+
421
+ # Create webhook request
422
+ webhook_request = Sendpost::CreateWebhookRequest.new
423
+ webhook_request.url = 'https://your-app.com/webhooks/sendpost'
424
+ webhook_request.enabled = true
425
+
426
+ # Configure which events to receive
427
+ webhook_request.processed = true # Email processed
428
+ webhook_request.delivered = true # Email delivered
429
+ webhook_request.dropped = true # Email dropped
430
+ webhook_request.soft_bounced = true # Soft bounce
431
+ webhook_request.hard_bounced = true # Hard bounce
432
+ webhook_request.opened = true # Email opened
433
+ webhook_request.clicked = true # Link clicked
434
+ webhook_request.unsubscribed = true # Unsubscribed
435
+ webhook_request.spam = true # Marked as spam
436
+
437
+ webhook = webhook_api.create_webhook(webhook_request)
438
+
439
+ puts "Webhook created! ID: #{webhook.id}"
440
+ ```
441
+
442
+ #### List All Webhooks
443
+
444
+ ```ruby
445
+ webhooks = webhook_api.get_all_webhooks
446
+
447
+ webhooks.each do |webhook|
448
+ puts "ID: #{webhook.id}"
449
+ puts "URL: #{webhook.url}"
450
+ puts "Enabled: #{webhook.enabled}"
451
+ puts "---"
139
452
  end
140
453
  ```
141
454
 
142
- Delete Suppression
455
+ ### Retrieving Message Details
143
456
 
144
457
  ```ruby
145
- require 'sendpost_ruby_sdk'
146
- api_instance = Sendpost::SuppressionApi.new
458
+ # Use Account API Key
459
+ config = Sendpost::Configuration.new
460
+ config.host = 'https://api.sendpost.io/api/v1'
461
+ config.api_key['X-Account-ApiKey'] = 'your_account_api_key'
462
+
463
+ api_client = Sendpost::ApiClient.new(config)
464
+ message_api = Sendpost::MessageApi.new(api_client)
465
+
466
+ # Get message by ID (from email send response)
467
+ message_id = 'your_message_id'
468
+ message = message_api.get_message_by_id(message_id)
469
+
470
+ puts "Message ID: #{message.message_id}"
471
+ puts "From: #{message.from.email}" if message.from
472
+ puts "To: #{message.to.email}" if message.to
473
+ puts "Subject: #{message.subject}"
474
+ puts "Submitted At: #{message.submitted_at}"
475
+ puts "IP Used: #{message.public_ip}"
476
+ ```
147
477
 
148
- x_sub_account_api_key = 'your_api_key'
478
+ ### Managing Suppressions
149
479
 
150
- rd_suppression = Sendpost::RDSuppression.new
480
+ Suppressions are email addresses that should not receive emails (unsubscribed, bounced, etc.).
151
481
 
152
- rd_suppression.suppressions = [{ email: 'richard@piedpiper_fake4.com' }]
482
+ #### Add Suppressions
153
483
 
154
- opts = {
155
- rd_suppression: rd_suppression
156
- }
484
+ ```ruby
485
+ # Use Sub-Account API Key
486
+ config = Sendpost::Configuration.new
487
+ config.host = 'https://api.sendpost.io/api/v1'
488
+ config.api_key['X-SubAccount-ApiKey'] = 'your_sub_account_api_key'
489
+
490
+ api_client = Sendpost::ApiClient.new(config)
491
+ suppression_api = Sendpost::SuppressionApi.new(api_client)
492
+
493
+ # Create suppression request
494
+ suppression_request = Sendpost::CreateSuppressionRequest.new
495
+
496
+ # Add hard bounces
497
+ hard_bounce = Sendpost::CreateSuppressionRequestHardBounceInner.new
498
+ hard_bounce.email = 'bounced@example.com'
499
+ suppression_request.hard_bounce = [hard_bounce]
500
+
501
+ # Add unsubscribes
502
+ unsubscribe = Sendpost::CreateSuppressionRequestUnsubscribeInner.new
503
+ unsubscribe.email = 'unsubscribed@example.com'
504
+ suppression_request.unsubscribe = [unsubscribe]
505
+
506
+ # Add spam complaints
507
+ spam = Sendpost::CreateSuppressionRequestSpamComplaintInner.new
508
+ spam.email = 'spam@example.com'
509
+ suppression_request.spam_complaint = [spam]
510
+
511
+ # Add manual suppressions
512
+ manual = Sendpost::CreateSuppressionRequestManualInner.new
513
+ manual.email = 'manual@example.com'
514
+ suppression_request.manual = [manual]
515
+
516
+ suppression_api.create_suppression(suppression_request)
517
+ puts "Suppressions added successfully"
518
+ ```
519
+
520
+ #### List Suppressions
521
+
522
+ ```ruby
523
+ to_date = Date.today
524
+ from_date = to_date - 7
525
+
526
+ suppressions = suppression_api.get_suppression_list(from_date, to_date)
527
+
528
+ suppressions.each do |suppression|
529
+ puts "Email: #{suppression.email}"
530
+ puts "Type: #{suppression.type}"
531
+ puts "---"
532
+ end
533
+ ```
157
534
 
158
- p opts
535
+ ## Error Handling
159
536
 
537
+ The SDK raises `Sendpost::ApiError` when API calls fail. Always wrap API calls in begin/rescue blocks:
538
+
539
+ ```ruby
160
540
  begin
161
- result = api_instance.delete_suppression(x_sub_account_api_key, opts)
162
- p result
541
+ responses = email_api.send_email(email_message)
542
+ puts "Success!"
163
543
  rescue Sendpost::ApiError => e
164
- puts "Exception when calling SuppressionApi->delete_suppression: #{e}"
544
+ puts "API Error:"
545
+ puts " Status Code: #{e.code}"
546
+ puts " Response: #{e.response_body}"
547
+
548
+ case e.code
549
+ when 401
550
+ puts " Issue: Invalid or missing API key"
551
+ when 403
552
+ puts " Issue: Resource already exists or insufficient permissions"
553
+ when 404
554
+ puts " Issue: Resource not found"
555
+ when 422
556
+ puts " Issue: Invalid request data"
557
+ when 500
558
+ puts " Issue: SendPost server error"
559
+ end
560
+ rescue StandardError => e
561
+ puts "Unexpected error: #{e.message}"
165
562
  end
166
563
  ```
167
564
 
168
- Count Suppression
565
+ ### Common HTTP Status Codes
566
+
567
+ | Code | Meaning | What to Do |
568
+ |------|---------|------------|
569
+ | 200 | Success | Everything worked |
570
+ | 401 | Unauthorized | Check your API key |
571
+ | 403 | Forbidden | Resource exists or no permission |
572
+ | 404 | Not Found | Resource ID doesn't exist |
573
+ | 422 | Invalid Data | Check your request body |
574
+ | 500 | Server Error | Try again later |
575
+ | 503 | Service Unavailable | SendPost is down for maintenance |
576
+
577
+ ## Complete Example
578
+
579
+ Here's a complete example that demonstrates common operations:
169
580
 
170
581
  ```ruby
582
+ #!/usr/bin/env ruby
171
583
  require 'sendpost_ruby_sdk'
172
- api_instance = Sendpost::SuppressionApi.new
584
+ require 'date'
173
585
 
174
- x_sub_account_api_key = 'your_api_key'
586
+ # Configuration
587
+ SUB_ACCOUNT_API_KEY = ENV['SENDPOST_SUB_ACCOUNT_API_KEY'] || 'your_key_here'
588
+ ACCOUNT_API_KEY = ENV['SENDPOST_ACCOUNT_API_KEY'] || 'your_key_here'
175
589
 
176
- opts = {
177
- from: '2023-06-07',
178
- to: '2023-08-04'
179
- }
590
+ # Setup Sub-Account API (for sending emails)
591
+ sub_config = Sendpost::Configuration.new
592
+ sub_config.host = 'https://api.sendpost.io/api/v1'
593
+ sub_config.api_key['X-SubAccount-ApiKey'] = SUB_ACCOUNT_API_KEY
180
594
 
181
- p opts
595
+ sub_api_client = Sendpost::ApiClient.new(sub_config)
596
+ email_api = Sendpost::EmailApi.new(sub_api_client)
597
+
598
+ # Setup Account API (for managing resources)
599
+ account_config = Sendpost::Configuration.new
600
+ account_config.host = 'https://api.sendpost.io/api/v1'
601
+ account_config.api_key['X-Account-ApiKey'] = ACCOUNT_API_KEY
602
+
603
+ account_api_client = Sendpost::ApiClient.new(account_config)
604
+
605
+ # Send an email
606
+ email_message = Sendpost::EmailMessageObject.new
607
+
608
+ from = Sendpost::EmailMessageFrom.new
609
+ from.email = 'sender@yourdomain.com'
610
+ from.name = 'Your Company'
611
+ email_message.from = from
612
+
613
+ to = Sendpost::EmailMessageToInner.new
614
+ to.email = 'recipient@example.com'
615
+ to.name = 'Recipient'
616
+ email_message.to = [to]
617
+
618
+ email_message.subject = 'Test Email'
619
+ email_message.html_body = '<h1>Hello!</h1><p>This is a test email.</p>'
620
+ email_message.text_body = 'Hello! This is a test email.'
621
+ email_message.track_opens = true
622
+ email_message.track_clicks = true
182
623
 
183
624
  begin
184
- result = api_instance.count(x_sub_account_api_key, opts)
185
- p result
625
+ responses = email_api.send_email(email_message)
626
+ message_id = responses[0].message_id
627
+ puts "Email sent! Message ID: #{message_id}"
628
+
629
+ # Get message details
630
+ message_api = Sendpost::MessageApi.new(account_api_client)
631
+ message = message_api.get_message_by_id(message_id)
632
+ puts "Message details retrieved successfully"
633
+
186
634
  rescue Sendpost::ApiError => e
187
- puts "Exception when calling SuppressionApi->count: #{e}"
635
+ puts "Error: #{e.code} - #{e.response_body}"
188
636
  end
189
637
  ```
190
638
 
191
- ## Documentation for API Endpoints
639
+ ## API Reference
640
+
641
+ For complete API documentation, see the [API Reference](docs/) directory. Key API classes:
642
+
643
+ - `Sendpost::EmailApi` - Send emails
644
+ - `Sendpost::DomainApi` - Manage domains
645
+ - `Sendpost::SubAccountApi` - Manage sub-accounts
646
+ - `Sendpost::StatsApi` - View statistics
647
+ - `Sendpost::WebhookApi` - Manage webhooks
648
+ - `Sendpost::SuppressionApi` - Manage suppressions
649
+ - `Sendpost::MessageApi` - Retrieve message details
192
650
 
193
- All URIs are relative to *https://api.sendpost.io/api/v1*
651
+ ## Requirements
194
652
 
195
- Class | Method | HTTP request | Description
196
- ------------ | ------------- | ------------- | -------------
197
- *Sendpost::EmailApi* | [**send_email**](docs/EmailApi.md#send_email) | **POST** /subaccount/email/ |
198
- *Sendpost::EmailApi* | [**send_email_with_template**](docs/EmailApi.md#send_email_with_template) | **POST** /subaccount/email/template |
199
- *Sendpost::SuppressionApi* | [**count**](docs/SuppressionApi.md#count) | **GET** /subaccount/suppression/count |
200
- *Sendpost::SuppressionApi* | [**create_suppressions**](docs/SuppressionApi.md#create_suppressions) | **POST** /subaccount/suppression/ |
201
- *Sendpost::SuppressionApi* | [**delete_suppression**](docs/SuppressionApi.md#delete_suppression) | **DELETE** /subaccount/suppression/ |
202
- *Sendpost::SuppressionApi* | [**get_suppressions**](docs/SuppressionApi.md#get_suppressions) | **GET** /subaccount/suppression/ |
653
+ - Ruby 2.7 or higher
654
+ - Internet connection
203
655
 
656
+ ## Getting Help
204
657
 
205
- ## Documentation for Models
658
+ - **Documentation**: [https://docs.sendpost.io](https://docs.sendpost.io)
659
+ - **Email Support**: hello@sendpost.io
660
+ - **Website**: [https://sendpost.io](https://sendpost.io)
661
+ - **Developer Portal**: [https://app.sendpost.io](https://app.sendpost.io)
206
662
 
207
- - [Sendpost::Attachment](docs/Attachment.md)
208
- - [Sendpost::City](docs/City.md)
209
- - [Sendpost::CopyTo](docs/CopyTo.md)
210
- - [Sendpost::CountStat](docs/CountStat.md)
211
- - [Sendpost::DeleteResponse](docs/DeleteResponse.md)
212
- - [Sendpost::Device](docs/Device.md)
213
- - [Sendpost::EmailMessage](docs/EmailMessage.md)
214
- - [Sendpost::EmailResponse](docs/EmailResponse.md)
215
- - [Sendpost::EventMetadata](docs/EventMetadata.md)
216
- - [Sendpost::From](docs/From.md)
217
- - [Sendpost::Os](docs/Os.md)
218
- - [Sendpost::QEmailMessage](docs/QEmailMessage.md)
219
- - [Sendpost::QEvent](docs/QEvent.md)
220
- - [Sendpost::RDSuppression](docs/RDSuppression.md)
221
- - [Sendpost::RSuppression](docs/RSuppression.md)
222
- - [Sendpost::ReplyTo](docs/ReplyTo.md)
223
- - [Sendpost::Suppression](docs/Suppression.md)
224
- - [Sendpost::SuppressionEmail](docs/SuppressionEmail.md)
225
- - [Sendpost::To](docs/To.md)
226
- - [Sendpost::UserAgent](docs/UserAgent.md)
227
- - [Sendpost::WebhookEvent](docs/WebhookEvent.md)
663
+ ## License
228
664
 
665
+ This SDK is provided under the Unlicense. See LICENSE file for details.
229
666
 
230
- ## Documentation for Authorization
667
+ ## Version
231
668
 
232
- Endpoints do not require authorization.
669
+ Current version: 2.0.0
233
670
 
671
+ Generated by [OpenAPI Generator](https://openapi-generator.tech)