mailerlite-ruby 1.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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.env.example +1 -0
  3. data/.github/workflows/main.yml +17 -0
  4. data/.github/workflows/publish_gem.yml +21 -0
  5. data/.gitignore +60 -0
  6. data/.rspec +1 -0
  7. data/.rubocop.yml +36 -0
  8. data/CHANGELOG.md +1 -0
  9. data/Gemfile +4 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +801 -0
  12. data/Rakefile +8 -0
  13. data/bin/console +8 -0
  14. data/bin/setup +8 -0
  15. data/fixtures/automations/fetch.yml +61 -0
  16. data/fixtures/automations/get.yml +68 -0
  17. data/fixtures/automations/get_subscriber_activity.yml +71 -0
  18. data/fixtures/batch/request.yml +59 -0
  19. data/fixtures/campaigns/activity.yml +64 -0
  20. data/fixtures/campaigns/create.yml +65 -0
  21. data/fixtures/campaigns/delete.yml +53 -0
  22. data/fixtures/campaigns/fetch.yml +64 -0
  23. data/fixtures/campaigns/get.yml +68 -0
  24. data/fixtures/campaigns/languages.yml +60 -0
  25. data/fixtures/campaigns/schedule.yml +160 -0
  26. data/fixtures/campaigns/update.yml +159 -0
  27. data/fixtures/fields/create.yml +57 -0
  28. data/fixtures/fields/delete.yml +53 -0
  29. data/fixtures/fields/get.yml +60 -0
  30. data/fixtures/fields/update.yml +57 -0
  31. data/fixtures/forms/delete.yml +53 -0
  32. data/fixtures/forms/fetch.yml +60 -0
  33. data/fixtures/forms/fetch_subscribers.yml +59 -0
  34. data/fixtures/forms/list.yml +62 -0
  35. data/fixtures/forms/update.yml +60 -0
  36. data/fixtures/groups/assign_subscriber.yml +58 -0
  37. data/fixtures/groups/create.yml +58 -0
  38. data/fixtures/groups/delete.yml +53 -0
  39. data/fixtures/groups/get.yml +63 -0
  40. data/fixtures/groups/get_subscribers.yml +62 -0
  41. data/fixtures/groups/unassign_subscriber.yml +53 -0
  42. data/fixtures/groups/update.yml +58 -0
  43. data/fixtures/segments/delete.yml +53 -0
  44. data/fixtures/segments/get_subscribers.yml +61 -0
  45. data/fixtures/segments/list.yml +60 -0
  46. data/fixtures/segments/update.yml +58 -0
  47. data/fixtures/subscribers/create.yml +57 -0
  48. data/fixtures/subscribers/delete.yml +51 -0
  49. data/fixtures/subscribers/fetch.yml +68 -0
  50. data/fixtures/subscribers/fetch_count.yml +55 -0
  51. data/fixtures/subscribers/get.yml +62 -0
  52. data/fixtures/timezones/list.yml +575 -0
  53. data/fixtures/webhooks/create.yml +58 -0
  54. data/fixtures/webhooks/delete.yml +53 -0
  55. data/fixtures/webhooks/get.yml +58 -0
  56. data/fixtures/webhooks/list.yml +61 -0
  57. data/fixtures/webhooks/update.yml +58 -0
  58. data/lib/mailerlite/automations/automations.rb +62 -0
  59. data/lib/mailerlite/batch/batch.rb +24 -0
  60. data/lib/mailerlite/campaigns/campaigns.rb +216 -0
  61. data/lib/mailerlite/client.rb +35 -0
  62. data/lib/mailerlite/fields/fields.rb +61 -0
  63. data/lib/mailerlite/forms/forms.rb +73 -0
  64. data/lib/mailerlite/groups/groups.rb +90 -0
  65. data/lib/mailerlite/segments/segments.rb +62 -0
  66. data/lib/mailerlite/subscribers/subscribers.rb +116 -0
  67. data/lib/mailerlite/timezones/timezones.rb +22 -0
  68. data/lib/mailerlite/version.rb +5 -0
  69. data/lib/mailerlite/webhooks/webhooks.rb +67 -0
  70. data/lib/mailerlite-ruby.rb +3 -0
  71. data/lib/mailerlite.rb +13 -0
  72. data/mailerlite-ruby.gemspec +42 -0
  73. data/renovate.json +5 -0
  74. data/spec/automations_rspec.rb +63 -0
  75. data/spec/batches_rspec.rb +41 -0
  76. data/spec/campaigns_rspec.rb +155 -0
  77. data/spec/fields_rspec.rb +70 -0
  78. data/spec/forms_rspec.rb +81 -0
  79. data/spec/groups_rspec.rb +97 -0
  80. data/spec/segments_rspec.rb +70 -0
  81. data/spec/spec_helper.rb +101 -0
  82. data/spec/subscribers_rspec.rb +84 -0
  83. data/spec/timezones_rspec.rb +36 -0
  84. data/spec/webhooks_rspec.rb +86 -0
  85. metadata +303 -0
data/README.md ADDED
@@ -0,0 +1,801 @@
1
+ <a href="https://www.mailerlite.com"><img src="https://app.mailerlite.com/assets/images/logo-color.png" width="200px"/></a>
2
+
3
+ # MailerLite Ruby SDK
4
+
5
+ [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
6
+
7
+ ## Getting started
8
+
9
+ For more information about MailerLite API, please visit the [following link:](https://developers.mailerlite.com/docs/#mailerlite-api)
10
+
11
+ ### Authentication
12
+
13
+ API keys are a quick way to implement machine-to-machine authentication without any direct inputs from a human beyond initial setup.
14
+
15
+ For more information how to obtain an API key visit the [following link](https://developers.mailerlite.com/docs/#mailerlite-api)
16
+
17
+ ## Table of Contents
18
+
19
+ - [MailerLite Ruby SDK](#mailerlite-ruby-sdk)
20
+ - [Getting started](#getting-started)
21
+ - [Authentication](#authentication)
22
+ - [Table of Contents](#table-of-contents)
23
+ - [Installation](#installation)
24
+ - [Usage](#usage)
25
+ - [MailerLite Client](#mailerlite-client)
26
+ - [Subscribers](#subscribers)
27
+ - [List all subscribers](#list-all-subscribers)
28
+ - [Create a subscriber](#create-a-subscriber)
29
+ - [Update a subscriber](#update-a-subscriber)
30
+ - [Get a subscriber](#get-a-subscriber)
31
+ - [Delete a subscriber](#delete-a-subscriber)
32
+ - [Groups](#groups)
33
+ - [List all groups](#list-all-groups)
34
+ - [Create a group](#create-a-group)
35
+ - [Update a group](#update-a-group)
36
+ - [Delete a group](#delete-a-group)
37
+ - [Get subscribers belonging to a group](#get-subscribers-belonging-to-a-group)
38
+ - [Assign subscriber to a group](#assign-subscriber-to-a-group)
39
+ - [Unassign subscriber from a group](#unassign-subscriber-from-a-group)
40
+ - [Segments](#segments)
41
+ - [List all segments](#list-all-segments)
42
+ - [Update a segment](#update-a-segment)
43
+ - [Delete a segment](#delete-a-segment)
44
+ - [Get subscribers belonging to a segment](#get-subscribers-belonging-to-a-segment)
45
+ - [Fields](#fields)
46
+ - [List all fields](#list-all-fields)
47
+ - [Create a field](#create-a-field)
48
+ - [Update a field](#update-a-field)
49
+ - [Delete a field](#delete-a-field)
50
+ - [Automations](#automations)
51
+ - [List all automations](#list-all-automations)
52
+ - [Get an automation](#get-an-automation)
53
+ - [Get subscribers activity for an automation](#get-subscribers-activity-for-an-automation)
54
+ - [Campaigns](#campaigns)
55
+ - [List all campaigns](#list-all-campaigns)
56
+ - [Get a campaign](#get-a-campaign)
57
+ - [Create a campaign](#create-a-campaign)
58
+ - [Update a campaign](#update-a-campaign)
59
+ - [Schedule a campaign](#schedule-a-campaign)
60
+ - [Cancel a campaign](#cancel-a-campaign)
61
+ - [Delete a campaign](#delete-a-campaign)
62
+ - [Get subscribers activity for a campaign](#get-subscribers-activity-for-a-campaign)
63
+ - [Forms](#forms)
64
+ - [List all forms](#list-all-forms)
65
+ - [Get a form](#get-a-form)
66
+ - [Update a form](#update-a-form)
67
+ - [Delete a form](#delete-a-form)
68
+ - [Get subscribers who signed up to a specific form](#get-subscribers-who-signed-up-to-a-specific-form)
69
+ - [Batching](#batching)
70
+ - [Create a new batch](#create-a-new-batch)
71
+ - [Webhooks](#webhooks)
72
+ - [List all webhooks](#list-all-webhooks)
73
+ - [Get a webhook](#get-a-webhook)
74
+ - [Create a webhook](#create-a-webhook)
75
+ - [Update a webhook](#update-a-webhook)
76
+ - [Delete a webhook](#delete-a-webhook)
77
+ - [Timezones](#timezones)
78
+ - [Get a list of timezones](#get-a-list-of-timezones)
79
+ - [Campaign languages](#campaign-languages)
80
+ - [Get a list of languages](#get-a-list-of-languages)
81
+
82
+ ## Setup
83
+
84
+ ```bash
85
+ gem install mailerlite-ruby
86
+ ```
87
+
88
+ You will have to initalize it in your Ruby file with `require "mailerlite-ruby"`.
89
+
90
+ # Usage
91
+
92
+ This SDK requires that you either have `.env` file with `MAILERLITE_API_TOKEN` env variable or that your variable is enabled system wide (useful for Docker/Kubernetes). The example of how `MAILERLITE_API_TOKEN` should look like is in `.env.example`.
93
+
94
+ ## Subscribers
95
+
96
+ <a name="subscribers"></a>
97
+
98
+ ### List all subscribers
99
+
100
+ <a name="get-a-list-of-subscribers"></a>
101
+
102
+ ```ruby
103
+ require "mailerlite-ruby"
104
+
105
+ # Intialize the class
106
+ subscribers = Mailerlite::Subscribers.new
107
+
108
+ response = subscribers.list(filter: { status: 'active' })
109
+ ```
110
+
111
+ ### Create a subscriber
112
+
113
+ <a name="create-a-subscriber"></a>
114
+
115
+ ```ruby
116
+ require "mailerlite-ruby"
117
+
118
+ # Intialize the class
119
+ subscribers = Mailerlite::Subscribers.new
120
+
121
+ response = subscribers.create(email:'some@email.com', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
122
+ ```
123
+
124
+ ### Update a subscriber
125
+
126
+ <a name="update-a-subscriber"></a>
127
+
128
+ ```ruby
129
+ require "mailerlite-ruby"
130
+
131
+ # Intialize the class
132
+ subscribers = Mailerlite::Subscribers.new
133
+
134
+ response = subscribers.update(email:'some@email.com', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
135
+ ```
136
+
137
+ ### Get a subscriber
138
+
139
+ <a name="get-a-subscriber"></a>
140
+
141
+ ```ruby
142
+ require "mailerlite-ruby"
143
+
144
+ # Intialize the class
145
+ subscribers = Mailerlite::Subscribers.new
146
+
147
+ response = subscribers.get('some@email.com')
148
+ ```
149
+
150
+ ### Delete a subscriber
151
+
152
+ <a name="delete-a-subscriber"></a>
153
+
154
+ ```ruby
155
+ require "mailerlite-ruby"
156
+
157
+ # Intialize the class
158
+ subscribers = Mailerlite::Subscribers.new
159
+
160
+ subscriber_id = 1234567890
161
+
162
+ response = subscribers.delete(subscriber_id)
163
+ ```
164
+
165
+ ## Groups
166
+
167
+ <a name="groups"></a>
168
+
169
+ ### List all groups
170
+
171
+ <a name="list-all-groups"></a>
172
+
173
+ ```ruby
174
+ require "mailerlite-ruby"
175
+
176
+ # Intialize the class
177
+ groups = Mailerlite::Groups.new
178
+
179
+ response = groups.list(limit:10, page:1, filter:{'name': 'My'}, sort:'name')
180
+ ```
181
+
182
+ ### Create a group
183
+
184
+ <a name="create-a-group"></a>
185
+
186
+ ```ruby
187
+ require "mailerlite-ruby"
188
+
189
+ # Intialize the class
190
+ groups = Mailerlite::Groups.new
191
+
192
+ response = groups.create(name:'Group Name')
193
+ ```
194
+
195
+ ### Update a group
196
+
197
+ <a name="update-a-group"></a>
198
+
199
+ ```ruby
200
+ require "mailerlite-ruby"
201
+
202
+ # Intialize the class
203
+ groups = Mailerlite::Groups.new
204
+
205
+ response = groups.update(group_id:1234567, name:'My New Group')
206
+ ```
207
+
208
+ ### Delete a group
209
+
210
+ <a name="delete-a-group"></a>
211
+
212
+ ```ruby
213
+ require "mailerlite-ruby"
214
+
215
+ # Intialize the class
216
+ groups = Mailerlite::Groups.new
217
+
218
+ group_id = 1234567
219
+
220
+ response = groups.delete(group_id)
221
+ ```
222
+
223
+ ### Get subscribers belonging to a group
224
+
225
+ <a name="get-subscribers-belonging-to-a-group"></a>
226
+
227
+ ```ruby
228
+ require "mailerlite-ruby"
229
+
230
+ # Intialize the class
231
+ groups = Mailerlite::Groups.new
232
+
233
+ response = groups.get_subscribers(group_id:1234567, page:1, limit:10, filter:{'status': 'active'})
234
+ ```
235
+
236
+ ### Assign subscriber to a group
237
+
238
+ <a name="assign-subscribers-to-a-group"></a>
239
+
240
+ ```ruby
241
+ require "mailerlite-ruby"
242
+
243
+ # Intialize the class
244
+ groups = Mailerlite::Groups.new
245
+
246
+ response = subscribers.assign_subscriber(subscriber_id:111222, group_id:1234567)
247
+ ```
248
+
249
+ ### Unassign subscriber from a group
250
+
251
+ <a name="unassign-subscribers-from-a-group"></a>
252
+
253
+ ```ruby
254
+ require "mailerlite-ruby"
255
+
256
+ # Intialize the class
257
+ groups = Mailerlite::Groups.new
258
+
259
+ response = subscribers.unassign_subscriber(subscriber_id:111222, group_id:1234567)
260
+ ```
261
+
262
+ ## Segments
263
+
264
+ <a name="segments"></a>
265
+
266
+ ### List all segments
267
+
268
+ <a name="list-all-segments"></a>
269
+
270
+ ```ruby
271
+ require "mailerlite-ruby"
272
+
273
+ # Intialize the class
274
+ segments = Mailerlite::Segments.new
275
+
276
+ response = segments.list(limit:10, page:1)
277
+ ```
278
+
279
+ ### Update a segment
280
+
281
+ <a name="update-a-segment"></a>
282
+
283
+ ```ruby
284
+ require "mailerlite-ruby"
285
+
286
+ # Intialize the class
287
+ segments = Mailerlite::Segments.new
288
+
289
+ response = segments.update(segment_id: 123456, name:'My New Segment Name')
290
+ ```
291
+
292
+ ### Delete a segment
293
+
294
+ <a name="delete-a-segment"></a>
295
+
296
+ ```ruby
297
+ require "mailerlite-ruby"
298
+
299
+ # Intialize the class
300
+ segments = Mailerlite::Segments.new
301
+ segment_id = 123456
302
+
303
+ response = segments.delete(segment_id)
304
+ ```
305
+
306
+ ### Get subscribers belonging to a segment
307
+
308
+ <a name="get-subscribers-belonging-to-a-segment"></a>
309
+
310
+ ```ruby
311
+ require "mailerlite-ruby"
312
+
313
+ # Intialize the class
314
+ segments = Mailerlite::Segments.new
315
+
316
+ response = segments.get_subscribers(segment_id:123456, limit:10, filter:{'status': 'active'})
317
+ ```
318
+
319
+ ## Fields
320
+
321
+ <a name="fields"></a>
322
+
323
+ ### List all fields
324
+
325
+ <a name="list-all-fields"></a>
326
+
327
+ ```ruby
328
+ require "mailerlite-ruby"
329
+
330
+ # Intialize the class
331
+ fields = Mailerlite::Fields.new
332
+
333
+ response = fields.list(limit:10, page:1, sort:'name', filter:{'keyword': 'abc', 'type': 'text'})
334
+ ```
335
+
336
+ ### Create a field
337
+
338
+ <a name="create-a-field"></a>
339
+
340
+ ```ruby
341
+ require "mailerlite-ruby"
342
+
343
+ # Intialize the class
344
+ fields = Mailerlite::Fields.new
345
+
346
+ response = fields.create(name:'My Field', type:'text')
347
+ ```
348
+
349
+ ### Update a field
350
+
351
+ <a name="update-a-field"></a>
352
+
353
+ ```ruby
354
+ require "mailerlite-ruby"
355
+
356
+ # Intialize the class
357
+ fields = Mailerlite::Fields.new
358
+
359
+ response = fields.update(field_id:123345, name:'My New Field')
360
+ ```
361
+
362
+ ### Delete a field
363
+
364
+ <a name="delete-a-field"></a>
365
+
366
+ ```ruby
367
+ require "mailerlite-ruby"
368
+
369
+ # Intialize the class
370
+ fields = Mailerlite::Fields.new
371
+
372
+ field_id = 123456
373
+
374
+ response = fields.delete(field_id)
375
+ ```
376
+
377
+ ## Automations
378
+
379
+ <a name="automations"></a>
380
+
381
+ ### List all automations
382
+
383
+ <a name="list-all-automations"></a>
384
+
385
+ ```ruby
386
+ require "mailerlite-ruby"
387
+
388
+ # Intialize the class
389
+ automations = Mailerlite::Automations.new
390
+
391
+ response = automations.list(limit:10, page:1, filter:{'status': true, 'name': 'some name', 'group': 123456})
392
+ ```
393
+
394
+ ### Get an automation
395
+
396
+ <a name="get-an-automation"></a>
397
+
398
+ ```ruby
399
+ require "mailerlite-ruby"
400
+
401
+ # Intialize the class
402
+ automations = Mailerlite::Automations.new
403
+
404
+ automation_id = 123456
405
+
406
+ response = automations.get(automation_id)
407
+ ```
408
+
409
+ ### Get subscribers activity for an automation
410
+
411
+ <a name="get-subscribers-activity-for-an-automation"></a>
412
+
413
+ ```ruby
414
+ require "mailerlite-ruby"
415
+
416
+ # Intialize the class
417
+ automations = Mailerlite::Automations.new
418
+
419
+ response = automations.activity(automation_id:123456, page:1, limit:10, filter:{'status': 'active', 'date_from': '2022-12-20', 'date_to': '2022-12-31'})
420
+ ```
421
+
422
+ ## Campaigns
423
+
424
+ <a name="campaigns"></a>
425
+
426
+ ### List all campaigns
427
+
428
+ <a name="list-all-campaigns"></a>
429
+
430
+ ```ruby
431
+ require "mailerlite-ruby"
432
+
433
+ # Intialize the class
434
+ campaigns = Mailerlite::Campaigns.new
435
+
436
+ response = campaigns.list(limit:10, page:1, filter:{'status': 'ready', 'type': 'regular'})
437
+ ```
438
+
439
+ ### Get a campaign
440
+
441
+ <a name="get-a-campaign"></a>
442
+
443
+ ```ruby
444
+ require "mailerlite-ruby"
445
+
446
+ # Intialize the class
447
+ campaigns = Mailerlite::Campaigns.new
448
+
449
+ response = campaigns.get(campaign_id:123456)
450
+ ```
451
+
452
+ ### Create a campaign
453
+
454
+ <a name="create-a-campaign"></a>
455
+
456
+ ```ruby
457
+ require "mailerlite-ruby"
458
+
459
+ # Intialize the class
460
+ campaigns = Mailerlite::Campaigns.new
461
+
462
+ response = campaigns.create(
463
+ name: "Test Campaign",
464
+ language_id: 1,
465
+ type: "regular",
466
+ emails: [{
467
+ "subject": "This is a test campaign",
468
+ "from_name": "Test Man",
469
+ "from": "testuser@mailerlite.com",
470
+ "content": "Hi there, this is a test campaign!"
471
+ }]
472
+ )
473
+ ```
474
+
475
+ ### Update a campaign
476
+
477
+ <a name="update-a-campaign"></a>
478
+
479
+ ```ruby
480
+ require "mailerlite-ruby"
481
+
482
+ # Intialize the class
483
+ campaigns = Mailerlite::Campaigns.new
484
+
485
+ response = campaigns.update(
486
+ campaign_id: 1233455,
487
+ name: "New Campaign Name",
488
+ language_id: 2,
489
+ emails: [{
490
+ "subject": "This is a test campaign",
491
+ "from_name": "Test Man",
492
+ "from": "testuser@mailerlite.com",
493
+ "content": "Hi there, this is a test campaign!"
494
+ }]
495
+ )
496
+ ```
497
+
498
+ ### Schedule a campaign
499
+
500
+ <a name="schedule-a-campaign"></a>
501
+
502
+ ```ruby
503
+ require "mailerlite-ruby"
504
+
505
+ # Intialize the class
506
+ campaigns = Mailerlite::Campaigns.new
507
+
508
+ response = campaigns.schedule(
509
+ campaign_id: 123456,
510
+ delivery: "scheduled",
511
+ schedule: {
512
+ "date": "2022-12-31",
513
+ "hours": "22",
514
+ "minutes": "00"
515
+ }
516
+ )
517
+ ```
518
+
519
+ ### Cancel a campaign
520
+
521
+ <a name="cancel-a-campaign"></a>
522
+
523
+ ```ruby
524
+ require "mailerlite-ruby"
525
+
526
+ # Intialize the class
527
+ campaigns = Mailerlite::Campaigns.new
528
+
529
+ campaign_id = 123456
530
+
531
+ response = campaigns.cancel(campaign_id)
532
+ ```
533
+
534
+ ### Delete a campaign
535
+
536
+ <a name="cancel-a-campaign"></a>
537
+
538
+ ```ruby
539
+ require "mailerlite-ruby"
540
+
541
+ # Intialize the class
542
+ campaigns = Mailerlite::Campaigns.new
543
+
544
+ campaign_id = 123456
545
+
546
+ response = campaigns.delete(campaign_id)
547
+ ```
548
+
549
+ ### Get subscribers activity for a campaign
550
+
551
+ <a name="get-subscribers-activity-for-an-campaign"></a>
552
+
553
+ ```ruby
554
+ require "mailerlite-ruby"
555
+
556
+ # Intialize the class
557
+ campaigns = Mailerlite::Campaigns.new
558
+
559
+ campaign_id = 123456
560
+
561
+ response = campaigns.activity(campaign_id)
562
+ ```
563
+
564
+ ## Forms
565
+
566
+ <a name="forms"></a>
567
+
568
+ ### List all forms
569
+
570
+ <a name="list-all-forms"></a>
571
+
572
+ ```ruby
573
+ require "mailerlite-ruby"
574
+
575
+ # Intialize the class
576
+ forms = Mailerlite::Forms.new
577
+
578
+ response = forms.list(limit:10, page:1, sort:'name', filter:{'name': 'form name'})
579
+ ```
580
+
581
+ ### Get a form
582
+
583
+ <a name="get-a-form"></a>
584
+
585
+ ```ruby
586
+ require "mailerlite-ruby"
587
+
588
+ # Intialize the class
589
+ forms = Mailerlite::Forms.new
590
+
591
+ form_id = 123456
592
+
593
+ response = forms.get(form_id)
594
+ ```
595
+
596
+ ### Update a form
597
+
598
+ <a name="update-a-form"></a>
599
+
600
+ ```ruby
601
+ require "mailerlite-ruby"
602
+
603
+ # Intialize the class
604
+ forms = Mailerlite::Forms.new
605
+
606
+ response = forms.update(form_id:123456, name: 'My form Name')
607
+ ```
608
+
609
+ ### Delete a form
610
+
611
+ <a name="cancel-a-form"></a>
612
+
613
+ ```ruby
614
+ require "mailerlite-ruby"
615
+
616
+ # Intialize the class
617
+ forms = Mailerlite::Forms.new
618
+
619
+ form_id = 123456
620
+
621
+ response = forms.delete(form_id)
622
+ ```
623
+
624
+ ### Get subscribers who signed up to a specific form
625
+
626
+ <a name="get-subscribers-who-signed-up-to-a-specific-form"></a>
627
+
628
+ ```ruby
629
+ require "mailerlite-ruby"
630
+
631
+ # Intialize the class
632
+ forms = Mailerlite::Forms.new
633
+
634
+ response = forms.get_subscribers(form_id:123345, page:1, limit:10, filter:{'status': 'active'})
635
+ ```
636
+
637
+ ## Batching
638
+
639
+ <a name="batching"></a>
640
+
641
+ ### Create a new batch
642
+
643
+ <a name="create-a-new-batch"></a>
644
+
645
+ ```ruby
646
+ require "mailerlite-ruby"
647
+
648
+ # Intialize the class
649
+ batch = Mailerlite::Batch.new
650
+
651
+ response = batch.request(
652
+ requests: [
653
+ { method: 'GET', path: 'api/subscribers/list' },
654
+ { method: 'GET', path: 'api/campaigns/list' }
655
+ ]
656
+ )
657
+ ```
658
+
659
+ ## Webhooks
660
+
661
+ <a name="webhooks"></a>
662
+
663
+ ### List all webhooks
664
+
665
+ <a name="list-all-webhooks"></a>
666
+
667
+ ```ruby
668
+ require "mailerlite-ruby"
669
+
670
+ # Intialize the class
671
+ subscribers = Mailerlite::Subscribers.new
672
+
673
+ response = webhooks.list()
674
+ ```
675
+
676
+ ### Get a webhook
677
+
678
+ <a name="get-a-webhook"></a>
679
+
680
+ ```ruby
681
+ require "mailerlite-ruby"
682
+
683
+ # Intialize the class
684
+ subscribers = Mailerlite::Subscribers.new
685
+
686
+ webhook_id = 123456
687
+
688
+ response = webhooks.get(webhook_id)
689
+ ```
690
+
691
+ ### Create a webhook
692
+
693
+ <a name="create-a-webhook"></a>
694
+
695
+ ```ruby
696
+ require "mailerlite-ruby"
697
+
698
+ # Intialize the class
699
+ webhooks = Mailerlite::Webhooks.new
700
+
701
+ response = webhooks.create(
702
+ events:[
703
+ 'subscriber.created',
704
+ 'subscriber.updated',
705
+ 'subscriber.unsubscribed'
706
+ ],
707
+ url:'https://my-url.com',
708
+ name: 'Webhook name'
709
+ )
710
+ ```
711
+
712
+ ### Update a webhook
713
+
714
+ <a name="update-a-webhook"></a>
715
+
716
+ ```ruby
717
+ require "mailerlite-ruby"
718
+
719
+ # Intialize the class
720
+ webhooks = Mailerlite::Webhooks.new
721
+
722
+ response = webhooks.update(
723
+ webhook_id: 123456,
724
+ events:[
725
+ 'subscriber.created',
726
+ 'subscriber.updated',
727
+ 'subscriber.unsubscribed'
728
+ ],
729
+ url:'https://my-url.com',
730
+ name: 'Webhook name',
731
+ enabled: false
732
+ )
733
+ ```
734
+
735
+ ### Delete a webhook
736
+
737
+ <a name="cancel-a-webhook"></a>
738
+
739
+ ```ruby
740
+ require "mailerlite-ruby"
741
+
742
+ # Intialize the class
743
+ webhooks = Mailerlite::Webhooks.new
744
+
745
+ webhook_id = 123456
746
+
747
+ response = webhooks.delete(webhook_id)
748
+ ```
749
+
750
+ ## Timezones
751
+
752
+ <a name="timezones"></a>
753
+
754
+ ### Get a list of timezones
755
+
756
+ <a name="get-a-list-of-timezones"></a>
757
+
758
+ ```ruby
759
+ require "mailerlite-ruby"
760
+
761
+ # Intialize the class
762
+ timezones = Mailerlite::Timezones.new
763
+
764
+ response = timezones.list()
765
+ ```
766
+
767
+ ## Campaign languages
768
+
769
+ <a name="languages"></a>
770
+
771
+ ### Get a list of languages
772
+
773
+ <a name="get-a-list-of-languages"></a>
774
+
775
+ ```ruby
776
+ require "mailerlite-ruby"
777
+
778
+ # Intialize the class
779
+ campaigns = Mailerlite::Campaigns.new
780
+
781
+ response = campaigns.languages()
782
+ ```
783
+
784
+ # Testing
785
+
786
+ ```bash
787
+ bundle i
788
+ bundle exec rspec spec/*rspec.rb
789
+ ```
790
+
791
+ To run tests you would need to install gems using bundle and then run rspec via bundle to run all tests.
792
+ The fixtures for the test have been recorded using vcr and are available in the ./fixtures directory
793
+
794
+ # Generate Docs
795
+
796
+ ```bash
797
+ bundle i
798
+ bundle exec yardoc 'lib/**/*.rb'
799
+ ```
800
+
801
+ 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.