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.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +583 -145
- 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/DomainSpf.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 -13
- 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/StatStat.md +38 -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 +1 -1
- 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 +28 -3
- data/lib/sendpost_ruby_sdk/models/account_stats.rb +229 -0
- data/lib/sendpost_ruby_sdk/models/account_stats_stat.rb +311 -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 +15 -7
- data/lib/sendpost_ruby_sdk/models/auto_warmup_plan.rb +531 -0
- data/lib/sendpost_ruby_sdk/models/copy_to.rb +28 -19
- 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 +15 -7
- 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 +13 -7
- data/lib/sendpost_ruby_sdk/models/domain.rb +435 -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_spf.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 +121 -86
- 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 +40 -32
- 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 +59 -53
- data/lib/sendpost_ruby_sdk/models/geo_location.rb +256 -0
- data/lib/sendpost_ruby_sdk/models/ip.rb +643 -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 +357 -0
- data/lib/sendpost_ruby_sdk/models/ip_pool_create_request.rb +299 -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_stat.rb +322 -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 +40 -29
- 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 +13 -7
- 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 +73 -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_spf_spec.rb +48 -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_stat_spec.rb +96 -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 +295 -66
- 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 -250
- data/lib/sendpost_ruby_sdk/models/count_stat.rb +0 -214
- data/lib/sendpost_ruby_sdk/models/from.rb +0 -223
- data/lib/sendpost_ruby_sdk/models/os.rb +0 -250
- data/lib/sendpost_ruby_sdk/models/q_email_message.rb +0 -456
- data/lib/sendpost_ruby_sdk/models/q_event.rb +0 -324
- data/lib/sendpost_ruby_sdk/models/r_suppression.rb +0 -249
- data/lib/sendpost_ruby_sdk/models/rd_suppression.rb +0 -216
- data/lib/sendpost_ruby_sdk/models/reply_to.rb +0 -223
- data/lib/sendpost_ruby_sdk/models/suppression_email.rb +0 -214
- data/lib/sendpost_ruby_sdk/models/to.rb +0 -254
- data/lib/sendpost_ruby_sdk/models/webhook_event.rb +0 -223
- data/sendpost.yaml +0 -666
- 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,233 +1,671 @@
|
|
|
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
|
|
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
|
-
|
|
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
|
-
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
|
-
|
|
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
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
287
|
+
### Viewing Statistics
|
|
83
288
|
|
|
84
|
-
|
|
289
|
+
#### Get Sub-Account Statistics
|
|
85
290
|
|
|
86
291
|
```ruby
|
|
87
|
-
require '
|
|
88
|
-
|
|
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
|
-
|
|
327
|
+
#### Get Aggregate Statistics
|
|
91
328
|
|
|
92
|
-
|
|
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
|
-
|
|
343
|
+
#### Get Account-Level Statistics
|
|
95
344
|
|
|
96
|
-
|
|
345
|
+
```ruby
|
|
346
|
+
# Use StatsAApi for account-level stats
|
|
347
|
+
stats_a_api = Sendpost::StatsAApi.new(api_client)
|
|
97
348
|
|
|
98
|
-
|
|
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
|
-
|
|
103
|
-
|
|
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
|
-
|
|
360
|
+
### Managing Sub-Accounts
|
|
107
361
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
383
|
+
#### Create a Sub-Account
|
|
117
384
|
|
|
118
385
|
```ruby
|
|
119
|
-
|
|
120
|
-
|
|
386
|
+
new_sub_account = Sendpost::CreateSubAccountRequest.new
|
|
387
|
+
new_sub_account.name = "Client Account - #{Time.now.to_i}"
|
|
121
388
|
|
|
122
|
-
|
|
389
|
+
sub_account = sub_account_api.create_sub_account(new_sub_account)
|
|
123
390
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
395
|
+
#### Get Sub-Account Details
|
|
133
396
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
455
|
+
### Retrieving Message Details
|
|
143
456
|
|
|
144
457
|
```ruby
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
478
|
+
### Managing Suppressions
|
|
149
479
|
|
|
150
|
-
|
|
480
|
+
Suppressions are email addresses that should not receive emails (unsubscribed, bounced, etc.).
|
|
151
481
|
|
|
152
|
-
|
|
482
|
+
#### Add Suppressions
|
|
153
483
|
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
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
|
-
|
|
162
|
-
|
|
541
|
+
responses = email_api.send_email(email_message)
|
|
542
|
+
puts "Success!"
|
|
163
543
|
rescue Sendpost::ApiError => e
|
|
164
|
-
puts "
|
|
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
|
-
|
|
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
|
-
|
|
584
|
+
require 'date'
|
|
173
585
|
|
|
174
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
|
|
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
|
-
|
|
185
|
-
|
|
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 "
|
|
635
|
+
puts "Error: #{e.code} - #{e.response_body}"
|
|
188
636
|
end
|
|
189
637
|
```
|
|
190
638
|
|
|
191
|
-
##
|
|
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
|
-
|
|
651
|
+
## Requirements
|
|
194
652
|
|
|
195
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
667
|
+
## Version
|
|
231
668
|
|
|
232
|
-
|
|
669
|
+
Current version: 2.0.0
|
|
233
670
|
|
|
671
|
+
Generated by [OpenAPI Generator](https://openapi-generator.tech)
|