sendpost_ruby_sdk 1.2.2 → 2.0.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 (287) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +580 -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/DomainTrack.md +22 -0
  33. data/docs/EIP.md +18 -0
  34. data/docs/{From.md → EmailAddress.md} +4 -4
  35. data/docs/EmailApi.md +38 -32
  36. data/docs/EmailMessage.md +30 -24
  37. data/docs/EmailMessageFrom.md +20 -0
  38. data/docs/EmailMessageObject.md +46 -0
  39. data/docs/{ReplyTo.md → EmailMessageReplyTo.md} +5 -5
  40. data/docs/EmailMessageToInner.md +26 -0
  41. data/docs/EmailMessageToInnerBccInner.md +22 -0
  42. data/docs/EmailMessageToInnerCcInner.md +22 -0
  43. data/docs/EmailMessageWithTemplate.md +52 -0
  44. data/docs/EmailResponse.md +8 -8
  45. data/docs/EmailStats.md +20 -0
  46. data/docs/EmailStatsStats.md +38 -0
  47. data/docs/Event.md +56 -0
  48. data/docs/EventMetadata.md +13 -13
  49. data/docs/{City.md → GeoLocation.md} +8 -8
  50. data/docs/IP.md +62 -0
  51. data/docs/IPAllocationRequest.md +20 -0
  52. data/docs/IPApi.md +375 -0
  53. data/docs/IPDeletionResponse.md +20 -0
  54. data/docs/IPPool.md +42 -0
  55. data/docs/IPPoolCreateRequest.md +28 -0
  56. data/docs/IPPoolDeleteResponse.md +20 -0
  57. data/docs/IPPoolUpdateRequest.md +24 -0
  58. data/docs/IPPoolsApi.md +361 -0
  59. data/docs/IPUpdateRequest.md +18 -0
  60. data/docs/Label.md +22 -0
  61. data/docs/Member.md +40 -0
  62. data/docs/Message.md +76 -0
  63. data/docs/MessageApi.md +79 -0
  64. data/docs/MessageHeaderTo.md +26 -0
  65. data/docs/MessageTo.md +26 -0
  66. data/docs/{Os.md → OperatingSystem.md} +7 -7
  67. data/docs/Person.md +20 -0
  68. data/docs/{To.md → Recipient.md} +7 -7
  69. data/docs/SMTPAuth.md +26 -0
  70. data/docs/Stat.md +20 -0
  71. data/docs/StatStats.md +38 -0
  72. data/docs/StatsAApi.md +307 -0
  73. data/docs/StatsApi.md +237 -0
  74. data/docs/SubAccount.md +48 -0
  75. data/docs/SubAccountApi.md +375 -0
  76. data/docs/Suppression.md +8 -8
  77. data/docs/SuppressionApi.md +76 -134
  78. data/docs/ThirdPartySendingProvider.md +38 -0
  79. data/docs/UpdateSubAccount.md +18 -0
  80. data/docs/UpdateWebhook.md +46 -0
  81. data/docs/UserAgent.md +4 -4
  82. data/docs/Webhook.md +54 -0
  83. data/docs/WebhookApi.md +375 -0
  84. data/git_push.sh +1 -1
  85. data/lib/sendpost_ruby_sdk/api/domain_api.rb +290 -0
  86. data/lib/sendpost_ruby_sdk/api/email_api.rb +33 -35
  87. data/lib/sendpost_ruby_sdk/api/ip_api.rb +356 -0
  88. data/lib/sendpost_ruby_sdk/api/ip_pools_api.rb +356 -0
  89. data/lib/sendpost_ruby_sdk/api/message_api.rb +85 -0
  90. data/lib/sendpost_ruby_sdk/api/stats_a_api.rb +320 -0
  91. data/lib/sendpost_ruby_sdk/api/stats_api.rb +260 -0
  92. data/lib/sendpost_ruby_sdk/api/sub_account_api.rb +356 -0
  93. data/lib/sendpost_ruby_sdk/api/suppression_api.rb +81 -141
  94. data/lib/sendpost_ruby_sdk/api/webhook_api.rb +356 -0
  95. data/lib/sendpost_ruby_sdk/api_client.rb +26 -24
  96. data/lib/sendpost_ruby_sdk/api_error.rb +3 -3
  97. data/lib/sendpost_ruby_sdk/configuration.rb +28 -3
  98. data/lib/sendpost_ruby_sdk/models/account_stats.rb +229 -0
  99. data/lib/sendpost_ruby_sdk/models/account_stats_stat.rb +310 -0
  100. data/lib/sendpost_ruby_sdk/models/aggregate_stat.rb +321 -0
  101. data/lib/sendpost_ruby_sdk/models/aggregate_stats.rb +310 -0
  102. data/lib/sendpost_ruby_sdk/models/aggregated_email_stats.rb +321 -0
  103. data/lib/sendpost_ruby_sdk/models/attachment.rb +15 -7
  104. data/lib/sendpost_ruby_sdk/models/auto_warmup_plan.rb +531 -0
  105. data/lib/sendpost_ruby_sdk/models/copy_to.rb +28 -19
  106. data/lib/sendpost_ruby_sdk/models/create_domain_request.rb +221 -0
  107. data/lib/sendpost_ruby_sdk/models/create_sub_account_request.rb +221 -0
  108. data/lib/sendpost_ruby_sdk/models/create_suppression_request.rb +259 -0
  109. data/lib/sendpost_ruby_sdk/models/create_suppression_request_hard_bounce_inner.rb +220 -0
  110. data/lib/sendpost_ruby_sdk/models/create_suppression_request_manual_inner.rb +220 -0
  111. data/lib/sendpost_ruby_sdk/models/create_suppression_request_spam_complaint_inner.rb +220 -0
  112. data/lib/sendpost_ruby_sdk/models/create_suppression_request_unsubscribe_inner.rb +220 -0
  113. data/lib/sendpost_ruby_sdk/models/create_webhook_request.rb +361 -0
  114. data/lib/sendpost_ruby_sdk/models/delete_response.rb +15 -7
  115. data/lib/sendpost_ruby_sdk/models/delete_sub_account_response.rb +231 -0
  116. data/lib/sendpost_ruby_sdk/models/delete_suppression200_response_inner.rb +231 -0
  117. data/lib/sendpost_ruby_sdk/models/delete_suppression_request.rb +222 -0
  118. data/lib/sendpost_ruby_sdk/models/delete_webhook_response.rb +231 -0
  119. data/lib/sendpost_ruby_sdk/models/device.rb +13 -7
  120. data/lib/sendpost_ruby_sdk/models/domain.rb +406 -0
  121. data/lib/sendpost_ruby_sdk/models/domain_dkim.rb +239 -0
  122. data/lib/sendpost_ruby_sdk/models/domain_dmarc.rb +239 -0
  123. data/lib/sendpost_ruby_sdk/models/domain_gpt.rb +239 -0
  124. data/lib/sendpost_ruby_sdk/models/domain_return_path.rb +239 -0
  125. data/lib/sendpost_ruby_sdk/models/domain_track.rb +239 -0
  126. data/lib/sendpost_ruby_sdk/models/eip.rb +238 -0
  127. data/lib/sendpost_ruby_sdk/models/email_address.rb +229 -0
  128. data/lib/sendpost_ruby_sdk/models/email_message.rb +121 -86
  129. data/lib/sendpost_ruby_sdk/models/email_message_from.rb +229 -0
  130. data/lib/sendpost_ruby_sdk/models/email_message_object.rb +354 -0
  131. data/lib/sendpost_ruby_sdk/models/email_message_reply_to.rb +229 -0
  132. data/lib/sendpost_ruby_sdk/models/email_message_to_inner.rb +262 -0
  133. data/lib/sendpost_ruby_sdk/models/email_message_to_inner_bcc_inner.rb +240 -0
  134. data/lib/sendpost_ruby_sdk/models/email_message_to_inner_cc_inner.rb +240 -0
  135. data/lib/sendpost_ruby_sdk/models/email_message_with_template.rb +392 -0
  136. data/lib/sendpost_ruby_sdk/models/email_response.rb +40 -32
  137. data/lib/sendpost_ruby_sdk/models/email_stats.rb +230 -0
  138. data/lib/sendpost_ruby_sdk/models/email_stats_stats.rb +321 -0
  139. data/lib/sendpost_ruby_sdk/models/event.rb +393 -0
  140. data/lib/sendpost_ruby_sdk/models/event_metadata.rb +59 -53
  141. data/lib/sendpost_ruby_sdk/models/geo_location.rb +256 -0
  142. data/lib/sendpost_ruby_sdk/models/ip.rb +491 -0
  143. data/lib/sendpost_ruby_sdk/models/ip_allocation_request.rb +266 -0
  144. data/lib/sendpost_ruby_sdk/models/ip_deletion_response.rb +265 -0
  145. data/lib/sendpost_ruby_sdk/models/ip_pool.rb +335 -0
  146. data/lib/sendpost_ruby_sdk/models/ip_pool_create_request.rb +269 -0
  147. data/lib/sendpost_ruby_sdk/models/ip_pool_delete_response.rb +229 -0
  148. data/lib/sendpost_ruby_sdk/models/ip_pool_update_request.rb +249 -0
  149. data/lib/sendpost_ruby_sdk/models/ip_update_request.rb +238 -0
  150. data/lib/sendpost_ruby_sdk/models/label.rb +241 -0
  151. data/lib/sendpost_ruby_sdk/models/member.rb +331 -0
  152. data/lib/sendpost_ruby_sdk/models/message.rb +523 -0
  153. data/lib/sendpost_ruby_sdk/models/message_header_to.rb +268 -0
  154. data/lib/sendpost_ruby_sdk/models/message_to.rb +268 -0
  155. data/lib/sendpost_ruby_sdk/models/operating_system.rb +256 -0
  156. data/lib/sendpost_ruby_sdk/models/person.rb +231 -0
  157. data/lib/sendpost_ruby_sdk/models/recipient.rb +263 -0
  158. data/lib/sendpost_ruby_sdk/models/smtp_auth.rb +261 -0
  159. data/lib/sendpost_ruby_sdk/models/stat.rb +230 -0
  160. data/lib/sendpost_ruby_sdk/models/stat_stats.rb +321 -0
  161. data/lib/sendpost_ruby_sdk/models/sub_account.rb +415 -0
  162. data/lib/sendpost_ruby_sdk/models/suppression.rb +40 -29
  163. data/lib/sendpost_ruby_sdk/models/third_party_sending_provider.rb +310 -0
  164. data/lib/sendpost_ruby_sdk/models/update_sub_account.rb +221 -0
  165. data/lib/sendpost_ruby_sdk/models/update_webhook.rb +368 -0
  166. data/lib/sendpost_ruby_sdk/models/user_agent.rb +13 -7
  167. data/lib/sendpost_ruby_sdk/models/webhook.rb +405 -0
  168. data/lib/sendpost_ruby_sdk/version.rb +4 -4
  169. data/lib/sendpost_ruby_sdk.rb +72 -15
  170. data/spec/api/domain_api_spec.rb +85 -0
  171. data/spec/api/email_api_spec.rb +9 -9
  172. data/spec/api/ip_api_spec.rb +98 -0
  173. data/spec/api/ip_pools_api_spec.rb +98 -0
  174. data/spec/api/message_api_spec.rb +47 -0
  175. data/spec/api/stats_a_api_spec.rb +89 -0
  176. data/spec/api/stats_api_spec.rb +78 -0
  177. data/spec/api/sub_account_api_spec.rb +98 -0
  178. data/spec/api/suppression_api_spec.rb +22 -34
  179. data/spec/api/webhook_api_spec.rb +98 -0
  180. data/spec/models/account_stats_spec.rb +42 -0
  181. data/spec/models/account_stats_stat_spec.rb +96 -0
  182. data/spec/models/aggregate_stat_spec.rb +96 -0
  183. data/spec/models/aggregate_stats_spec.rb +96 -0
  184. data/spec/models/aggregated_email_stats_spec.rb +96 -0
  185. data/spec/models/attachment_spec.rb +6 -4
  186. data/spec/models/auto_warmup_plan_spec.rb +222 -0
  187. data/spec/models/copy_to_spec.rb +8 -6
  188. data/spec/models/create_domain_request_spec.rb +36 -0
  189. data/spec/models/create_sub_account_request_spec.rb +36 -0
  190. data/spec/models/create_suppression_request_hard_bounce_inner_spec.rb +36 -0
  191. data/spec/models/create_suppression_request_manual_inner_spec.rb +36 -0
  192. data/spec/models/create_suppression_request_spam_complaint_inner_spec.rb +36 -0
  193. data/spec/models/create_suppression_request_spec.rb +54 -0
  194. data/spec/models/create_suppression_request_unsubscribe_inner_spec.rb +36 -0
  195. data/spec/models/create_webhook_request_spec.rb +120 -0
  196. data/spec/models/delete_response_spec.rb +6 -4
  197. data/spec/models/delete_sub_account_response_spec.rb +42 -0
  198. data/spec/models/delete_suppression200_response_inner_spec.rb +42 -0
  199. data/spec/models/delete_suppression_request_spec.rb +36 -0
  200. data/spec/models/delete_webhook_response_spec.rb +42 -0
  201. data/spec/models/device_spec.rb +6 -4
  202. data/spec/models/domain_dkim_spec.rb +48 -0
  203. data/spec/models/domain_dmarc_spec.rb +48 -0
  204. data/spec/models/domain_gpt_spec.rb +48 -0
  205. data/spec/models/domain_return_path_spec.rb +48 -0
  206. data/spec/models/domain_spec.rb +150 -0
  207. data/spec/models/domain_track_spec.rb +48 -0
  208. data/spec/models/eip_spec.rb +36 -0
  209. data/spec/models/email_address_spec.rb +42 -0
  210. data/spec/models/email_message_from_spec.rb +42 -0
  211. data/spec/models/email_message_object_spec.rb +120 -0
  212. data/spec/models/email_message_reply_to_spec.rb +42 -0
  213. data/spec/models/email_message_spec.rb +37 -17
  214. data/spec/models/email_message_to_inner_bcc_inner_spec.rb +48 -0
  215. data/spec/models/email_message_to_inner_cc_inner_spec.rb +48 -0
  216. data/spec/models/email_message_to_inner_spec.rb +60 -0
  217. data/spec/models/email_message_with_template_spec.rb +138 -0
  218. data/spec/models/email_response_spec.rb +10 -8
  219. data/spec/models/email_stats_spec.rb +42 -0
  220. data/spec/models/email_stats_stats_spec.rb +96 -0
  221. data/spec/models/event_metadata_spec.rb +24 -10
  222. data/spec/models/event_spec.rb +150 -0
  223. data/spec/models/geo_location_spec.rb +60 -0
  224. data/spec/models/ip_allocation_request_spec.rb +42 -0
  225. data/spec/models/ip_deletion_response_spec.rb +42 -0
  226. data/spec/models/ip_pool_create_request_spec.rb +66 -0
  227. data/spec/models/ip_pool_delete_response_spec.rb +42 -0
  228. data/spec/models/ip_pool_spec.rb +108 -0
  229. data/spec/models/ip_pool_update_request_spec.rb +54 -0
  230. data/spec/models/ip_spec.rb +168 -0
  231. data/spec/models/ip_update_request_spec.rb +36 -0
  232. data/spec/models/label_spec.rb +48 -0
  233. data/spec/models/member_spec.rb +102 -0
  234. data/spec/models/message_header_to_spec.rb +60 -0
  235. data/spec/models/message_spec.rb +210 -0
  236. data/spec/models/message_to_spec.rb +60 -0
  237. data/spec/models/operating_system_spec.rb +60 -0
  238. data/spec/models/person_spec.rb +42 -0
  239. data/spec/models/recipient_spec.rb +60 -0
  240. data/spec/models/smtp_auth_spec.rb +60 -0
  241. data/spec/models/stat_spec.rb +42 -0
  242. data/spec/models/stat_stats_spec.rb +96 -0
  243. data/spec/models/sub_account_spec.rb +130 -0
  244. data/spec/models/suppression_spec.rb +11 -9
  245. data/spec/models/third_party_sending_provider_spec.rb +96 -0
  246. data/spec/models/update_sub_account_spec.rb +36 -0
  247. data/spec/models/update_webhook_spec.rb +120 -0
  248. data/spec/models/user_agent_spec.rb +6 -4
  249. data/spec/models/webhook_spec.rb +144 -0
  250. data/spec/spec_helper.rb +3 -3
  251. metadata +288 -67
  252. data/config-ruby.json +0 -11
  253. data/docs/CountStat.md +0 -18
  254. data/docs/QEmailMessage.md +0 -70
  255. data/docs/QEvent.md +0 -42
  256. data/docs/RDSuppression.md +0 -18
  257. data/docs/RSuppression.md +0 -24
  258. data/docs/WebhookEvent.md +0 -20
  259. data/generate-libs.bash +0 -1
  260. data/lib/sendpost_ruby_sdk/models/city.rb +0 -250
  261. data/lib/sendpost_ruby_sdk/models/count_stat.rb +0 -214
  262. data/lib/sendpost_ruby_sdk/models/from.rb +0 -223
  263. data/lib/sendpost_ruby_sdk/models/os.rb +0 -250
  264. data/lib/sendpost_ruby_sdk/models/q_email_message.rb +0 -456
  265. data/lib/sendpost_ruby_sdk/models/q_event.rb +0 -324
  266. data/lib/sendpost_ruby_sdk/models/r_suppression.rb +0 -249
  267. data/lib/sendpost_ruby_sdk/models/rd_suppression.rb +0 -216
  268. data/lib/sendpost_ruby_sdk/models/reply_to.rb +0 -223
  269. data/lib/sendpost_ruby_sdk/models/suppression_email.rb +0 -214
  270. data/lib/sendpost_ruby_sdk/models/to.rb +0 -254
  271. data/lib/sendpost_ruby_sdk/models/webhook_event.rb +0 -223
  272. data/sendpost.yaml +0 -666
  273. data/sendpost_ruby_sdk.gemspec +0 -38
  274. data/spec/api_client_spec.rb +0 -228
  275. data/spec/configuration_spec.rb +0 -42
  276. data/spec/models/city_spec.rb +0 -58
  277. data/spec/models/count_stat_spec.rb +0 -34
  278. data/spec/models/from_spec.rb +0 -40
  279. data/spec/models/os_spec.rb +0 -58
  280. data/spec/models/q_email_message_spec.rb +0 -190
  281. data/spec/models/q_event_spec.rb +0 -106
  282. data/spec/models/r_suppression_spec.rb +0 -52
  283. data/spec/models/rd_suppression_spec.rb +0 -34
  284. data/spec/models/reply_to_spec.rb +0 -40
  285. data/spec/models/suppression_email_spec.rb +0 -34
  286. data/spec/models/to_spec.rb +0 -58
  287. data/spec/models/webhook_event_spec.rb +0 -40
data/README.md CHANGED
@@ -1,233 +1,668 @@
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
+ suppressions = suppression_api.get_suppression_list
524
+
525
+ suppressions.each do |suppression|
526
+ puts "Email: #{suppression.email}"
527
+ puts "Type: #{suppression.type}"
528
+ puts "---"
529
+ end
530
+ ```
157
531
 
158
- p opts
532
+ ## Error Handling
159
533
 
534
+ The SDK raises `Sendpost::ApiError` when API calls fail. Always wrap API calls in begin/rescue blocks:
535
+
536
+ ```ruby
160
537
  begin
161
- result = api_instance.delete_suppression(x_sub_account_api_key, opts)
162
- p result
538
+ responses = email_api.send_email(email_message)
539
+ puts "Success!"
163
540
  rescue Sendpost::ApiError => e
164
- puts "Exception when calling SuppressionApi->delete_suppression: #{e}"
541
+ puts "API Error:"
542
+ puts " Status Code: #{e.code}"
543
+ puts " Response: #{e.response_body}"
544
+
545
+ case e.code
546
+ when 401
547
+ puts " Issue: Invalid or missing API key"
548
+ when 403
549
+ puts " Issue: Resource already exists or insufficient permissions"
550
+ when 404
551
+ puts " Issue: Resource not found"
552
+ when 422
553
+ puts " Issue: Invalid request data"
554
+ when 500
555
+ puts " Issue: SendPost server error"
556
+ end
557
+ rescue StandardError => e
558
+ puts "Unexpected error: #{e.message}"
165
559
  end
166
560
  ```
167
561
 
168
- Count Suppression
562
+ ### Common HTTP Status Codes
563
+
564
+ | Code | Meaning | What to Do |
565
+ |------|---------|------------|
566
+ | 200 | Success | Everything worked |
567
+ | 401 | Unauthorized | Check your API key |
568
+ | 403 | Forbidden | Resource exists or no permission |
569
+ | 404 | Not Found | Resource ID doesn't exist |
570
+ | 422 | Invalid Data | Check your request body |
571
+ | 500 | Server Error | Try again later |
572
+ | 503 | Service Unavailable | SendPost is down for maintenance |
573
+
574
+ ## Complete Example
575
+
576
+ Here's a complete example that demonstrates common operations:
169
577
 
170
578
  ```ruby
579
+ #!/usr/bin/env ruby
171
580
  require 'sendpost_ruby_sdk'
172
- api_instance = Sendpost::SuppressionApi.new
581
+ require 'date'
173
582
 
174
- x_sub_account_api_key = 'your_api_key'
583
+ # Configuration
584
+ SUB_ACCOUNT_API_KEY = ENV['SENDPOST_SUB_ACCOUNT_API_KEY'] || 'your_key_here'
585
+ ACCOUNT_API_KEY = ENV['SENDPOST_ACCOUNT_API_KEY'] || 'your_key_here'
175
586
 
176
- opts = {
177
- from: '2023-06-07',
178
- to: '2023-08-04'
179
- }
587
+ # Setup Sub-Account API (for sending emails)
588
+ sub_config = Sendpost::Configuration.new
589
+ sub_config.host = 'https://api.sendpost.io/api/v1'
590
+ sub_config.api_key['X-SubAccount-ApiKey'] = SUB_ACCOUNT_API_KEY
180
591
 
181
- p opts
592
+ sub_api_client = Sendpost::ApiClient.new(sub_config)
593
+ email_api = Sendpost::EmailApi.new(sub_api_client)
594
+
595
+ # Setup Account API (for managing resources)
596
+ account_config = Sendpost::Configuration.new
597
+ account_config.host = 'https://api.sendpost.io/api/v1'
598
+ account_config.api_key['X-Account-ApiKey'] = ACCOUNT_API_KEY
599
+
600
+ account_api_client = Sendpost::ApiClient.new(account_config)
601
+
602
+ # Send an email
603
+ email_message = Sendpost::EmailMessageObject.new
604
+
605
+ from = Sendpost::EmailMessageFrom.new
606
+ from.email = 'sender@yourdomain.com'
607
+ from.name = 'Your Company'
608
+ email_message.from = from
609
+
610
+ to = Sendpost::EmailMessageToInner.new
611
+ to.email = 'recipient@example.com'
612
+ to.name = 'Recipient'
613
+ email_message.to = [to]
614
+
615
+ email_message.subject = 'Test Email'
616
+ email_message.html_body = '<h1>Hello!</h1><p>This is a test email.</p>'
617
+ email_message.text_body = 'Hello! This is a test email.'
618
+ email_message.track_opens = true
619
+ email_message.track_clicks = true
182
620
 
183
621
  begin
184
- result = api_instance.count(x_sub_account_api_key, opts)
185
- p result
622
+ responses = email_api.send_email(email_message)
623
+ message_id = responses[0].message_id
624
+ puts "Email sent! Message ID: #{message_id}"
625
+
626
+ # Get message details
627
+ message_api = Sendpost::MessageApi.new(account_api_client)
628
+ message = message_api.get_message_by_id(message_id)
629
+ puts "Message details retrieved successfully"
630
+
186
631
  rescue Sendpost::ApiError => e
187
- puts "Exception when calling SuppressionApi->count: #{e}"
632
+ puts "Error: #{e.code} - #{e.response_body}"
188
633
  end
189
634
  ```
190
635
 
191
- ## Documentation for API Endpoints
636
+ ## API Reference
637
+
638
+ For complete API documentation, see the [API Reference](docs/) directory. Key API classes:
639
+
640
+ - `Sendpost::EmailApi` - Send emails
641
+ - `Sendpost::DomainApi` - Manage domains
642
+ - `Sendpost::SubAccountApi` - Manage sub-accounts
643
+ - `Sendpost::StatsApi` - View statistics
644
+ - `Sendpost::WebhookApi` - Manage webhooks
645
+ - `Sendpost::SuppressionApi` - Manage suppressions
646
+ - `Sendpost::MessageApi` - Retrieve message details
192
647
 
193
- All URIs are relative to *https://api.sendpost.io/api/v1*
648
+ ## Requirements
194
649
 
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/ |
650
+ - Ruby 2.7 or higher
651
+ - Internet connection
203
652
 
653
+ ## Getting Help
204
654
 
205
- ## Documentation for Models
655
+ - **Documentation**: [https://docs.sendpost.io](https://docs.sendpost.io)
656
+ - **Email Support**: hello@sendpost.io
657
+ - **Website**: [https://sendpost.io](https://sendpost.io)
658
+ - **Developer Portal**: [https://app.sendpost.io](https://app.sendpost.io)
206
659
 
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)
660
+ ## License
228
661
 
662
+ This SDK is provided under the Unlicense. See LICENSE file for details.
229
663
 
230
- ## Documentation for Authorization
664
+ ## Version
231
665
 
232
- Endpoints do not require authorization.
666
+ Current version: 2.0.0
233
667
 
668
+ Generated by [OpenAPI Generator](https://openapi-generator.tech)