mailchimp-rest-api 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6bb470c7bf3ad957b57ec7bd7c19299e5594de1de05fc4a24b683da82ee3c998
4
- data.tar.gz: d7951ce1b9194282a03b9cd1743b513c11003c3c50f9edce9e839ee38370d795
3
+ metadata.gz: d94ff493013bfef1b4e8ea9d47fb94558674a3305edd3ce8d4ec244bb110aae4
4
+ data.tar.gz: f163f90b0ca0cfb0774ea113f12aa49883d960bd2656310b657ce8910abce48a
5
5
  SHA512:
6
- metadata.gz: 3a59055a5853bd0d54741202c67029f6bbd4bc6f940a65f0fba3150fa36f747d54658aad02da3cd64b9840f51df88e06177af54f44aaaea7af057f877df0c935
7
- data.tar.gz: e9b0b7630353f19c94ea8edaaad563288f4adb48c497ff05f2d40779c771d1a341d824eb2bdae1a6ca64dd544a1be0077af5bfbbc5ab9a6c6c658361ce69643c
6
+ metadata.gz: 779286dce0873745097ecec8dc2373cab38e2ab9d1347b280fd0a8d0595c7f639c871490b54fd35a31f071045e56d47829854946df7a00110310fae80353dac8
7
+ data.tar.gz: ac36c92d833b6130466f183775d633c5500dc3421bb19999241b5248aa0f055fdf125f0d22d952ed2ebada15989c62f485bcc86e6950814e83aa0c7de1677b25
data/README.md CHANGED
@@ -169,6 +169,16 @@ Most resources support this APIs:
169
169
  - `delete` - Delete item
170
170
  - `each` - Iterate through items
171
171
 
172
+ ### MailchimpAPI.audiences
173
+
174
+ - `list` - List audiences (lists)
175
+ - `create(list_id, body: {})` - Add audience
176
+ - `show(list_id)` - Show audience
177
+ - `update(list_id, body: {})` - Update audience
178
+ - `delete(list_id)` - Delete audience
179
+ - `each(list_id)` - Iterate audiences
180
+ - `batch_update_members(list_id, body: {})` - Batch update audience members
181
+
172
182
  ### MailchimpAPI.audience_members
173
183
 
174
184
  - `list(list_id)` - List members
@@ -186,6 +196,15 @@ Most resources support this APIs:
186
196
  - `create(list_id, email, body: { tags: [{name: 'x'}] })` - Add tags
187
197
  - `each(list_id, email)` - Iterate tags
188
198
 
199
+ ### MailchimpAPI.audience_merge_fields
200
+
201
+ - `list(list_id)` - List merge fields
202
+ - `create(list_id, body: { name: 'x' })` - Create merge field
203
+ - `show(list_id, field_id)` - Get merge field
204
+ - `update(list_id, field_id, body: { name: 'x' })` - Update merge field
205
+ - `delete(list_id, field_id)` - Delete merge field
206
+ - `each(list_id)` - Iterate merge fields
207
+
189
208
  ### MailchimpAPI.audience_segments
190
209
 
191
210
  - `list(list_id)` - List segments
@@ -228,7 +247,30 @@ Most resources support this APIs:
228
247
  - `show(list_id, webhook_id)` - Get webhook
229
248
  - `update(list_id, webhook_id, body: { events: {} })` - Update webhook
230
249
  - `delete(list_id, webhook_id)` - Delete webhook
231
- - `each(list_id)` - Iterate webhooks
250
+ - `each(list_id)` - Iterate webh
251
+
252
+ ### MailchimpAPI.campaigns
253
+
254
+ - `list` - List campaigns
255
+ - `create(body: {})` - Create campaign
256
+ - `show(campaign_id)` - Get campaign
257
+ - `update(campaign_id, body: {})` - Update campaign
258
+ - `delete(campaign_id)` - Delete campaign
259
+ - `each` - Iterate campaigns
260
+
261
+ ### MailchimpAPI.campaign_content
262
+
263
+ - `show(campaign_id)` - Shows campaign content
264
+ - `update(campaign_id, body: {})` - Updates HTML and text campaign content
265
+
266
+ ### MailchimpAPI.campaign_folders
267
+
268
+ - `list` - List campaign folders
269
+ - `create(body: {})` - Create campaign folder
270
+ - `show(folder_id)` - Get campaign folder
271
+ - `update(folder_id, body: {})` - Update campaign folder
272
+ - `delete(folder_id)` - Delete campaign folder
273
+ - `each` - Iterate campaign folders
232
274
 
233
275
  ### Pagination
234
276
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
@@ -36,6 +36,14 @@ module MailchimpAPI
36
36
  Audience::Members.new(self)
37
37
  end
38
38
 
39
+ # Returns a new instance of Audience::MergeFields
40
+ # @return [Audience::MergeFields] Merge Fields resource
41
+ # @example
42
+ # client.audience_merge_fields # => #<MailchimpAPI::Audience::MergeFields>
43
+ def audience_merge_fields
44
+ Audience::MergeFields.new(self)
45
+ end
46
+
39
47
  # Returns a new instance of Audience::Segments
40
48
  # @return [Audience::Segments] Segments resource
41
49
  # @example
@@ -59,6 +67,38 @@ module MailchimpAPI
59
67
  def audience_webhooks
60
68
  Audience::Webhooks.new(self)
61
69
  end
70
+
71
+ # Returns a new instance of Audiences
72
+ # @return [Audiences] Audiences resource
73
+ # @example
74
+ # client.audiences # => #<MailchimpAPI::Audiences>
75
+ def audiences
76
+ Audiences.new(self)
77
+ end
78
+
79
+ # Returns a new instance of Campaign::Content
80
+ # @return [Campaign::Content] Campaign::Content resource
81
+ # @example
82
+ # client.campaign_content # => #<MailchimpAPI::Campaign::Content>
83
+ def campaign_content
84
+ Campaign::Content.new(self)
85
+ end
86
+
87
+ # Returns a new instance of CampaignFolders
88
+ # @return [CampaignFolders] CampaignFolders resource
89
+ # @example
90
+ # client.campaign_folders # => #<MailchimpAPI::CampaignFolders>
91
+ def campaign_folders
92
+ CampaignFolders.new(self)
93
+ end
94
+
95
+ # Returns a new instance of Campaigns
96
+ # @return [Campaigns] Campaigns resource
97
+ # @example
98
+ # client.campaigns # => #<MailchimpAPI::Campaigns>
99
+ def campaigns
100
+ Campaigns.new(self)
101
+ end
62
102
  end
63
103
  end
64
104
  end
@@ -9,13 +9,13 @@ module MailchimpAPI
9
9
  module APIs
10
10
  include Pagination::ListEachItemHelper
11
11
 
12
- # List all interest categories for a specific list
12
+ # List interest categories for a specific list
13
13
  # @param list_id [String] The ID of the Mailchimp list
14
14
  # @param query [Hash] Optional query parameters
15
15
  # @param body [Hash] Optional request body
16
16
  # @param headers [Hash] Optional request headers
17
- # @return [Hash] API response containing interest categories
18
- # @example Get all interest categories for a list
17
+ # @return [Response] API response containing interest categories
18
+ # @example Get interest categories for a list
19
19
  # interest_categories.list('list123')
20
20
  def list(list_id, query: nil, body: nil, headers: nil)
21
21
  path = "/lists/#{list_id}/interest-categories"
@@ -29,7 +29,7 @@ module MailchimpAPI
29
29
  # @option body [String] :title The title of the interest category
30
30
  # @option body [String] :type The type of interest category (checkboxes, dropdown, radio, hidden)
31
31
  # @param headers [Hash] Optional request headers
32
- # @return [Hash] API response containing the created interest category
32
+ # @return [Response] API response containing the created interest category
33
33
  # @example Create a checkbox interest category
34
34
  # interest_categories.create('list123', body: {
35
35
  # title: 'Favorite Products',
@@ -46,7 +46,7 @@ module MailchimpAPI
46
46
  # @param query [Hash] Optional query parameters
47
47
  # @param body [Hash] Optional request body
48
48
  # @param headers [Hash] Optional request headers
49
- # @return [Hash] API response containing interest category details
49
+ # @return [Response] API response containing interest category details
50
50
  # @example Get details for an interest category
51
51
  # interest_categories.show('list123', 'category456')
52
52
  def show(list_id, interest_category_id, query: nil, body: nil, headers: nil)
@@ -60,7 +60,7 @@ module MailchimpAPI
60
60
  # @param query [Hash] Optional query parameters
61
61
  # @param body [Hash] Optional request body
62
62
  # @param headers [Hash] Optional request headers
63
- # @return [Boolean] True if successful
63
+ # @return [Response] API response
64
64
  # @example Delete an interest category
65
65
  # interest_categories.delete('list123', 'category456')
66
66
  def delete(list_id, interest_category_id, query: nil, body: nil, headers: nil)
@@ -74,7 +74,7 @@ module MailchimpAPI
74
74
  # @param query [Hash] Optional query parameters
75
75
  # @param body [Hash] Updated interest category attributes
76
76
  # @param headers [Hash] Optional request headers
77
- # @return [Hash] API response containing updated interest category
77
+ # @return [Response] API response containing updated interest category
78
78
  # @example Update an interest category title
79
79
  # interest_categories.update('list123', 'category456', body: {
80
80
  # title: 'Updated Category Name'
@@ -9,14 +9,14 @@ module MailchimpAPI
9
9
  module APIs
10
10
  include Pagination::ListEachItemHelper
11
11
 
12
- # List all interests in a specific interest category
12
+ # List interests in a specific interest category
13
13
  # @param list_id [String] The ID of the Mailchimp list
14
14
  # @param interest_category_id [String] The ID of the interest category
15
15
  # @param query [Hash] Optional query parameters
16
16
  # @param body [Hash] Optional request body
17
17
  # @param headers [Hash] Optional request headers
18
- # @return [Hash] API response containing interests
19
- # @example Get all interests in a category
18
+ # @return [Response] API response containing interests
19
+ # @example Get interests in a category
20
20
  # interests.list('list123', 'category456')
21
21
  def list(list_id, interest_category_id, query: nil, body: nil, headers: nil)
22
22
  path = "/lists/#{list_id}/interest-categories/#{interest_category_id}/interests"
@@ -30,7 +30,7 @@ module MailchimpAPI
30
30
  # @param body [Hash] Interest attributes
31
31
  # @option body [String] :name The name of the interest
32
32
  # @param headers [Hash] Optional request headers
33
- # @return [Hash] API response containing the created interest
33
+ # @return [Response] API response containing the created interest
34
34
  # @example Create a new interest
35
35
  # interests.create('list123', 'category456', body: {
36
36
  # name: 'Product Updates'
@@ -47,7 +47,7 @@ module MailchimpAPI
47
47
  # @param query [Hash] Optional query parameters
48
48
  # @param body [Hash] Optional request body
49
49
  # @param headers [Hash] Optional request headers
50
- # @return [Hash] API response containing interest details
50
+ # @return [Response] API response containing interest details
51
51
  # @example Get details for an interest
52
52
  # interests.show('list123', 'category456', 'interest789')
53
53
  def show(list_id, interest_category_id, interest_id, query: nil, body: nil, headers: nil)
@@ -62,7 +62,7 @@ module MailchimpAPI
62
62
  # @param query [Hash] Optional query parameters
63
63
  # @param body [Hash] Optional request body
64
64
  # @param headers [Hash] Optional request headers
65
- # @return [Boolean] True if successful
65
+ # @return [Response] API response
66
66
  # @example Delete an interest
67
67
  # interests.delete('list123', 'category456', 'interest789')
68
68
  def delete(list_id, interest_category_id, interest_id, query: nil, body: nil, headers: nil)
@@ -77,7 +77,7 @@ module MailchimpAPI
77
77
  # @param query [Hash] Optional query parameters
78
78
  # @param body [Hash] Updated interest attributes
79
79
  # @param headers [Hash] Optional request headers
80
- # @return [Hash] API response containing updated interest
80
+ # @return [Response] API response containing updated interest
81
81
  # @example Update an interest name
82
82
  # interests.update('list123', 'category456', 'interest789', body: {
83
83
  # name: 'Updated Interest Name'
@@ -10,14 +10,14 @@ module MailchimpAPI
10
10
  include Pagination::ListEachItemHelper
11
11
  include MailchimpAPI::Audience::Utils
12
12
 
13
- # List all tags for a specific member
13
+ # List tags for a specific member
14
14
  # @param list_id [String] The ID of the Mailchimp list
15
15
  # @param email [String] The member's email address
16
16
  # @param query [Hash] Optional query parameters
17
17
  # @param body [Hash] Optional request body
18
18
  # @param headers [Hash] Optional request headers
19
- # @return [Hash] API response containing member tags
20
- # @example Get all tags for a member
19
+ # @return [Response] API response containing member tags
20
+ # @example Get tags for a member
21
21
  # member_tags.list('list123', 'user@example.com')
22
22
  def list(list_id, email, query: nil, body: nil, headers: nil)
23
23
  path = "/lists/#{list_id}/members/#{subscriber_hash(email)}/tags"
@@ -31,7 +31,7 @@ module MailchimpAPI
31
31
  # @param body [Hash] Tags to add/update
32
32
  # @option body [Array<Hash>] :tags Array of tag objects
33
33
  # @param headers [Hash] Optional request headers
34
- # @return [Hash] API response containing update status
34
+ # @return [Response] API response containing update status
35
35
  # @example Add tags to a member
36
36
  # member_tags.create('list123', 'user@example.com', body: {
37
37
  # tags: [
@@ -11,14 +11,14 @@ module MailchimpAPI
11
11
  include Pagination::ListEachItemHelper
12
12
  include MailchimpAPI::Audience::Utils
13
13
 
14
- # List all members in a specific list
14
+ # List members in a specific list
15
15
  # @param list_id [String] The ID of the Mailchimp list
16
16
  # @param query [Hash] Optional query parameters
17
17
  # @option query [Integer] :count Number of records to return (default: 10)
18
18
  # @option query [Integer] :offset Number of records to skip (default: 0)
19
19
  # @param body [Hash] Optional request body
20
20
  # @param headers [Hash] Optional request headers
21
- # @return [Hash] API response containing list members
21
+ # @return [Response] API response containing list members
22
22
  # @example Get first 10 members of a list
23
23
  # members.list('list123')
24
24
  # @example Get members 11-20
@@ -36,7 +36,7 @@ module MailchimpAPI
36
36
  # @option body [String] :status Subscription status (subscribed, unsubscribed, etc.)
37
37
  # @option body [Hash] :merge_fields Merge fields like FNAME, LNAME
38
38
  # @param headers [Hash] Optional request headers
39
- # @return [Hash] API response containing the created member
39
+ # @return [Response] API response containing the created member
40
40
  # @example Add a new subscriber
41
41
  # members.create('list123', body: {
42
42
  # email_address: 'new@example.com',
@@ -54,7 +54,7 @@ module MailchimpAPI
54
54
  # @param query [Hash] Optional query parameters
55
55
  # @param body [Hash] Optional request body
56
56
  # @param headers [Hash] Optional request headers
57
- # @return [Hash] API response containing member details
57
+ # @return [Response] API response containing member details
58
58
  # @example Get member details
59
59
  # members.show('list123', 'user@example.com')
60
60
  def show(list_id, email, query: nil, body: nil, headers: nil)
@@ -68,7 +68,7 @@ module MailchimpAPI
68
68
  # @param query [Hash] Optional query parameters
69
69
  # @param body [Hash] Optional request body
70
70
  # @param headers [Hash] Optional request headers
71
- # @return [Boolean] True if successful
71
+ # @return [Response] API response
72
72
  # @example Archive a member
73
73
  # members.archive('list123', 'user@example.com')
74
74
  def archive(list_id, email, query: nil, body: nil, headers: nil)
@@ -82,7 +82,7 @@ module MailchimpAPI
82
82
  # @param query [Hash] Optional query parameters
83
83
  # @param body [Hash] Updated member attributes
84
84
  # @param headers [Hash] Optional request headers
85
- # @return [Hash] API response containing updated member
85
+ # @return [Response] API response containing updated member
86
86
  # @example Update member status
87
87
  # members.update('list123', 'user@example.com', body: {
88
88
  # status: 'unsubscribed'
@@ -98,7 +98,7 @@ module MailchimpAPI
98
98
  # @param query [Hash] Optional query parameters
99
99
  # @param body [Hash] Member attributes
100
100
  # @param headers [Hash] Optional request headers
101
- # @return [Hash] API response containing the member
101
+ # @return [Response] API response containing the member
102
102
  # @example Add or update a member
103
103
  # members.add_or_update('list123', 'user@example.com', body: {
104
104
  # status: 'subscribed',
@@ -115,7 +115,7 @@ module MailchimpAPI
115
115
  # @param query [Hash] Optional query parameters
116
116
  # @param body [Hash] Optional request body
117
117
  # @param headers [Hash] Optional request headers
118
- # @return [Boolean] True if successful
118
+ # @return [Response] API response
119
119
  # @example Permanently delete a member
120
120
  # members.delete_permanent('list123', 'user@example.com')
121
121
  def delete_permanent(list_id, email, query: nil, body: nil, headers: nil)
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MailchimpAPI
4
+ module Audience
5
+ # Provides methods for interacting with Mailchimp member fields
6
+ # Allows to manage merge fields for an audience
7
+ class MergeFields < Resource
8
+ # Module with endpoints for MergeFields APIs
9
+ module APIs
10
+ include Pagination::ListEachItemHelper
11
+
12
+ # List merge fields for a specific list
13
+ # @param list_id [String] The ID of the Mailchimp list
14
+ # @param query [Hash] Optional query parameters
15
+ # @param body [Hash] Optional request body
16
+ # @param headers [Hash] Optional request headers
17
+ # @return [Response] API response containing merge_fields
18
+ # @example Get merge fields for a list
19
+ # merge_fields.list('list123')
20
+ def list(list_id, query: nil, body: nil, headers: nil)
21
+ path = "/lists/#{list_id}/merge_fields"
22
+ client.get(path, query: query, body: body, headers: headers)
23
+ end
24
+
25
+ # Create a new merge field
26
+ # @param list_id [String] The ID of the Mailchimp list
27
+ # @param query [Hash] Optional query parameters
28
+ # @param body [Hash] Merge field attributes
29
+ # @param headers [Hash] Optional request headers
30
+ # @return [Response] API response containing the created merge field
31
+ # @example Create a static merge field
32
+ # merge_fields.create('list123', body: {
33
+ # name: 'Settings link',
34
+ # tag: 'SETTINGS'
35
+ # type: 'text',
36
+ # public: false
37
+ # })
38
+ def create(list_id, query: nil, body: nil, headers: nil)
39
+ path = "/lists/#{list_id}/merge_fields"
40
+ client.post(path, query: query, body: body, headers: headers)
41
+ end
42
+
43
+ # Show details for a specific merge field
44
+ # @param list_id [String] The ID of the Mailchimp list
45
+ # @param merge_id [String] The ID of the merge field
46
+ # @param query [Hash] Optional query parameters
47
+ # @param body [Hash] Optional request body
48
+ # @param headers [Hash] Optional request headers
49
+ # @return [Response] API response containing merge field details
50
+ # @example Get details for a merge field
51
+ # merge_fields.show('list123', 'mergefield456')
52
+ def show(list_id, merge_id, query: nil, body: nil, headers: nil)
53
+ path = "/lists/#{list_id}/merge_fields/#{merge_id}"
54
+ client.get(path, query: query, body: body, headers: headers)
55
+ end
56
+
57
+ # Update a merge field
58
+ # @param list_id [String] The ID of the Mailchimp list
59
+ # @param merge_id [String] The ID of the merge field to update
60
+ # @param query [Hash] Optional query parameters
61
+ # @param body [Hash] Updated merge field attributes
62
+ # @param headers [Hash] Optional request headers
63
+ # @return [Response] API response containing updated merge field
64
+ # @example Update a merge field name
65
+ # merge_fields.update('list123', 'mergefield456', body: {
66
+ # name: 'Updated Merge Field Name'
67
+ # })
68
+ def update(list_id, merge_id, query: nil, body: nil, headers: nil)
69
+ path = "/lists/#{list_id}/merge_fields/#{merge_id}"
70
+ client.patch(path, query: query, body: body, headers: headers)
71
+ end
72
+
73
+ # Delete a merge field
74
+ # @param list_id [String] The ID of the Mailchimp list
75
+ # @param merge_id [String] The ID of the merge field to delete
76
+ # @param query [Hash] Optional query parameters
77
+ # @param body [Hash] Optional request body
78
+ # @param headers [Hash] Optional request headers
79
+ # @return [Response] API response
80
+ # @example Delete a merge field
81
+ # merge_fields.delete('list123', 'mergefield456')
82
+ def delete(list_id, merge_id, query: nil, body: nil, headers: nil)
83
+ path = "/lists/#{list_id}/merge_fields/#{merge_id}"
84
+ client.delete(path, query: query, body: body, headers: headers)
85
+ end
86
+
87
+ # Iterate through all merge fields for a list
88
+ # @param list_id [String] The ID of the Mailchimp list
89
+ # @param query [Hash] Optional query parameters
90
+ # @param body [Hash] Optional request body
91
+ # @param headers [Hash] Optional request headers
92
+ # @yield [Hash] Each merge field
93
+ # @example Iterate through merge fields
94
+ # merge_fields.each('list123') do |merge_field|
95
+ # puts merge_field[:name]
96
+ # end
97
+ def each(list_id, query: nil, body: nil, headers: nil, &block)
98
+ list_each_item(:merge_fields, list_id, query: query, body: body, headers: headers, &block)
99
+ end
100
+ end
101
+
102
+ include APIs
103
+ extend APIs
104
+ end
105
+ end
106
+ end
@@ -10,14 +10,14 @@ module MailchimpAPI
10
10
  include Pagination::ListEachItemHelper
11
11
  include MailchimpAPI::Audience::Utils
12
12
 
13
- # List all members in a specific segment
13
+ # List members in a specific segment
14
14
  # @param list_id [String] The ID of the Mailchimp list
15
15
  # @param segment_id [String] The ID of the segment
16
16
  # @param query [Hash] Optional query parameters
17
17
  # @param body [Hash] Optional request body
18
18
  # @param headers [Hash] Optional request headers
19
- # @return [Hash] API response containing segment members
20
- # @example Get all members in a segment
19
+ # @return [Response] API response containing segment members
20
+ # @example Get members in a segment
21
21
  # segment_members.list('list123', 'segment456')
22
22
  def list(list_id, segment_id, query: nil, body: nil, headers: nil)
23
23
  path = "/lists/#{list_id}/segments/#{segment_id}/members"
@@ -30,7 +30,7 @@ module MailchimpAPI
30
30
  # @param query [Hash] Optional query parameters
31
31
  # @param body [Hash] Member details
32
32
  # @param headers [Hash] Optional request headers
33
- # @return [Hash] API response containing the added member
33
+ # @return [Response] API response containing the added member
34
34
  # @example Add a member to a segment
35
35
  # segment_members.create('list123', 'segment456', body: {
36
36
  # email_address: 'new@example.com'
@@ -47,7 +47,7 @@ module MailchimpAPI
47
47
  # @param query [Hash] Optional query parameters
48
48
  # @param body [Hash] Optional request body
49
49
  # @param headers [Hash] Optional request headers
50
- # @return [Boolean] True if successful
50
+ # @return [Response] API response
51
51
  # @example Remove a member from a segment
52
52
  # segment_members.delete('list123', 'segment456', 'user@example.com')
53
53
  def delete(list_id, segment_id, email, query: nil, body: nil, headers: nil)
@@ -9,13 +9,13 @@ module MailchimpAPI
9
9
  module APIs
10
10
  include Pagination::ListEachItemHelper
11
11
 
12
- # List all segments for a specific list
12
+ # List segments for a specific list
13
13
  # @param list_id [String] The ID of the Mailchimp list
14
14
  # @param query [Hash] Optional query parameters
15
15
  # @param body [Hash] Optional request body
16
16
  # @param headers [Hash] Optional request headers
17
- # @return [Hash] API response containing segments
18
- # @example Get all segments for a list
17
+ # @return [Response] API response containing segments
18
+ # @example Get segments for a list
19
19
  # segments.list('list123')
20
20
  def list(list_id, query: nil, body: nil, headers: nil)
21
21
  path = "/lists/#{list_id}/segments"
@@ -29,7 +29,7 @@ module MailchimpAPI
29
29
  # @option body [String] :name The name of the segment
30
30
  # @option body [Array<Hash>] :conditions Segment conditions
31
31
  # @param headers [Hash] Optional request headers
32
- # @return [Hash] API response containing the created segment
32
+ # @return [Response] API response containing the created segment
33
33
  # @example Create a static segment
34
34
  # segments.create('list123', body: {
35
35
  # name: 'Premium Customers',
@@ -46,7 +46,7 @@ module MailchimpAPI
46
46
  # @param query [Hash] Optional query parameters
47
47
  # @param body [Hash] Optional request body
48
48
  # @param headers [Hash] Optional request headers
49
- # @return [Hash] API response containing segment details
49
+ # @return [Response] API response containing segment details
50
50
  # @example Get details for a segment
51
51
  # segments.show('list123', 'segment456')
52
52
  def show(list_id, segment_id, query: nil, body: nil, headers: nil)
@@ -60,7 +60,7 @@ module MailchimpAPI
60
60
  # @param query [Hash] Optional query parameters
61
61
  # @param body [Hash] Updated segment attributes
62
62
  # @param headers [Hash] Optional request headers
63
- # @return [Hash] API response containing updated segment
63
+ # @return [Response] API response containing updated segment
64
64
  # @example Update a segment name
65
65
  # segments.update('list123', 'segment456', body: {
66
66
  # name: 'Updated Segment Name'
@@ -76,7 +76,7 @@ module MailchimpAPI
76
76
  # @param query [Hash] Optional query parameters
77
77
  # @param body [Hash] Optional request body
78
78
  # @param headers [Hash] Optional request headers
79
- # @return [Boolean] True if successful
79
+ # @return [Response] API response
80
80
  # @example Delete a segment
81
81
  # segments.delete('list123', 'segment456')
82
82
  def delete(list_id, segment_id, query: nil, body: nil, headers: nil)
@@ -92,7 +92,7 @@ module MailchimpAPI
92
92
  # @option body [Array<String>] :members_to_add Array of emails to add
93
93
  # @option body [Array<String>] :members_to_remove Array of emails to remove
94
94
  # @param headers [Hash] Optional request headers
95
- # @return [Hash] API response containing update status
95
+ # @return [Response] API response containing update status
96
96
  # @example Add and remove members from a segment
97
97
  # segments.batch_add_or_remove_members('list123', 'segment456', body: {
98
98
  # members_to_add: ['new@example.com'],
@@ -9,13 +9,13 @@ module MailchimpAPI
9
9
  module APIs
10
10
  include Pagination::ListEachItemHelper
11
11
 
12
- # List all webhooks for a specific list
12
+ # List webhooks for a specific list
13
13
  # @param list_id [String] The ID of the Mailchimp list
14
14
  # @param query [Hash] Optional query parameters
15
15
  # @param body [Hash] Optional request body
16
16
  # @param headers [Hash] Optional request headers
17
- # @return [Hash] API response containing webhooks
18
- # @example Get all webhooks for a list
17
+ # @return [Response] API response containing webhooks
18
+ # @example Get webhooks for a list
19
19
  # webhooks.list('list123')
20
20
  def list(list_id, query: nil, body: nil, headers: nil)
21
21
  path = "/lists/#{list_id}/webhooks"
@@ -29,7 +29,7 @@ module MailchimpAPI
29
29
  # @option body [String] :url The URL for the webhook
30
30
  # @option body [Hash] :events Events to subscribe to
31
31
  # @param headers [Hash] Optional request headers
32
- # @return [Hash] API response containing the created webhook
32
+ # @return [Response] API response containing the created webhook
33
33
  # @example Create a webhook for subscribe events
34
34
  # webhooks.create('list123', body: {
35
35
  # url: 'https://example.com/webhook',
@@ -46,7 +46,7 @@ module MailchimpAPI
46
46
  # @param query [Hash] Optional query parameters
47
47
  # @param body [Hash] Optional request body
48
48
  # @param headers [Hash] Optional request headers
49
- # @return [Hash] API response containing webhook details
49
+ # @return [Response] API response containing webhook details
50
50
  # @example Get details for a webhook
51
51
  # webhooks.show('list123', 'webhook456')
52
52
  def show(list_id, webhook_id, query: nil, body: nil, headers: nil)
@@ -60,7 +60,7 @@ module MailchimpAPI
60
60
  # @param query [Hash] Optional query parameters
61
61
  # @param body [Hash] Optional request body
62
62
  # @param headers [Hash] Optional request headers
63
- # @return [Boolean] True if successful
63
+ # @return [Response] API response
64
64
  # @example Delete a webhook
65
65
  # webhooks.delete('list123', 'webhook456')
66
66
  def delete(list_id, webhook_id, query: nil, body: nil, headers: nil)
@@ -74,7 +74,7 @@ module MailchimpAPI
74
74
  # @param query [Hash] Optional query parameters
75
75
  # @param body [Hash] Updated webhook attributes
76
76
  # @param headers [Hash] Optional request headers
77
- # @return [Hash] API response containing updated webhook
77
+ # @return [Response] API response containing updated webhook
78
78
  # @example Update webhook events
79
79
  # webhooks.update('list123', 'webhook456', body: {
80
80
  # events: { subscribe: true, unsubscribe: true }
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MailchimpAPI
4
+ # Provides methods for interacting with Mailchimp audiences
5
+ # Audience allows to store and manage your contacts.
6
+ class Audiences < Resource
7
+ # Module with endpoints for Audiences APIs
8
+ module APIs
9
+ include Pagination::ListEachItemHelper
10
+
11
+ # List audiences
12
+ # @param query [Hash] Optional query parameters
13
+ # @param body [Hash] Optional request body
14
+ # @param headers [Hash] Optional request headers
15
+ # @return [Response] API response containing audiences
16
+ # @example Get audiences
17
+ # audiences.list
18
+ def list(query: nil, body: nil, headers: nil)
19
+ path = "/lists"
20
+ client.get(path, query: query, body: body, headers: headers)
21
+ end
22
+
23
+ # Create a new audience
24
+ # @param query [Hash] Optional query parameters
25
+ # @param body [Hash] Audience attributes
26
+ # @param headers [Hash] Optional request headers
27
+ # @return [Response] API response containing the created folder
28
+ # @example Create a new folder
29
+ # audiences.create(body: {name: 'Product Updates'})
30
+ def create(query: nil, body: nil, headers: nil)
31
+ path = "/lists"
32
+ client.post(path, query: query, body: body, headers: headers)
33
+ end
34
+
35
+ # Show details for a specific audience
36
+ # @param list_id [String] The ID of the audience
37
+ # @param query [Hash] Optional query parameters
38
+ # @param body [Hash] Optional request body
39
+ # @param headers [Hash] Optional request headers
40
+ # @return [Response] API response containing audience details
41
+ # @example Get details for an audience
42
+ # audiences.show('audience789')
43
+ def show(list_id, query: nil, body: nil, headers: nil)
44
+ path = "/lists/#{list_id}"
45
+ client.get(path, query: query, body: body, headers: headers)
46
+ end
47
+
48
+ # Delete an audience
49
+ # @param list_id [String] The ID of the audience
50
+ # @param query [Hash] Optional query parameters
51
+ # @param body [Hash] Optional request body
52
+ # @param headers [Hash] Optional request headers
53
+ # @return [Response] API response
54
+ # @example Delete an audience
55
+ # audiences.delete('audience789')
56
+ def delete(list_id, query: nil, body: nil, headers: nil)
57
+ path = "/lists/#{list_id}"
58
+ client.delete(path, query: query, body: body, headers: headers)
59
+ end
60
+
61
+ # Update an audience
62
+ # @param list_id [String] The ID of the audience
63
+ # @param query [Hash] Optional query parameters
64
+ # @param body [Hash] Updated audience attributes
65
+ # @param headers [Hash] Optional request headers
66
+ # @return [Response] API response containing updated audience
67
+ # @example Update an audience name
68
+ # audiences.update('audience789', body: {
69
+ # name: 'Updated Audience Name'
70
+ # })
71
+ def update(list_id, query: nil, body: nil, headers: nil)
72
+ path = "/lists/#{list_id}"
73
+ client.patch(path, query: query, body: body, headers: headers)
74
+ end
75
+
76
+ # Batch update members in audience
77
+ # @param list_id [String] The ID of the audience
78
+ # @param query [Hash] Optional query parameters
79
+ # @param body [Hash] Updated audience attributes
80
+ # @param headers [Hash] Optional request headers
81
+ # @return [Response] API response containing updated audience
82
+ # @example Update existing members
83
+ # audiences.update('audience789', body: {
84
+ # members: members,
85
+ # update_existing: true
86
+ # })
87
+ def batch_update_members(list_id, query: nil, body: nil, headers: nil)
88
+ path = "/lists/#{list_id}"
89
+ client.post(path, query: query, body: body, headers: headers)
90
+ end
91
+
92
+ # Iterate through all audiences
93
+ # @param list_id [String] The ID of the audience
94
+ # @param query [Hash] Optional query parameters
95
+ # @param body [Hash] Optional request body
96
+ # @param headers [Hash] Optional request headers
97
+ # @yield [Hash] Each audience
98
+ # @example Iterate through all audiences
99
+ # audiences.each do |audience|
100
+ # puts audience[:name]
101
+ # end
102
+ def each(query: nil, body: nil, headers: nil, &block)
103
+ list_each_item(:lists, query: query, body: body, headers: headers, &block)
104
+ end
105
+ end
106
+
107
+ include APIs
108
+ extend APIs
109
+ end
110
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MailchimpAPI
4
+ # Contains classes related to Campaign APIs collection
5
+ module Campaign
6
+ # Provides methods for interacting with Mailchimp campaign content
7
+ class Content < Resource
8
+ # Module with endpoints for Campaign::Content APIs
9
+ module APIs
10
+ # Get campaign content
11
+ # @param campaign_id [String] The ID of the campaign
12
+ # @param query [Hash] Optional query parameters
13
+ # @param body [Hash] Optional request body
14
+ # @param headers [Hash] Optional request headers
15
+ # @return [Response] API response containing campaign content details
16
+ # @example Get the the HTML and plain-text content for a campaign.
17
+ # campaign_content.show('campaign789')
18
+ def show(campaign_id, query: nil, body: nil, headers: nil)
19
+ path = "/campaigns/#{campaign_id}/content"
20
+ client.get(path, query: query, body: body, headers: headers)
21
+ end
22
+
23
+ # Set campaign content
24
+ # @param campaign_id [String] The ID of the campaign
25
+ # @param query [Hash] Optional query parameters
26
+ # @param body [Hash] New campaign content data
27
+ # @param headers [Hash] Optional request headers
28
+ # @return [Response] API response containing updated campaign content details
29
+ # @example Set a campaign plain-text and HTML content
30
+ # campaigns.update('campaign789', body: {
31
+ # plain_text: 'Plain Text', html: { "<p>Raw HTML</p>" }
32
+ # })
33
+ def update(campaign_id, query: nil, body: nil, headers: nil)
34
+ path = "/campaigns/#{campaign_id}/content"
35
+ client.put(path, query: query, body: body, headers: headers)
36
+ end
37
+ end
38
+
39
+ include APIs
40
+ extend APIs
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MailchimpAPI
4
+ # Provides methods for interacting with Mailchimp campaign folders
5
+ # Allows to organize your campaigns using folders
6
+ class CampaignFolders < Resource
7
+ # Module with endpoints for CampaignFolders APIs
8
+ module APIs
9
+ include Pagination::ListEachItemHelper
10
+
11
+ # List campaign folders
12
+ # @param query [Hash] Optional query parameters
13
+ # @param body [Hash] Optional request body
14
+ # @param headers [Hash] Optional request headers
15
+ # @return [Response] API response containing campaign folders
16
+ # @example Get campaign folders
17
+ # campaign_folders.list
18
+ def list(query: nil, body: nil, headers: nil)
19
+ path = "/campaign-folders"
20
+ client.get(path, query: query, body: body, headers: headers)
21
+ end
22
+
23
+ # Create a new campaign folder
24
+ # @param query [Hash] Optional query parameters
25
+ # @param body [Hash] Campaign folder attributes
26
+ # @option body [String] :name The name of the folder
27
+ # @param headers [Hash] Optional request headers
28
+ # @return [Response] API response containing the created folder
29
+ # @example Create a new folder
30
+ # campaign_folders.create(body: {name: 'Product Updates'})
31
+ def create(query: nil, body: nil, headers: nil)
32
+ path = "/campaign-folders"
33
+ client.post(path, query: query, body: body, headers: headers)
34
+ end
35
+
36
+ # Show details for a specific campaign folder
37
+ # @param folder_id [String] The ID of the campaign folder
38
+ # @param query [Hash] Optional query parameters
39
+ # @param body [Hash] Optional request body
40
+ # @param headers [Hash] Optional request headers
41
+ # @return [Response] API response containing campaign folder details
42
+ # @example Get details for a campaign folder
43
+ # campaign_folders.show('folder789')
44
+ def show(folder_id, query: nil, body: nil, headers: nil)
45
+ path = "/campaign-folders/#{folder_id}"
46
+ client.get(path, query: query, body: body, headers: headers)
47
+ end
48
+
49
+ # Delete a campaign folder
50
+ # @param folder_id [String] The ID of the folder
51
+ # @param query [Hash] Optional query parameters
52
+ # @param body [Hash] Optional request body
53
+ # @param headers [Hash] Optional request headers
54
+ # @return [Response] API response
55
+ # @example Delete a campaign folder
56
+ # campaign_folders.delete('folder789')
57
+ def delete(folder_id, query: nil, body: nil, headers: nil)
58
+ path = "/campaign-folders/#{folder_id}"
59
+ client.delete(path, query: query, body: body, headers: headers)
60
+ end
61
+
62
+ # Update a campaign folder
63
+ # @param folder_id [String] The ID of the folder
64
+ # @param query [Hash] Optional query parameters
65
+ # @param body [Hash] Updated campaign folder attributes
66
+ # @param headers [Hash] Optional request headers
67
+ # @return [Response] API response containing updated campaign folder
68
+ # @example Update a campaign folder name
69
+ # campaign_folders.update('folder789', body: {
70
+ # name: 'Updated Interest Name'
71
+ # })
72
+ def update(folder_id, query: nil, body: nil, headers: nil)
73
+ path = "/campaign-folders/#{folder_id}"
74
+ client.patch(path, query: query, body: body, headers: headers)
75
+ end
76
+
77
+ # Iterate through all campaign folders
78
+ # @param list_id [String] The ID of the campaign folders
79
+ # @param query [Hash] Optional query parameters
80
+ # @param body [Hash] Optional request body
81
+ # @param headers [Hash] Optional request headers
82
+ # @yield [Hash] Each campaign folder
83
+ # @example Iterate through all campaign folders
84
+ # campaign_folders.each do |folder|
85
+ # puts interest[:name]
86
+ # end
87
+ def each(query: nil, body: nil, headers: nil, &block)
88
+ list_each_item(:folders, query: query, body: body, headers: headers, &block)
89
+ end
90
+ end
91
+
92
+ include APIs
93
+ extend APIs
94
+ end
95
+ end
@@ -0,0 +1,228 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MailchimpAPI
4
+ # Provides methods for interacting with Mailchimp campaigns
5
+ # Audience allows to store and manage your contacts.
6
+ class Campaigns < Resource
7
+ # Module with endpoints for Campaigns APIs
8
+ module APIs
9
+ include Pagination::ListEachItemHelper
10
+
11
+ # List campaigns
12
+ # @param query [Hash] Optional query parameters
13
+ # @param body [Hash] Optional request body
14
+ # @param headers [Hash] Optional request headers
15
+ # @return [Response] API response containing campaigns
16
+ # @example Get campaigns
17
+ # campaigns.list
18
+ def list(query: nil, body: nil, headers: nil)
19
+ path = "/campaigns"
20
+ client.get(path, query: query, body: body, headers: headers)
21
+ end
22
+
23
+ # Create a new campaign
24
+ # @param query [Hash] Optional query parameters
25
+ # @param body [Hash] Audience attributes
26
+ # @param headers [Hash] Optional request headers
27
+ # @return [Response] API response containing the created folder
28
+ # @example Create a new folder
29
+ # campaigns.create(body: {name: 'Product Updates'})
30
+ def create(query: nil, body: nil, headers: nil)
31
+ path = "/campaigns"
32
+ client.post(path, query: query, body: body, headers: headers)
33
+ end
34
+
35
+ # Show details for a specific campaign
36
+ # @param campaign_id [String] The ID of the campaign
37
+ # @param query [Hash] Optional query parameters
38
+ # @param body [Hash] Optional request body
39
+ # @param headers [Hash] Optional request headers
40
+ # @return [Response] API response containing campaign details
41
+ # @example Get details for a campaign
42
+ # campaigns.show('campaign789')
43
+ def show(campaign_id, query: nil, body: nil, headers: nil)
44
+ path = "/campaigns/#{campaign_id}"
45
+ client.get(path, query: query, body: body, headers: headers)
46
+ end
47
+
48
+ # Delete a campaign
49
+ # @param campaign_id [String] The ID of the campaign
50
+ # @param query [Hash] Optional query parameters
51
+ # @param body [Hash] Optional request body
52
+ # @param headers [Hash] Optional request headers
53
+ # @return [Response] API response
54
+ # @example Delete a campaign
55
+ # campaigns.delete('campaign789')
56
+ def delete(campaign_id, query: nil, body: nil, headers: nil)
57
+ path = "/campaigns/#{campaign_id}"
58
+ client.delete(path, query: query, body: body, headers: headers)
59
+ end
60
+
61
+ # Update campaign settings
62
+ # @param campaign_id [String] The ID of the campaign
63
+ # @param query [Hash] Optional query parameters
64
+ # @param body [Hash] Updated campaign attributes
65
+ # @param headers [Hash] Optional request headers
66
+ # @return [Response] API response containing updated campaign
67
+ # @example Update a campaign title
68
+ # campaigns.update('campaign789', body: {
69
+ # settings: { title: 'Updated Title' }
70
+ # })
71
+ def update(campaign_id, query: nil, body: nil, headers: nil)
72
+ path = "/campaigns/#{campaign_id}"
73
+ client.patch(path, query: query, body: body, headers: headers)
74
+ end
75
+
76
+ # Iterate through all campaigns
77
+ # @param campaign_id [String] The ID of the campaign
78
+ # @param query [Hash] Optional query parameters
79
+ # @param body [Hash] Optional request body
80
+ # @param headers [Hash] Optional request headers
81
+ # @yield [Hash] Each campaign
82
+ # @example Iterate through all campaigns
83
+ # campaigns.each do |campaign|
84
+ # puts campaign[:name]
85
+ # end
86
+ def each(query: nil, body: nil, headers: nil, &block)
87
+ list_each_item(:campaigns, query: query, body: body, headers: headers, &block)
88
+ end
89
+
90
+ # Cancel campaign [Mailchimp Pro]
91
+ # Cancel a campaign after you send, before all of your recipients receive it.
92
+ #
93
+ # @param campaign_id [String] The ID of the campaign
94
+ # @param query [Hash] Optional query parameters
95
+ # @param body [Hash] Optional body parameters
96
+ # @param headers [Hash] Optional request headers
97
+ # @return [Response] API response with no content (204)
98
+ # @example Cancel sending campaign
99
+ # campaigns.cancel_send('campaign789')
100
+ def cancel_send(campaign_id, query: nil, body: nil, headers: nil)
101
+ path = "/campaigns/#{campaign_id}/actions/cancel-send"
102
+ client.post(path, query: query, body: body, headers: headers)
103
+ end
104
+
105
+ # Send campaign
106
+ # For RSS Campaigns, the campaign will send according to its schedule.
107
+ # All other campaigns will send immediately.
108
+ #
109
+ # @param campaign_id [String] The ID of the campaign
110
+ # @param query [Hash] Optional query parameters
111
+ # @param body [Hash] Optional body parameters
112
+ # @param headers [Hash] Optional request headers
113
+ # @return [Response] API response with no content (204)
114
+ # @example Send campaign
115
+ # campaigns.action_send('campaign789')
116
+ def action_send(campaign_id, query: nil, body: nil, headers: nil)
117
+ path = "/campaigns/#{campaign_id}/actions/send"
118
+ client.post(path, query: query, body: body, headers: headers)
119
+ end
120
+
121
+ # Schedule campaign
122
+ # Schedule a campaign for delivery.
123
+ # If you're using Multivariate Campaigns to test send times or sending RSS Campaigns, use the send action instead.
124
+ #
125
+ # @param campaign_id [String] The ID of the campaign
126
+ # @param query [Hash] Optional query parameters
127
+ # @param body [Hash] Optional body parameters
128
+ # @param headers [Hash] Optional request headers
129
+ # @return [Response] API response with no content (204)
130
+ # @example Schedule campaign
131
+ # campaigns.schedule('campaign789')
132
+ def schedule(campaign_id, query: nil, body: nil, headers: nil)
133
+ path = "/campaigns/#{campaign_id}/actions/schedule"
134
+ client.post(path, query: query, body: body, headers: headers)
135
+ end
136
+
137
+ # Unschedule campaign
138
+ # Unschedule a scheduled campaign that hasn't started sending.
139
+ #
140
+ # @param campaign_id [String] The ID of the campaign
141
+ # @param query [Hash] Optional query parameters
142
+ # @param body [Hash] Optional body parameters
143
+ # @param headers [Hash] Optional request headers
144
+ # @return [Response] API response with no content (204)
145
+ # @example Unschedule campaign
146
+ # campaigns.unschedule('campaign789')
147
+ def unschedule(campaign_id, query: nil, body: nil, headers: nil)
148
+ path = "/campaigns/#{campaign_id}/actions/unschedule"
149
+ client.post(path, query: query, body: body, headers: headers)
150
+ end
151
+
152
+ # Pause RSS campaign
153
+ #
154
+ # @param campaign_id [String] The ID of the campaign
155
+ # @param query [Hash] Optional query parameters
156
+ # @param body [Hash] Optional body parameters
157
+ # @param headers [Hash] Optional request headers
158
+ # @return [Response] API response with no content (204)
159
+ # @example Pause campaign
160
+ # campaigns.pause('campaign789')
161
+ def pause(campaign_id, query: nil, body: nil, headers: nil)
162
+ path = "/campaigns/#{campaign_id}/actions/pause"
163
+ client.post(path, query: query, body: body, headers: headers)
164
+ end
165
+
166
+ # Resume RSS campaign
167
+ #
168
+ # @param campaign_id [String] The ID of the campaign
169
+ # @param query [Hash] Optional query parameters
170
+ # @param body [Hash] Optional body parameters
171
+ # @param headers [Hash] Optional request headers
172
+ # @return [Response] API response with no content (204)
173
+ # @example Resume campaign
174
+ # campaigns.resume('campaign789')
175
+ def resume(campaign_id, query: nil, body: nil, headers: nil)
176
+ path = "/campaigns/#{campaign_id}/actions/resume"
177
+ client.post(path, query: query, body: body, headers: headers)
178
+ end
179
+
180
+ # Replicate campaign
181
+ # Replicate a campaign in saved or send status.
182
+ #
183
+ # @param campaign_id [String] The ID of the campaign
184
+ # @param query [Hash] Optional query parameters
185
+ # @param body [Hash] Optional body parameters
186
+ # @param headers [Hash] Optional request headers
187
+ # @return [Response] API response with new campaign details
188
+ # @example Replicate campaign
189
+ # campaigns.replicate('campaign789')
190
+ def replicate(campaign_id, query: nil, body: nil, headers: nil)
191
+ path = "/campaigns/#{campaign_id}/actions/replicate"
192
+ client.post(path, query: query, body: body, headers: headers)
193
+ end
194
+
195
+ # Send test email
196
+ #
197
+ # @param campaign_id [String] The ID of the campaign
198
+ # @param query [Hash] Optional query parameters
199
+ # @param body [Hash] Optional body parameters
200
+ # @param headers [Hash] Optional request headers
201
+ # @return [Response] API response with no content (204)
202
+ # @example Send test email
203
+ # campaigns.test('campaign789', body: { test_emails: ["user1@example.com"], send_type: "html" })
204
+ def test(campaign_id, query: nil, body: nil, headers: nil)
205
+ path = "/campaigns/#{campaign_id}/actions/test"
206
+ client.post(path, query: query, body: body, headers: headers)
207
+ end
208
+
209
+ # Resend campaign
210
+ # Replicates campaign and resends it to non-openers, new subscribers, non-clickers or non-purchasers
211
+ #
212
+ # @param campaign_id [String] The ID of the campaign
213
+ # @param query [Hash] Optional query parameters
214
+ # @param body [Hash] Optional body parameters
215
+ # @param headers [Hash] Optional request headers
216
+ # @return [Response] API response with new campaign details
217
+ # @example Resend campaign to new subscribers
218
+ # campaigns.resend('campaign789', body: { shortcut_type: 'to_new_subscribers' })
219
+ def resend(campaign_id, query: nil, body: nil, headers: nil)
220
+ path = "/campaigns/#{campaign_id}/actions/create-resend"
221
+ client.post(path, query: query, body: body, headers: headers)
222
+ end
223
+ end
224
+
225
+ include APIs
226
+ extend APIs
227
+ end
228
+ end
data/lib/mailchimp-api.rb CHANGED
@@ -96,51 +96,86 @@ module MailchimpAPI
96
96
  # Builds audience interest categories API resource
97
97
  # @return [Audience::InterestCategories]
98
98
  # the interest categories APIs collection
99
- # @see Audience::InterestCategories#audience_interest_categories
99
+ # @see Client#audience_interest_categories
100
100
  def_delegators :@client, :audience_interest_categories
101
101
 
102
102
  # @!method audience_interests
103
103
  # Builds audience interests API resource
104
104
  # @return [Audience::Interests]
105
105
  # the interests APIs collection
106
- # @see Audience::Interests#audience_interests
106
+ # @see Client#audience_interests
107
107
  def_delegators :@client, :audience_interests
108
108
 
109
109
  # @!method audience_member_tags
110
110
  # Builds audience member tags API resource
111
111
  # @return [Audience::MemberTags]
112
112
  # the member tags APIs collection
113
- # @see Audience::MemberTags#audience_member_tags
113
+ # @see Client#audience_member_tags
114
114
  def_delegators :@client, :audience_member_tags
115
115
 
116
116
  # @!method audience_members
117
117
  # Builds audience members API resource
118
118
  # @return [Audience::Members]
119
119
  # the members APIs collection
120
- # @see Audience::Members#audience_members
120
+ # @see Client#audience_members
121
121
  def_delegators :@client, :audience_members
122
122
 
123
+ # @!method audience_merge_fields
124
+ # Builds audience merge_fields API resource
125
+ # @return [Audience::MergeFields]
126
+ # the merge_fields APIs collection
127
+ # @see Client#audience_merge_fields
128
+ def_delegators :@client, :audience_merge_fields
129
+
123
130
  # @!method audience_segment_members
124
131
  # Builds audience segment members API resource
125
132
  # @return [Audience::SegmentMembers]
126
133
  # the segment members APIs collection
127
- # @see Audience::SegmentMembers#audience_segment_members
134
+ # @see Client#audience_segment_members
128
135
  def_delegators :@client, :audience_segment_members
129
136
 
130
137
  # @!method audience_segments
131
138
  # Builds audience segments API resource
132
139
  # @return [Audience::Segments]
133
140
  # the segments APIs collection
134
- # @see Audience::Segments#audience_segments
141
+ # @see Client#audience_segments
135
142
  def_delegators :@client, :audience_segments
136
143
 
137
144
  # @!method audience_webhooks
138
145
  # Builds audience webhooks API resource
139
146
  # @return [Audience::Webhooks]
140
147
  # the webhooks APIs collection
141
- # @see Audience::Webhooks#audience_webhooks
148
+ # @see Client#audience_webhooks
142
149
  def_delegators :@client, :audience_webhooks
143
150
 
151
+ # @!method audiences
152
+ # Builds audiences API resource
153
+ # @return [Audiences]
154
+ # the audiences APIs collection
155
+ # @see Client#audiences
156
+ def_delegators :@client, :audiences
157
+
158
+ # @!method campaign_content
159
+ # Builds campaign_content API resource
160
+ # @return [CampaignFolders]
161
+ # the campaign_content APIs collection
162
+ # @see Client#campaign_content
163
+ def_delegators :@client, :campaign_content
164
+
165
+ # @!method campaign_folders
166
+ # Builds campaign_folders API resource
167
+ # @return [CampaignFolders]
168
+ # the campaign_folders APIs collection
169
+ # @see Client#campaign_folders
170
+ def_delegators :@client, :campaign_folders
171
+
172
+ # @!method campaigns
173
+ # Builds campaigns API resource
174
+ # @return [Campaigns]
175
+ # the campaigns APIs collection
176
+ # @see Client#campaigns
177
+ def_delegators :@client, :campaigns
178
+
144
179
  # @!endgroup
145
180
 
146
181
  # Returns the configured client instance
@@ -164,9 +199,14 @@ require_relative "mailchimp-api/resources/audience/interest_categories"
164
199
  require_relative "mailchimp-api/resources/audience/interests"
165
200
  require_relative "mailchimp-api/resources/audience/member_tags"
166
201
  require_relative "mailchimp-api/resources/audience/members"
202
+ require_relative "mailchimp-api/resources/audience/merge_fields"
167
203
  require_relative "mailchimp-api/resources/audience/webhooks"
168
204
  require_relative "mailchimp-api/resources/audience/segments"
169
205
  require_relative "mailchimp-api/resources/audience/segment_members"
206
+ require_relative "mailchimp-api/resources/audiences"
207
+ require_relative "mailchimp-api/resources/campaign/content"
208
+ require_relative "mailchimp-api/resources/campaign_folders"
209
+ require_relative "mailchimp-api/resources/campaigns"
170
210
  require_relative "mailchimp-api/batch_request"
171
211
  require_relative "mailchimp-api/client/api_methods"
172
212
  require_relative "mailchimp-api/client/batch_methods"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailchimp-rest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Glushkov
@@ -36,10 +36,15 @@ files:
36
36
  - lib/mailchimp-api/resources/audience/interests.rb
37
37
  - lib/mailchimp-api/resources/audience/member_tags.rb
38
38
  - lib/mailchimp-api/resources/audience/members.rb
39
+ - lib/mailchimp-api/resources/audience/merge_fields.rb
39
40
  - lib/mailchimp-api/resources/audience/segment_members.rb
40
41
  - lib/mailchimp-api/resources/audience/segments.rb
41
42
  - lib/mailchimp-api/resources/audience/utils/subscriber_hash.rb
42
43
  - lib/mailchimp-api/resources/audience/webhooks.rb
44
+ - lib/mailchimp-api/resources/audiences.rb
45
+ - lib/mailchimp-api/resources/campaign/content.rb
46
+ - lib/mailchimp-api/resources/campaign_folders.rb
47
+ - lib/mailchimp-api/resources/campaigns.rb
43
48
  - lib/mailchimp-api/response.rb
44
49
  - lib/mailchimp-api/uri_builder.rb
45
50
  - lib/mailchimp-api/version.rb
@@ -52,7 +57,7 @@ metadata:
52
57
  changelog_uri: https://github.com/andreyruby/mailchimp-rest-api/CHANGELOG.md
53
58
  documentation_uri: https://github.com/andreyruby/mailchimp-rest-api/README.md
54
59
  homepage_uri: https://github.com/andreyruby/mailchimp-rest-api
55
- source_code_uri: https://github.com/andreyruby/mailchimp-rest-api/tree/v0.4.1
60
+ source_code_uri: https://github.com/andreyruby/mailchimp-rest-api/tree/v0.5.0
56
61
  rdoc_options: []
57
62
  require_paths:
58
63
  - lib
@@ -67,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
72
  - !ruby/object:Gem::Version
68
73
  version: '0'
69
74
  requirements: []
70
- rubygems_version: 3.6.8
75
+ rubygems_version: 3.6.9
71
76
  specification_version: 4
72
77
  summary: Mailchimp REST API (Marketing)
73
78
  test_files: []