For more information about MailerLite API, please visit the following link:
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
- MailerLite Ruby SDK
gem install mailerlite-ruby
You will have to initalize it in your Ruby file with require "mailerlite-ruby"
.
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
:
MailerLite.configure do |config|
config.use_dotenv = true
end
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.fetch(filter: { status: 'active' }, cursor: 'cursor')
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.create(email:'[email protected]', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.update('[email protected]', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
subscribers.get('[email protected]')
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
subscriber_id = 1234567890
subscribers.delete(subscriber_id)
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
groups.get(limit:10, page:1, filter:{'name': 'My'}, sort:'name')
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
groups.create(name:'Group Name')
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
groups.update(group_id:1234567, name:'My New Group')
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
group_id = 1234567
groups.delete(group_id)
require "mailerlite-ruby"
# Initialize the class
groups = MailerLite::Groups.new
groups.get_subscribers(group_id: 1234567, cursor: 'cursor', limit: 10, filter: { 'status': 'active' })
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
groups.assign_subscriber(subscriber:111222, group_id:1234567)
require "mailerlite-ruby"
# Intialize the class
groups = MailerLite::Groups.new
groups.unassign_subscriber(subscriber:111222, group_id:1234567)
require "mailerlite-ruby"
# Intialize the class
segments = MailerLite::Segments.new
segments.list(limit:10, page:1)
require "mailerlite-ruby"
# Intialize the class
segments = MailerLite::Segments.new
segments.update(segment_id: 123456, name:'My New Segment Name')
require "mailerlite-ruby"
# Intialize the class
segments = MailerLite::Segments.new
segment_id = 123456
segments.delete(segment_id)
require "mailerlite-ruby"
# Intialize the class
segments = MailerLite::Segments.new
segments.get_subscribers(segment_id:123456, limit:10, filter:{'status': 'active'})
require "mailerlite-ruby"
# Intialize the class
fields = MailerLite::Fields.new
fields.get(limit:10, page:1, sort:'name', filter:{'keyword': 'abc', 'type': 'text'})
require "mailerlite-ruby"
# Intialize the class
fields = MailerLite::Fields.new
fields.create(name:'My Field', type:'text')
require "mailerlite-ruby"
# Intialize the class
fields = MailerLite::Fields.new
fields.update(field_id:123345, name:'My New Field')
require "mailerlite-ruby"
# Intialize the class
fields = MailerLite::Fields.new
field_id = 123456
fields.delete(field_id)
require "mailerlite-ruby"
# Intialize the class
automations = MailerLite::Automations.new
automations.get(limit:10, page:1, filter:{'status': true, 'name': 'some name', 'group': 123456})
require "mailerlite-ruby"
# Intialize the class
automations = MailerLite::Automations.new
automation_id = 123456
automations.fetch(automation_id)
require "mailerlite-ruby"
# Intialize the class
automations = MailerLite::Automations.new
automations.get_subscriber_activity(automation_id:123456, page:1, limit:10, filter:{'status': 'active', 'date_from': '2022-12-20', 'date_to': '2022-12-31'})
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.get(limit:10, page:1, filter:{'status': 'ready', 'type': 'regular'})
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.fetch(campaign_id:123456)
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!"
}]
)
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!"
}]
)
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"
}
)
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.cancel(campaign_id)
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.delete(campaign_id)
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.activity(campaign_id)
require "mailerlite-ruby"
# Intialize the class
forms = MailerLite::Forms.new
forms.list(limit:10, page:1, sort:'name', filter:{'name': 'form name'})
require "mailerlite-ruby"
# Intialize the class
forms = MailerLite::Forms.new
form_id = 123456
forms.fetch(form_id)
require "mailerlite-ruby"
# Intialize the class
forms = MailerLite::Forms.new
forms.update(form_id:123456, name: 'My form Name')
require "mailerlite-ruby"
# Intialize the class
forms = MailerLite::Forms.new
form_id = 123456
forms.delete(form_id)
require "mailerlite-ruby"
# Intialize the class
forms = MailerLite::Forms.new
forms.fetch_subscribers(form_id:123345, page:1, limit:10, filter:{'status': 'active'})
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' }
]
)
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
webhooks.list()
require "mailerlite-ruby"
# Intialize the class
subscribers = MailerLite::Subscribers.new
webhook_id = 123456
webhooks.get(webhook_id)
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'
)
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
)
require "mailerlite-ruby"
# Intialize the class
webhooks = MailerLite::Webhooks.new
webhook_id = 123456
webhooks.delete(webhook_id)
require "mailerlite-ruby"
# Intialize the class
timezones = MailerLite::Timezones.new
timezones.list()
require "mailerlite-ruby"
# Intialize the class
campaigns = MailerLite::Campaigns.new
campaigns.languages()
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
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.