MailerLite Ruby SDK
Getting started
For more information about MailerLite API, please visit the following link:
Authentication
API keys are a quick way to implement machine-to-machine authentication without any direct inputs from a human beyond initial setup.
For more information how to obtain an API key visit the following link
Table of Contents
- MailerLite Ruby SDK
Setup
bash
gem install mailerlite-ruby
You will have to initalize it in your Ruby file with require "mailerlite-ruby"
.
Usage
This SDK requires that you have the MAILERLITE_API_TOKEN
environment variable set. You can set this variable in a .env
file or enable it system-wide (useful for Docker/Kubernetes). The example of how MAILERLITE_API_TOKEN
should look like is in .env.example
.
If you want to use dotenv
to manage your environment variables, you can configure the mailerlite
gem to load dotenv
:
ruby
MailerLite.configure do |config|
config.use_dotenv = true
end
Subscribers
List all subscribers
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.fetch(filter: { status: ‘active’ }, cursor: ‘cursor’) ```
Create a subscriber
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.create(email:’[email protected]’, fields: ‘John’, ‘last_name’: ‘Doe’, ip_address:’1.2.3.4’, optin_ip:’1.2.3.4’) ```
Update a subscriber
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.update(‘[email protected]’, fields: ‘John’, ‘last_name’: ‘Doe’, ip_address:’1.2.3.4’, optin_ip:’1.2.3.4’) ```
Get a subscriber
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.get(‘[email protected]’) ```
Delete a subscriber
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
subscriber_id = 1234567890
subscribers.delete(subscriber_id) ```
Groups
List all groups
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
groups.get(limit:10, page:1, filter:‘My’, sort:’name’) ```
Create a group
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
groups.create(name:’Group Name’) ```
Update a group
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
groups.update(group_id:1234567, name:’My New Group’) ```
Delete a group
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
group_id = 1234567
groups.delete(group_id) ```
Get subscribers belonging to a group
```ruby require “mailerlite-ruby”
Initialize the class
groups = MailerLite::Groups.new
groups.get_subscribers(group_id: 1234567, cursor: ‘cursor’, limit: 10, filter: { ‘status’: ‘active’ }) ```
Assign subscriber to a group
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
groups.assign_subscriber(subscriber:111222, group_id:1234567) ```
Unassign subscriber from a group
```ruby require “mailerlite-ruby”
Intialize the class
groups = MailerLite::Groups.new
groups.unassign_subscriber(subscriber:111222, group_id:1234567) ```
Segments
List all segments
```ruby require “mailerlite-ruby”
Intialize the class
segments = MailerLite::Segments.new
segments.list(limit:10, page:1) ```
Update a segment
```ruby require “mailerlite-ruby”
Intialize the class
segments = MailerLite::Segments.new
segments.update(segment_id: 123456, name:’My New Segment Name’) ```
Delete a segment
```ruby require “mailerlite-ruby”
Intialize the class
segments = MailerLite::Segments.new segment_id = 123456
segments.delete(segment_id) ```
Get subscribers belonging to a segment
```ruby require “mailerlite-ruby”
Intialize the class
segments = MailerLite::Segments.new
segments.get_subscribers(segment_id:123456, limit:10, filter:‘active’) ```
Fields
List all fields
```ruby require “mailerlite-ruby”
Intialize the class
fields = MailerLite::Fields.new
fields.get(limit:10, page:1, sort:’name’, filter:‘abc’, ‘type’: ‘text’) ```
Create a field
```ruby require “mailerlite-ruby”
Intialize the class
fields = MailerLite::Fields.new
fields.create(name:’My Field’, type:’text’) ```
Update a field
```ruby require “mailerlite-ruby”
Intialize the class
fields = MailerLite::Fields.new
fields.update(field_id:123345, name:’My New Field’) ```
Delete a field
```ruby require “mailerlite-ruby”
Intialize the class
fields = MailerLite::Fields.new
field_id = 123456
fields.delete(field_id) ```
Automations
List all automations
```ruby require “mailerlite-ruby”
Intialize the class
automations = MailerLite::Automations.new
automations.get(limit:10, page:1, filter:true, ‘name’: ‘some name’, ‘group’: 123456) ```
Get an automation
```ruby require “mailerlite-ruby”
Intialize the class
automations = MailerLite::Automations.new
automation_id = 123456
automations.fetch(automation_id) ```
Get subscribers activity for an automation
```ruby require “mailerlite-ruby”
Intialize the class
automations = MailerLite::Automations.new
automations.get_subscriber_activity(automation_id:123456, page:1, limit:10, filter:‘active’, ‘date_from’: ‘2022-12-20’, ‘date_to’: ‘2022-12-31’) ```
Campaigns
List all campaigns
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.get(limit:10, page:1, filter:‘ready’, ‘type’: ‘regular’) ```
Get a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.fetch(campaign_id:123456) ```
Create a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.create( name: “Test Campaign”, language_id: 1, type: “regular”, emails: [{ “subject”: “This is a test campaign”, “from_name”: “Test Man”, “from”: “[email protected]”, “content”: “Hi there, this is a test campaign!” }] ) ```
Update a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.update( campaign_id: 1233455, name: “New Campaign Name”, language_id: 2, emails: [{ “subject”: “This is a test campaign”, “from_name”: “Test Man”, “from”: “[email protected]”, “content”: “Hi there, this is a test campaign!” }] ) ```
Schedule a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.schedule( campaign_id: 123456, delivery: “scheduled”, schedule: { “date”: “2022-12-31”, “hours”: “22”, “minutes”: “00” } ) ```
Cancel a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.cancel(campaign_id) ```
Delete a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.delete(campaign_id) ```
Get subscribers activity for a campaign
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.activity(campaign_id) ```
Forms
List all forms
```ruby require “mailerlite-ruby”
Intialize the class
forms = MailerLite::Forms.new
forms.list(limit:10, page:1, sort:’name’, filter:‘form name’) ```
Get a form
```ruby require “mailerlite-ruby”
Intialize the class
forms = MailerLite::Forms.new
form_id = 123456
forms.fetch(form_id) ```
Update a form
```ruby require “mailerlite-ruby”
Intialize the class
forms = MailerLite::Forms.new
forms.update(form_id:123456, name: ‘My form Name’) ```
Delete a form
```ruby require “mailerlite-ruby”
Intialize the class
forms = MailerLite::Forms.new
form_id = 123456
forms.delete(form_id) ```
Get subscribers who signed up to a specific form
```ruby require “mailerlite-ruby”
Intialize the class
forms = MailerLite::Forms.new
forms.fetch_subscribers(form_id:123345, page:1, limit:10, filter:‘active’) ```
Batching
Create a new batch
```ruby require “mailerlite-ruby”
Intialize the class
batch = MailerLite::Batch.new
batch.request( requests: [ { method: ‘GET’, path: ‘api/subscribers/list’ }, { method: ‘GET’, path: ‘api/campaigns/list’ } ] ) ```
Webhooks
List all webhooks
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
webhooks.list() ```
Get a webhook
```ruby require “mailerlite-ruby”
Intialize the class
subscribers = MailerLite::Subscribers.new
webhook_id = 123456
webhooks.get(webhook_id) ```
Create a webhook
```ruby require “mailerlite-ruby”
Intialize the class
webhooks = MailerLite::Webhooks.new
webhooks.create( events:[ ‘subscriber.created’, ‘subscriber.updated’, ‘subscriber.unsubscribed’ ], url:’https://my-url.com’, name: ‘Webhook name’ ) ```
Update a webhook
```ruby require “mailerlite-ruby”
Intialize the class
webhooks = MailerLite::Webhooks.new
webhooks.update( webhook_id: 123456, events:[ ‘subscriber.created’, ‘subscriber.updated’, ‘subscriber.unsubscribed’ ], url:’https://my-url.com’, name: ‘Webhook name’, enabled: false ) ```
Delete a webhook
```ruby require “mailerlite-ruby”
Intialize the class
webhooks = MailerLite::Webhooks.new
webhook_id = 123456
webhooks.delete(webhook_id) ```
Timezones
Get a list of timezones
```ruby require “mailerlite-ruby”
Intialize the class
timezones = MailerLite::Timezones.new
timezones.list() ```
Campaign languages
Get a list of languages
```ruby require “mailerlite-ruby”
Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.languages() ```
Testing
bash
bundle i
bundle exec rspec spec/*rspec.rb
To run tests you would need to install gems using bundle and then run rspec via bundle to run all tests. The fixtures for the test have been recorded using vcr and are available in the ./fixtures directory
Generate Docs
bash
bundle i
bundle exec yardoc 'lib/**/*.rb'
This will generate html docs in the doc directory which can be opened up in any browser. Navigate to index.html and open it up.