sendpost_ruby_sdk 1.0.1 → 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.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +626 -82
- data/docs/AccountStats.md +20 -0
- data/docs/AccountStatsStat.md +38 -0
- data/docs/AggregateStat.md +38 -0
- data/docs/AggregateStats.md +38 -0
- data/docs/AggregatedEmailStats.md +38 -0
- data/docs/Attachment.md +4 -4
- data/docs/AutoWarmupPlan.md +80 -0
- data/docs/CopyTo.md +5 -5
- data/docs/CreateDomainRequest.md +18 -0
- data/docs/CreateSubAccountRequest.md +18 -0
- data/docs/CreateSuppressionRequest.md +24 -0
- data/docs/CreateSuppressionRequestHardBounceInner.md +18 -0
- data/docs/{SuppressionEmail.md → CreateSuppressionRequestManualInner.md} +3 -3
- data/docs/CreateSuppressionRequestSpamComplaintInner.md +18 -0
- data/docs/CreateSuppressionRequestUnsubscribeInner.md +18 -0
- data/docs/CreateWebhookRequest.md +46 -0
- data/docs/DeleteResponse.md +2 -2
- data/docs/DeleteSubAccountResponse.md +20 -0
- data/docs/DeleteSuppression200ResponseInner.md +20 -0
- data/docs/DeleteSuppressionRequest.md +18 -0
- data/docs/DeleteWebhookResponse.md +20 -0
- data/docs/Device.md +1 -1
- data/docs/Domain.md +56 -0
- data/docs/DomainApi.md +301 -0
- data/docs/DomainDkim.md +22 -0
- data/docs/DomainDmarc.md +22 -0
- data/docs/DomainGpt.md +22 -0
- data/docs/DomainReturnPath.md +22 -0
- data/docs/DomainTrack.md +22 -0
- data/docs/EIP.md +18 -0
- data/docs/{From.md → EmailAddress.md} +4 -4
- data/docs/EmailApi.md +38 -32
- data/docs/EmailMessage.md +30 -24
- data/docs/EmailMessageFrom.md +20 -0
- data/docs/EmailMessageObject.md +46 -0
- data/docs/{ReplyTo.md → EmailMessageReplyTo.md} +5 -5
- data/docs/EmailMessageToInner.md +26 -0
- data/docs/EmailMessageToInnerBccInner.md +22 -0
- data/docs/EmailMessageToInnerCcInner.md +22 -0
- data/docs/EmailMessageWithTemplate.md +52 -0
- data/docs/EmailResponse.md +8 -8
- data/docs/EmailStats.md +20 -0
- data/docs/EmailStatsStats.md +38 -0
- data/docs/Event.md +56 -0
- data/docs/EventMetadata.md +13 -9
- data/docs/{City.md → GeoLocation.md} +8 -8
- data/docs/IP.md +62 -0
- data/docs/IPAllocationRequest.md +20 -0
- data/docs/IPApi.md +375 -0
- data/docs/IPDeletionResponse.md +20 -0
- data/docs/IPPool.md +42 -0
- data/docs/IPPoolCreateRequest.md +28 -0
- data/docs/IPPoolDeleteResponse.md +20 -0
- data/docs/IPPoolUpdateRequest.md +24 -0
- data/docs/IPPoolsApi.md +361 -0
- data/docs/IPUpdateRequest.md +18 -0
- data/docs/Label.md +22 -0
- data/docs/Member.md +40 -0
- data/docs/Message.md +76 -0
- data/docs/MessageApi.md +79 -0
- data/docs/MessageHeaderTo.md +26 -0
- data/docs/MessageTo.md +26 -0
- data/docs/{Os.md → OperatingSystem.md} +7 -7
- data/docs/Person.md +20 -0
- data/docs/{To.md → Recipient.md} +7 -7
- data/docs/SMTPAuth.md +26 -0
- data/docs/Stat.md +20 -0
- data/docs/StatStats.md +38 -0
- data/docs/StatsAApi.md +307 -0
- data/docs/StatsApi.md +237 -0
- data/docs/SubAccount.md +48 -0
- data/docs/SubAccountApi.md +375 -0
- data/docs/Suppression.md +8 -8
- data/docs/SuppressionApi.md +76 -134
- data/docs/ThirdPartySendingProvider.md +38 -0
- data/docs/UpdateSubAccount.md +18 -0
- data/docs/UpdateWebhook.md +46 -0
- data/docs/UserAgent.md +4 -4
- data/docs/Webhook.md +54 -0
- data/docs/WebhookApi.md +375 -0
- data/git_push.sh +2 -2
- data/lib/sendpost_ruby_sdk/api/domain_api.rb +290 -0
- data/lib/sendpost_ruby_sdk/api/email_api.rb +33 -35
- data/lib/sendpost_ruby_sdk/api/ip_api.rb +356 -0
- data/lib/sendpost_ruby_sdk/api/ip_pools_api.rb +356 -0
- data/lib/sendpost_ruby_sdk/api/message_api.rb +85 -0
- data/lib/sendpost_ruby_sdk/api/stats_a_api.rb +320 -0
- data/lib/sendpost_ruby_sdk/api/stats_api.rb +260 -0
- data/lib/sendpost_ruby_sdk/api/sub_account_api.rb +356 -0
- data/lib/sendpost_ruby_sdk/api/suppression_api.rb +81 -141
- data/lib/sendpost_ruby_sdk/api/webhook_api.rb +356 -0
- data/lib/sendpost_ruby_sdk/api_client.rb +26 -24
- data/lib/sendpost_ruby_sdk/api_error.rb +3 -3
- data/lib/sendpost_ruby_sdk/configuration.rb +39 -12
- data/lib/sendpost_ruby_sdk/models/account_stats.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/account_stats_stat.rb +310 -0
- data/lib/sendpost_ruby_sdk/models/aggregate_stat.rb +321 -0
- data/lib/sendpost_ruby_sdk/models/aggregate_stats.rb +310 -0
- data/lib/sendpost_ruby_sdk/models/aggregated_email_stats.rb +321 -0
- data/lib/sendpost_ruby_sdk/models/attachment.rb +27 -24
- data/lib/sendpost_ruby_sdk/models/auto_warmup_plan.rb +531 -0
- data/lib/sendpost_ruby_sdk/models/copy_to.rb +40 -36
- data/lib/sendpost_ruby_sdk/models/create_domain_request.rb +221 -0
- data/lib/sendpost_ruby_sdk/models/create_sub_account_request.rb +221 -0
- data/lib/sendpost_ruby_sdk/models/create_suppression_request.rb +259 -0
- data/lib/sendpost_ruby_sdk/models/create_suppression_request_hard_bounce_inner.rb +220 -0
- data/lib/sendpost_ruby_sdk/models/create_suppression_request_manual_inner.rb +220 -0
- data/lib/sendpost_ruby_sdk/models/create_suppression_request_spam_complaint_inner.rb +220 -0
- data/lib/sendpost_ruby_sdk/models/create_suppression_request_unsubscribe_inner.rb +220 -0
- data/lib/sendpost_ruby_sdk/models/create_webhook_request.rb +361 -0
- data/lib/sendpost_ruby_sdk/models/delete_response.rb +27 -24
- data/lib/sendpost_ruby_sdk/models/delete_sub_account_response.rb +231 -0
- data/lib/sendpost_ruby_sdk/models/delete_suppression200_response_inner.rb +231 -0
- data/lib/sendpost_ruby_sdk/models/delete_suppression_request.rb +222 -0
- data/lib/sendpost_ruby_sdk/models/delete_webhook_response.rb +231 -0
- data/lib/sendpost_ruby_sdk/models/device.rb +25 -24
- data/lib/sendpost_ruby_sdk/models/domain.rb +406 -0
- data/lib/sendpost_ruby_sdk/models/domain_dkim.rb +239 -0
- data/lib/sendpost_ruby_sdk/models/domain_dmarc.rb +239 -0
- data/lib/sendpost_ruby_sdk/models/domain_gpt.rb +239 -0
- data/lib/sendpost_ruby_sdk/models/domain_return_path.rb +239 -0
- data/lib/sendpost_ruby_sdk/models/domain_track.rb +239 -0
- data/lib/sendpost_ruby_sdk/models/eip.rb +238 -0
- data/lib/sendpost_ruby_sdk/models/email_address.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/email_message.rb +133 -103
- data/lib/sendpost_ruby_sdk/models/email_message_from.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/email_message_object.rb +354 -0
- data/lib/sendpost_ruby_sdk/models/email_message_reply_to.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/email_message_to_inner.rb +262 -0
- data/lib/sendpost_ruby_sdk/models/email_message_to_inner_bcc_inner.rb +240 -0
- data/lib/sendpost_ruby_sdk/models/email_message_to_inner_cc_inner.rb +240 -0
- data/lib/sendpost_ruby_sdk/models/email_message_with_template.rb +392 -0
- data/lib/sendpost_ruby_sdk/models/email_response.rb +52 -49
- data/lib/sendpost_ruby_sdk/models/email_stats.rb +230 -0
- data/lib/sendpost_ruby_sdk/models/email_stats_stats.rb +321 -0
- data/lib/sendpost_ruby_sdk/models/event.rb +393 -0
- data/lib/sendpost_ruby_sdk/models/event_metadata.rb +77 -58
- data/lib/sendpost_ruby_sdk/models/geo_location.rb +256 -0
- data/lib/sendpost_ruby_sdk/models/ip.rb +491 -0
- data/lib/sendpost_ruby_sdk/models/ip_allocation_request.rb +266 -0
- data/lib/sendpost_ruby_sdk/models/ip_deletion_response.rb +265 -0
- data/lib/sendpost_ruby_sdk/models/ip_pool.rb +335 -0
- data/lib/sendpost_ruby_sdk/models/ip_pool_create_request.rb +269 -0
- data/lib/sendpost_ruby_sdk/models/ip_pool_delete_response.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/ip_pool_update_request.rb +249 -0
- data/lib/sendpost_ruby_sdk/models/ip_update_request.rb +238 -0
- data/lib/sendpost_ruby_sdk/models/label.rb +241 -0
- data/lib/sendpost_ruby_sdk/models/member.rb +331 -0
- data/lib/sendpost_ruby_sdk/models/message.rb +523 -0
- data/lib/sendpost_ruby_sdk/models/message_header_to.rb +268 -0
- data/lib/sendpost_ruby_sdk/models/message_to.rb +268 -0
- data/lib/sendpost_ruby_sdk/models/operating_system.rb +256 -0
- data/lib/sendpost_ruby_sdk/models/person.rb +231 -0
- data/lib/sendpost_ruby_sdk/models/recipient.rb +263 -0
- data/lib/sendpost_ruby_sdk/models/smtp_auth.rb +261 -0
- data/lib/sendpost_ruby_sdk/models/stat.rb +230 -0
- data/lib/sendpost_ruby_sdk/models/stat_stats.rb +321 -0
- data/lib/sendpost_ruby_sdk/models/sub_account.rb +415 -0
- data/lib/sendpost_ruby_sdk/models/suppression.rb +52 -46
- data/lib/sendpost_ruby_sdk/models/third_party_sending_provider.rb +310 -0
- data/lib/sendpost_ruby_sdk/models/update_sub_account.rb +221 -0
- data/lib/sendpost_ruby_sdk/models/update_webhook.rb +368 -0
- data/lib/sendpost_ruby_sdk/models/user_agent.rb +25 -24
- data/lib/sendpost_ruby_sdk/models/webhook.rb +405 -0
- data/lib/sendpost_ruby_sdk/version.rb +4 -4
- data/lib/sendpost_ruby_sdk.rb +72 -15
- data/spec/api/domain_api_spec.rb +85 -0
- data/spec/api/email_api_spec.rb +9 -9
- data/spec/api/ip_api_spec.rb +98 -0
- data/spec/api/ip_pools_api_spec.rb +98 -0
- data/spec/api/message_api_spec.rb +47 -0
- data/spec/api/stats_a_api_spec.rb +89 -0
- data/spec/api/stats_api_spec.rb +78 -0
- data/spec/api/sub_account_api_spec.rb +98 -0
- data/spec/api/suppression_api_spec.rb +22 -34
- data/spec/api/webhook_api_spec.rb +98 -0
- data/spec/models/account_stats_spec.rb +42 -0
- data/spec/models/account_stats_stat_spec.rb +96 -0
- data/spec/models/aggregate_stat_spec.rb +96 -0
- data/spec/models/aggregate_stats_spec.rb +96 -0
- data/spec/models/aggregated_email_stats_spec.rb +96 -0
- data/spec/models/attachment_spec.rb +6 -4
- data/spec/models/auto_warmup_plan_spec.rb +222 -0
- data/spec/models/copy_to_spec.rb +8 -6
- data/spec/models/create_domain_request_spec.rb +36 -0
- data/spec/models/create_sub_account_request_spec.rb +36 -0
- data/spec/models/create_suppression_request_hard_bounce_inner_spec.rb +36 -0
- data/spec/models/create_suppression_request_manual_inner_spec.rb +36 -0
- data/spec/models/create_suppression_request_spam_complaint_inner_spec.rb +36 -0
- data/spec/models/create_suppression_request_spec.rb +54 -0
- data/spec/models/create_suppression_request_unsubscribe_inner_spec.rb +36 -0
- data/spec/models/create_webhook_request_spec.rb +120 -0
- data/spec/models/delete_response_spec.rb +6 -4
- data/spec/models/delete_sub_account_response_spec.rb +42 -0
- data/spec/models/delete_suppression200_response_inner_spec.rb +42 -0
- data/spec/models/delete_suppression_request_spec.rb +36 -0
- data/spec/models/delete_webhook_response_spec.rb +42 -0
- data/spec/models/device_spec.rb +6 -4
- data/spec/models/domain_dkim_spec.rb +48 -0
- data/spec/models/domain_dmarc_spec.rb +48 -0
- data/spec/models/domain_gpt_spec.rb +48 -0
- data/spec/models/domain_return_path_spec.rb +48 -0
- data/spec/models/domain_spec.rb +150 -0
- data/spec/models/domain_track_spec.rb +48 -0
- data/spec/models/eip_spec.rb +36 -0
- data/spec/models/email_address_spec.rb +42 -0
- data/spec/models/email_message_from_spec.rb +42 -0
- data/spec/models/email_message_object_spec.rb +120 -0
- data/spec/models/email_message_reply_to_spec.rb +42 -0
- data/spec/models/email_message_spec.rb +37 -17
- data/spec/models/email_message_to_inner_bcc_inner_spec.rb +48 -0
- data/spec/models/email_message_to_inner_cc_inner_spec.rb +48 -0
- data/spec/models/email_message_to_inner_spec.rb +60 -0
- data/spec/models/email_message_with_template_spec.rb +138 -0
- data/spec/models/email_response_spec.rb +10 -8
- data/spec/models/email_stats_spec.rb +42 -0
- data/spec/models/email_stats_stats_spec.rb +96 -0
- data/spec/models/event_metadata_spec.rb +24 -10
- data/spec/models/event_spec.rb +150 -0
- data/spec/models/geo_location_spec.rb +60 -0
- data/spec/models/ip_allocation_request_spec.rb +42 -0
- data/spec/models/ip_deletion_response_spec.rb +42 -0
- data/spec/models/ip_pool_create_request_spec.rb +66 -0
- data/spec/models/ip_pool_delete_response_spec.rb +42 -0
- data/spec/models/ip_pool_spec.rb +108 -0
- data/spec/models/ip_pool_update_request_spec.rb +54 -0
- data/spec/models/ip_spec.rb +168 -0
- data/spec/models/ip_update_request_spec.rb +36 -0
- data/spec/models/label_spec.rb +48 -0
- data/spec/models/member_spec.rb +102 -0
- data/spec/models/message_header_to_spec.rb +60 -0
- data/spec/models/message_spec.rb +210 -0
- data/spec/models/message_to_spec.rb +60 -0
- data/spec/models/operating_system_spec.rb +60 -0
- data/spec/models/person_spec.rb +42 -0
- data/spec/models/recipient_spec.rb +60 -0
- data/spec/models/smtp_auth_spec.rb +60 -0
- data/spec/models/stat_spec.rb +42 -0
- data/spec/models/stat_stats_spec.rb +96 -0
- data/spec/models/sub_account_spec.rb +130 -0
- data/spec/models/suppression_spec.rb +11 -9
- data/spec/models/third_party_sending_provider_spec.rb +96 -0
- data/spec/models/update_sub_account_spec.rb +36 -0
- data/spec/models/update_webhook_spec.rb +120 -0
- data/spec/models/user_agent_spec.rb +6 -4
- data/spec/models/webhook_spec.rb +144 -0
- data/spec/spec_helper.rb +3 -3
- metadata +288 -67
- data/config-ruby.json +0 -11
- data/docs/CountStat.md +0 -18
- data/docs/QEmailMessage.md +0 -70
- data/docs/QEvent.md +0 -42
- data/docs/RDSuppression.md +0 -18
- data/docs/RSuppression.md +0 -24
- data/docs/WebhookEvent.md +0 -20
- data/generate-libs.bash +0 -1
- data/lib/sendpost_ruby_sdk/models/city.rb +0 -255
- data/lib/sendpost_ruby_sdk/models/count_stat.rb +0 -219
- data/lib/sendpost_ruby_sdk/models/from.rb +0 -228
- data/lib/sendpost_ruby_sdk/models/os.rb +0 -255
- data/lib/sendpost_ruby_sdk/models/q_email_message.rb +0 -461
- data/lib/sendpost_ruby_sdk/models/q_event.rb +0 -329
- data/lib/sendpost_ruby_sdk/models/r_suppression.rb +0 -254
- data/lib/sendpost_ruby_sdk/models/rd_suppression.rb +0 -221
- data/lib/sendpost_ruby_sdk/models/reply_to.rb +0 -228
- data/lib/sendpost_ruby_sdk/models/suppression_email.rb +0 -219
- data/lib/sendpost_ruby_sdk/models/to.rb +0 -259
- data/lib/sendpost_ruby_sdk/models/webhook_event.rb +0 -228
- data/sendpost.yaml +0 -662
- data/sendpost_ruby_sdk.gemspec +0 -38
- data/spec/api_client_spec.rb +0 -228
- data/spec/configuration_spec.rb +0 -42
- data/spec/models/city_spec.rb +0 -58
- data/spec/models/count_stat_spec.rb +0 -34
- data/spec/models/from_spec.rb +0 -40
- data/spec/models/os_spec.rb +0 -58
- data/spec/models/q_email_message_spec.rb +0 -190
- data/spec/models/q_event_spec.rb +0 -106
- data/spec/models/r_suppression_spec.rb +0 -52
- data/spec/models/rd_suppression_spec.rb +0 -34
- data/spec/models/reply_to_spec.rb +0 -40
- data/spec/models/suppression_email_spec.rb +0 -34
- data/spec/models/to_spec.rb +0 -58
- data/spec/models/webhook_event_spec.rb +0 -40
data/README.md
CHANGED
|
@@ -1,124 +1,668 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SendPost Ruby SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A Ruby gem for sending emails and managing your SendPost account programmatically.
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
17
|
+
### Install from RubyGems (Recommended)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
11
20
|
gem install sendpost_ruby_sdk
|
|
12
21
|
```
|
|
13
22
|
|
|
14
|
-
|
|
23
|
+
### Install from Source
|
|
15
24
|
|
|
16
|
-
|
|
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.)
|
|
57
|
+
|
|
58
|
+
### 2. Configure the SDK
|
|
17
59
|
|
|
18
60
|
```ruby
|
|
19
61
|
require 'sendpost_ruby_sdk'
|
|
20
62
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
+
```
|
|
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
|
|
37
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
|
-
|
|
40
|
-
|
|
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 "
|
|
109
|
+
puts "Error sending email: #{e.code} - #{e.response_body}"
|
|
43
110
|
end
|
|
44
|
-
|
|
45
111
|
```
|
|
46
112
|
|
|
47
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
|
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 "---"
|
|
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)
|
|
281
|
+
|
|
282
|
+
puts "Domain: #{domain.name}"
|
|
283
|
+
puts "Verified: #{domain.verified}"
|
|
284
|
+
puts "DKIM: #{domain.dkim.text_value}" if domain.dkim
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Viewing Statistics
|
|
288
|
+
|
|
289
|
+
#### Get Sub-Account Statistics
|
|
290
|
+
|
|
291
|
+
```ruby
|
|
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
|
+
```
|
|
326
|
+
|
|
327
|
+
#### Get Aggregate Statistics
|
|
328
|
+
|
|
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
|
+
```
|
|
342
|
+
|
|
343
|
+
#### Get Account-Level Statistics
|
|
344
|
+
|
|
345
|
+
```ruby
|
|
346
|
+
# Use StatsAApi for account-level stats
|
|
347
|
+
stats_a_api = Sendpost::StatsAApi.new(api_client)
|
|
348
|
+
|
|
349
|
+
account_stats = stats_a_api.get_all_account_stats(from_date, to_date)
|
|
350
|
+
|
|
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
|
+
```
|
|
359
|
+
|
|
360
|
+
### Managing Sub-Accounts
|
|
361
|
+
|
|
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 "---"
|
|
380
|
+
end
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
#### Create a Sub-Account
|
|
384
|
+
|
|
385
|
+
```ruby
|
|
386
|
+
new_sub_account = Sendpost::CreateSubAccountRequest.new
|
|
387
|
+
new_sub_account.name = "Client Account - #{Time.now.to_i}"
|
|
388
|
+
|
|
389
|
+
sub_account = sub_account_api.create_sub_account(new_sub_account)
|
|
390
|
+
|
|
391
|
+
puts "Created! ID: #{sub_account.id}"
|
|
392
|
+
puts "API Key: #{sub_account.api_key}"
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
#### Get Sub-Account Details
|
|
396
|
+
|
|
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 "---"
|
|
452
|
+
end
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### Retrieving Message Details
|
|
456
|
+
|
|
457
|
+
```ruby
|
|
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
|
+
```
|
|
477
|
+
|
|
478
|
+
### Managing Suppressions
|
|
479
|
+
|
|
480
|
+
Suppressions are email addresses that should not receive emails (unsubscribed, bounced, etc.).
|
|
481
|
+
|
|
482
|
+
#### Add Suppressions
|
|
483
|
+
|
|
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
|
+
```
|
|
531
|
+
|
|
532
|
+
## Error Handling
|
|
533
|
+
|
|
534
|
+
The SDK raises `Sendpost::ApiError` when API calls fail. Always wrap API calls in begin/rescue blocks:
|
|
535
|
+
|
|
536
|
+
```ruby
|
|
73
537
|
begin
|
|
74
|
-
|
|
75
|
-
|
|
538
|
+
responses = email_api.send_email(email_message)
|
|
539
|
+
puts "Success!"
|
|
76
540
|
rescue Sendpost::ApiError => e
|
|
77
|
-
puts "
|
|
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}"
|
|
78
559
|
end
|
|
560
|
+
```
|
|
561
|
+
|
|
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:
|
|
577
|
+
|
|
578
|
+
```ruby
|
|
579
|
+
#!/usr/bin/env ruby
|
|
580
|
+
require 'sendpost_ruby_sdk'
|
|
581
|
+
require 'date'
|
|
582
|
+
|
|
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'
|
|
586
|
+
|
|
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
|
|
79
591
|
|
|
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
|
|
620
|
+
|
|
621
|
+
begin
|
|
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
|
+
|
|
631
|
+
rescue Sendpost::ApiError => e
|
|
632
|
+
puts "Error: #{e.code} - #{e.response_body}"
|
|
633
|
+
end
|
|
80
634
|
```
|
|
81
635
|
|
|
82
|
-
##
|
|
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
|
|
83
647
|
|
|
84
|
-
|
|
648
|
+
## Requirements
|
|
85
649
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*Sendpost::EmailApi* | [**send_email**](docs/EmailApi.md#send_email) | **POST** /subaccount/email/ |
|
|
89
|
-
*Sendpost::EmailApi* | [**send_email_with_template**](docs/EmailApi.md#send_email_with_template) | **POST** /subaccount/email/template |
|
|
90
|
-
*Sendpost::SuppressionApi* | [**count**](docs/SuppressionApi.md#count) | **GET** /subaccount/suppression/count |
|
|
91
|
-
*Sendpost::SuppressionApi* | [**create_suppressions**](docs/SuppressionApi.md#create_suppressions) | **POST** /subaccount/suppression/ |
|
|
92
|
-
*Sendpost::SuppressionApi* | [**delete_suppression**](docs/SuppressionApi.md#delete_suppression) | **DELETE** /subaccount/suppression/ |
|
|
93
|
-
*Sendpost::SuppressionApi* | [**get_suppressions**](docs/SuppressionApi.md#get_suppressions) | **GET** /subaccount/suppression/ |
|
|
650
|
+
- Ruby 2.7 or higher
|
|
651
|
+
- Internet connection
|
|
94
652
|
|
|
653
|
+
## Getting Help
|
|
95
654
|
|
|
96
|
-
|
|
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)
|
|
97
659
|
|
|
98
|
-
|
|
99
|
-
- [Sendpost::City](docs/City.md)
|
|
100
|
-
- [Sendpost::CopyTo](docs/CopyTo.md)
|
|
101
|
-
- [Sendpost::CountStat](docs/CountStat.md)
|
|
102
|
-
- [Sendpost::DeleteResponse](docs/DeleteResponse.md)
|
|
103
|
-
- [Sendpost::Device](docs/Device.md)
|
|
104
|
-
- [Sendpost::EmailMessage](docs/EmailMessage.md)
|
|
105
|
-
- [Sendpost::EmailResponse](docs/EmailResponse.md)
|
|
106
|
-
- [Sendpost::EventMetadata](docs/EventMetadata.md)
|
|
107
|
-
- [Sendpost::From](docs/From.md)
|
|
108
|
-
- [Sendpost::Os](docs/Os.md)
|
|
109
|
-
- [Sendpost::QEmailMessage](docs/QEmailMessage.md)
|
|
110
|
-
- [Sendpost::QEvent](docs/QEvent.md)
|
|
111
|
-
- [Sendpost::RDSuppression](docs/RDSuppression.md)
|
|
112
|
-
- [Sendpost::RSuppression](docs/RSuppression.md)
|
|
113
|
-
- [Sendpost::ReplyTo](docs/ReplyTo.md)
|
|
114
|
-
- [Sendpost::Suppression](docs/Suppression.md)
|
|
115
|
-
- [Sendpost::SuppressionEmail](docs/SuppressionEmail.md)
|
|
116
|
-
- [Sendpost::To](docs/To.md)
|
|
117
|
-
- [Sendpost::UserAgent](docs/UserAgent.md)
|
|
118
|
-
- [Sendpost::WebhookEvent](docs/WebhookEvent.md)
|
|
660
|
+
## License
|
|
119
661
|
|
|
662
|
+
This SDK is provided under the Unlicense. See LICENSE file for details.
|
|
120
663
|
|
|
121
|
-
##
|
|
664
|
+
## Version
|
|
122
665
|
|
|
123
|
-
|
|
666
|
+
Current version: 2.0.0
|
|
124
667
|
|
|
668
|
+
Generated by [OpenAPI Generator](https://openapi-generator.tech)
|