maropost-api 0.1.0 → 0.2.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
  SHA1:
3
- metadata.gz: 6c8b9f2f1503cbd2b23c828357d4098e86c97cb5
4
- data.tar.gz: feba6fc5c7543817116193751fce70161e3450ef
3
+ metadata.gz: 65c966cdbe544cf0e317c740454efb0f39b5f6d8
4
+ data.tar.gz: 35cc46edca3426bfd5e9bd05f111893bb720694f
5
5
  SHA512:
6
- metadata.gz: 79feafdbae51a52c30f3ab2aa7768480238c5ba5e82bac7d4aecc121b1970d4636a6657dee5f47ca7f4ca6ba021ade3b8c10c88d2bf39cad307715def930004a
7
- data.tar.gz: f2fa7ff178b79dff8658fe36603874ef60a57f6989e25581eaf4914d661a12e2aa669f7f34cb7c7cf0d940d0a72f936a358f6808049477affb2502aa09bc8219
6
+ metadata.gz: 09b2daa87ba1acacdfd2fd58b83ae95fd08db22663a55eb3e047457e3637bb6d46a503be34e61916e85b45b49ab450ce1ef7bd386f876ed5cc2cee296c4857cc
7
+ data.tar.gz: 46304b217b24685987656402d885684d9d8d2179a31cb6ac5cbdb9efdba47caeccc177b981e900c8416996f2fc2fbbfb9751b92449f49b0fd72c739a4a4c9a7c
data/README.md CHANGED
@@ -1 +1,615 @@
1
- # marketing-ruby
1
+ # Summary
2
+
3
+ This provides programmatic access to several services within the Maropost API. The functions contained perform actions against your Maropost account, and they return a result object indicating success/failure, any Exceptions thrown, and the resulting data.
4
+
5
+ # Installation
6
+
7
+ [RubyGems](https://rubygems.org/) is the standard Ruby packaging system. You can find this package at https://rubygems.org/gems/maropost-api. You can install this gem by running
8
+
9
+ gem install maropost-api
10
+
11
+ # Usage
12
+ To use a service, first instantiate it, providing your Maropost account_id
13
+ and Auth Token. For example, to get your list of reports using the Reports
14
+ service, execute:
15
+
16
+ reports = MaropostApi::Reports.new(account_id, auth_token)
17
+ result = reports.Get(1);
18
+ if result.success {
19
+ myReports = result.data;
20
+ }
21
+
22
+ The result object contains two fields:
23
+
24
+ - `success` (bool)
25
+ - `errors` (object)
26
+
27
+ If `success` is `false`, then `errors` will have details about the reason for
28
+ failure. If `errors` is not `nil`, then `success` will always be `false`.
29
+
30
+ The object might also contain one property, `data` (dynamic), which contains whatever
31
+ data the operation itself provides. Some operations, such as `delete()`
32
+ operations, might not provide any data.
33
+
34
+ # Specific APIs
35
+ The specific APIs contained are:
36
+
37
+ - [Campaigns](#campaigns)
38
+ - [AB Test Campaigns](#ab-test-campaigns)
39
+ - [Transactional Campaigns](#transactional-campaigns)
40
+ - [Contacts](#contacts)
41
+ - [Journeys](#journeys)
42
+ - [Product and Revenue](#product-and-revenue)
43
+ - [Relational Table Rows](#relational-table-rows)
44
+ - [Reports](#reports)
45
+
46
+ ## Campaigns
47
+ ### Instantiation:
48
+
49
+ MaropostApi::Campaigns.new(account_id, auth_token)
50
+
51
+ ### Available methods:
52
+
53
+ - `get(page)`
54
+ - returns the list of campaigns for the account
55
+ - `page`: page # (>= 1). Up to 200 records returned per page.
56
+ - `get_campaign(campaign_id)`
57
+ - returns the given campaign
58
+ - `get_bounce_reports(campaign_id, page)`
59
+ - returns the list of bounce reports for the given campaign ID
60
+ - `page`: page # (>= 1). Up to 200 records returned per page.
61
+ - `get_click_reports(campaign_id, page, unique = nil)`
62
+ - returns the list of click reports for the given campaign ID
63
+ - `page`: page # (>= 1). Up to 200 records returned per page.
64
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
65
+ - `get_complaint_reports(campaign_id, page)`
66
+ - returns the list of complaint reports for the given campaign ID
67
+ - `page`: page # (>= 1). Up to 200 records returned per page.
68
+ - `get_delivered_reports(campaign_id, page)`
69
+ - returns the list of delivered reports for the given campaign ID
70
+ - `page`: page # (>= 1). Up to 200 records returned per page.
71
+ - `get_hard_bounce_reports(campaign_id, page)`
72
+ - returns the list of hard bounces for the given campaign ID
73
+ - `page`: page # (>= 1). Up to 200 records returned per page.
74
+ - `get_link_reports(campaign_id, page, unique = nil)`
75
+ - returns the list of link reports for the given campaign ID
76
+ - `page`: page # (>= 1). Up to 200 records returned per page.
77
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
78
+ - `get_open_reports(campaign_id, page, unique = nil)`
79
+ - returns the list of open reports for the given campaign ID
80
+ - `page`: page # (>= 1). Up to 200 records returned per page.
81
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
82
+ - `get_soft_bounce_reports(campaign_id, page)`
83
+ - returns the list of soft bounce reports for the given campaign ID
84
+ - `page`: page # (>= 1). Up to 200 records returned per page.
85
+ - `get_unsubscribe_reports(campaign_id, page)`
86
+ - returns the list of unsubscribe reports for the given campaign ID
87
+ - `page`: page # (>= 1). Up to 200 records returned per page.
88
+
89
+ ## AB Test Campaigns
90
+ ### Instantiation:
91
+
92
+ MaropostApi::AbTestCampaigns.new(account_id, auth_token)
93
+
94
+ ### Available Methods:
95
+ - `create_ab_test(name, from_email, address, language, campaign_groups_attributes,`
96
+ `commit, sendAt, brand_id: nil, suppressed_list_ids: [],`
97
+ `suppressed_journey_ids: [], suppressed_segment_ids: [], emailPreviewLink: nil,`
98
+ `decided_by: nil, lists: [], ctags: [], segments: [])`
99
+ * Creates an Ab Test campaign
100
+ - `name`: name of the new campaign
101
+ - `from_email`: default sender email address for campaign emails
102
+ - `address`: default physical address included on campaign emails
103
+ - `language`: ISO 639-1 language code (e.g., "en"). 2 characters
104
+ - `campaign_groups_attributes`: array of attributes. Each attribute is itself a hash with the following properties (all strings):
105
+ - `name`: name of the group
106
+ - `content_id`: content ID
107
+ - `subject`: subject line of emails
108
+ - `from_name`: "from name" on emails
109
+ - `percentage`: percentage of emails that should be send with these settings
110
+ - `commit`: allowed values: 'Save as Draft' or 'Send Test' or 'Schedule'
111
+ - `sendAt`: should be in "yyyy-mm-dd %H:%M:%S" where %H - Hour of the day, 24-hour clock (00..23), %M - Minute of the hour (00..59), %S - Second of the minute (00..60)
112
+ - `brand_id`: brand ID as a string
113
+ - `suppressed_list_ids`: array of list IDs in string format
114
+ - `suppressed_journey_ids`: array of journey IDs in string format
115
+ - `suppressed_segment_ids`: array of segment IDs in string format
116
+ - `email_preview_link`: (string)
117
+ - `decided_by`: allowed values: ('TopChoice' for Top Choices) or ('Opens' for Highest Open Rate) or ('Clicks' for Highest Click Rate) or ('Manual' for Manual Selection) or ('click_to_open' for Highest Click-to-Open Rate) or ('conversions' for Highest Conversion Rate)
118
+ - `lists`: array of list IDs in string format
119
+ - `ctags`: array of tags in string format
120
+ - `segments`: array of segments in string format
121
+
122
+ ## Transactional Campaigns
123
+
124
+ ### Instantiation:
125
+
126
+ MaropostApi::TransactionalCampaigns.new(account_id, auth_token)
127
+
128
+ ### Available methods:
129
+ - `get(page)`
130
+ * returns the list of Transaction Campaigns
131
+ - `page`: page # (>= 1). Up to 200 records returned per page.
132
+ - `create(name, subject, preheader, from_name, from_email, reply_to,`
133
+ `content_id, email_preview_link, address, language, add_ctags)`
134
+ * Creates a Transactional Campaign
135
+ - `name` campaign name
136
+ - `subject` campaign subject
137
+ - `preheader` campaign preheader
138
+ - `from_name` sender name in the email
139
+ - `from_email` sender email address
140
+ - `reply_to` reply-to email address
141
+ - `content_id`
142
+ - `email_preview_link`
143
+ - `address` physical address
144
+ - `language` ISO 639-1 language code
145
+ - `add_ctags` array of campaign tags
146
+
147
+ - `send_email(campaign_id,
148
+ content: {},
149
+ contact: {},
150
+ send_time: {},
151
+ ignore_dnm: nil,
152
+ bcc: nil,
153
+ from_name: nil,
154
+ from_email: nil,
155
+ subject: nil,
156
+ reply_to: nil,
157
+ address: nil,
158
+ tags: {},
159
+ add_ctags: [])`
160
+ * Sends a transactional campaign email to a recipient contact. Sender's information will be automatically fetched from the transactional campaign, unless provided in the function arguments.
161
+ - `campaign_id`: must be a campaign that already exists when you call `get()`. If you don't have one, first call `create(...)`.
162
+ - `content`: hash with the following fields: `name`, `html_part`, `text_part`
163
+ - `ignoreDnm`: If true, ignores the Do Not Mail list for the recipient contact.
164
+ - `contact`: hash defining the recipient with the following fields: `email`, `first_name`, `last_name`, `custom_field`
165
+ - `custom_field`: is a hash of the custom fields.
166
+ - `send_time`: hash with the following string fields: `hour` ("1" - "12") and `minute` ("00" - "59")
167
+ - If the hour is less than the current hour, the email will go out the following day.
168
+ - If the hour and minute combine to less than the current time, the email will go out the following day.
169
+ - `bcc`: BCC recipient. May only pass a single email address, empty string, or nil. If provided, it must be a well-formed email address.
170
+ - `from_name`: sender's name. If `from_email` is set, it overrides the transactional campaign default sender name. Ignored otherwise.
171
+ - `from_email`: sender's email address. Overrides the transactional campaign default sender email.
172
+ - `subject`: subject line of email. Overrides the transactional campaign default subject.
173
+ - `reply_to`: reply-to address. Overrides the transactional campaign default reply-to.
174
+ - `address`: physical address of sender. Overrides the transactional campaign default sender address.
175
+ - `tags`: hash where the field name is the name of the tag within the content, and the field value is the tag's replacement upon sending. All values must be non-nil scalars.
176
+ - `ctags`: campaign tags. Must be a simple array of scalar values.
177
+
178
+ ## Contacts
179
+
180
+ ### Instantiation:
181
+
182
+ MaropostApi::Contacts.new(account_id, auth_token)
183
+
184
+ ### Available methods:
185
+
186
+ - `get_for_email(email)`
187
+ * Gets the contact according to email address
188
+ - `email`: email address of the contact
189
+
190
+ - `get_opens(contact_id, page)`
191
+ * Gets the list of opens for the specified contact
192
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
193
+ - `page`: page # (>= 1). Up to 200 records returned per page.
194
+
195
+ - `get_clicks(contact_id, page)`
196
+ * Gets the list of clicks for the specified contact
197
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
198
+ - `page`: page # (>= 1). Up to 200 records returned per page.
199
+
200
+ - `get_for_list(list_id, page)`
201
+ * Gets the list of contacts for the specified list
202
+ - `list_id`: ID of the list to which the contact being retrieved
203
+ - `page`: page # (>= 1). Up to 200 records returned per page.
204
+
205
+ - `get_contact_for_list(list_id, contact_id)`
206
+ - Gets the specified contact from the specified list
207
+ - `list_id`: ID of the list to which the contact is being retrieved
208
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
209
+
210
+ - `create_or_update_for_list(list_id, email, first_name: nil, last_name: nil, phone: nil,`
211
+ `fax: nil, uid: nil, custom_field: nil, add_tags: nil,`
212
+ `remove_tags: nil, remove_from_dnm: true, subscribe: true)`
213
+ * Creates a contact within a list. Updates if previous contact is matched by email
214
+ - `list_id`: ID of the list to which the contact being updated belongs
215
+ - `contact_id`: ID of the contact being updated
216
+ - `email`: Email address for the contact to be updated
217
+ - `first_name`: first name of Contact
218
+ - `last_name`: last name of Contact
219
+ - `phone`: phone number of Contact
220
+ - `fax`: fax number of Contact
221
+ - `uid`: UID for the Contact
222
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
223
+ - `add_tags`: tags to add to the contact. Simple array of tag names
224
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names
225
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM)
226
+ - `subscribe`: set this true to subscribe contact to the list; false otherwise
227
+
228
+ - `update_for_list_and_contact(list_id, contact_id, email, first_name: nil, last_name: nil, phone: nil, fax: nil,`
229
+ `uid: nil, custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: true, subscribe: true)`
230
+ * Creates a contact within a list. Updates if previous contact is matched by email.
231
+ - `list_id`: ID of the list for which the contact is being created
232
+ - `email`: email address for the contact to be created|updated
233
+ - `first_name`: first name of Contact
234
+ - `last_name`: last Name of Contact
235
+ - `phone`: phone number of Contact
236
+ - `fax`: fax number of Contact
237
+ - `uid`: UID for the contact
238
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values.
239
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings).
240
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings).
241
+ - `remove_from_dnm`: Set this true to subscribe contact to the list, and remove it from DNM.
242
+ - `subscribe`: true to subscribe the contact to the list; false otherwise.
243
+
244
+ - `create_or_update_contact(email, first_name: nil, last_name: nil, phone: nil, fax: nil, uid: nil,`
245
+ `custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: true, subscribe: true)`
246
+ * Creates a contact without a list. Updates if already existing email is passed.
247
+ - `contact_id`: ID of the contact
248
+ - `email`: Email address for the contact to be created|updated
249
+ - `first_name`: first name of Contact
250
+ - `last_name`: last Name of Contact
251
+ - `phone`: phone number of Contact
252
+ - `fax`: fax number of Contact
253
+ - `uid`: UID for the contact
254
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
255
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings).
256
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings).
257
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM
258
+ - `subscribe`: true to subscribe the contact to the list; false otherwise.
259
+
260
+ - `create_or_update_for_list_and_workflows(email, first_name: nil, last_name: nil, phone: nil, fax: nil, uid: nil,`
261
+ `custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: false, subscribe_list_ids: nil,`
262
+ `unsubscribe_list_ids: nil, unsubscribe_workflow_ids: nil, unsubscribe_campaign: nil)`
263
+ * Creates or updates Contact
264
+ - Multiple lists can be subscribed, unsubscribed.
265
+ - Multiple workflows can be unsubscribed.
266
+ - `email`: email address for the contact to be created|updated
267
+ - `first_name`: first name of Contact
268
+ - `last_name`: last name of Contact
269
+ - `phone`: phone number of Contact
270
+ - `fax`: fax number of Contact
271
+ - `uid`: UID for the Contact
272
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
273
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings)
274
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings)
275
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM
276
+ - `subscribe_list_ids`: simple array of IDs of lists to subscribe the contact to
277
+ - `unsubscribe_list_ids`: simple array of IDs of Lists to unsubscribe the contact from
278
+ - `unsubscribe_workflow_ids`: simple array of list of IDs of workflows to unsubscribe the contact from
279
+ - `unsubscribe_campaign`: campaign_id to unsubscribe the contact from
280
+
281
+ - `delete_from_all_lists(email)`
282
+ * Deletes specified contact from all lists
283
+ - `email`: email address of the contact
284
+
285
+ - `delete_from_lists(contact_id, list_ids: nil)`
286
+ * Deletes the specified contact from the specified lists
287
+ - `contact_id`: id of the contact
288
+ - `list_ids`: simple array of ids of the lists
289
+
290
+ - `delete_contact_for_uid(uid)`
291
+ * Deletes contact having the specified UID
292
+ - `uid`: UID of the Contact for which the contact is being deleted
293
+
294
+ - `delete_list_contact(list_id, contact_id)`
295
+ * Deletes specified contact from the specified list
296
+ - `list_id`: ID of the list for which the contact is being deleted
297
+ - `contact_id`: contact id of the list for which the contact is being deleted
298
+
299
+ - `unsubscribe_all(contact_field_value, contact_field_name: "email")`
300
+ * Unsubscribes contact having the specified field name/value.
301
+ - `contact_field_value`: the value of the field for the contact(s) being unsubscribed
302
+ - `contact_field_name`: the name of the field being checked for the value. At present, the accepted field names are: 'email' or 'uid'
303
+
304
+ ## Journeys
305
+
306
+ ### Instantiation:
307
+
308
+ MaropostApi::Journeys.new(account_id, auth_token)
309
+
310
+ ### Available methods:
311
+
312
+ - `get(page)`
313
+ * Gets the list of journeys
314
+ - `page`: page # (>= 1). Up to 200 records returned per page.
315
+
316
+ - `get_campaigns(journey_id, page)`
317
+ * Gets the list of all campaigns for the specified journey
318
+ - `journey_id`: get campaigns filtered with journey_id
319
+ - `page`: page # (>= 1). Up to 200 records returned per page.
320
+
321
+ - `get_contacts(journey_id, page)`
322
+ * Gets the list of all contacts for the specified journey
323
+ - `journey_id`: get contacts filtered with journey_id
324
+ - `page` : page # (>= 1). Up to 200 records returned per page.
325
+
326
+ - `stop_all(contact_id, recipientEmail, uid, page)`
327
+ * Stops all journeys, filtered for the matching parameters
328
+ - `contact_id`: this filter ignored unless greater than 0
329
+ - `recipientEmail`: this filter ignored if nil
330
+ - `uid`: this filter ignored if nil
331
+ - `page`: page # (>= 1). Up to 200 record returned per page.
332
+
333
+ - `pause_journey_for_contact(journey_id, contact_id)`
334
+ * Pause the specified journey for the specified contact
335
+ - `journey_id`: journey to pause
336
+ - `contact_id`: pause journey for specified contact id
337
+
338
+ - `pause_journey_for_uid(journey_id, uid)`
339
+ * Pause the specified journey for the contact having the specified UID
340
+ - `journey_id`: journey to pause
341
+ - `uid`: pause journey for specified uid
342
+
343
+ - `reset_journey_for_contact(journey_id, contact_id)`
344
+ * Reset the specified journey for the specified active/paused contact. Resetting a contact to the beginning of the journeys will result in sending of the same journey campaigns as originally sent.
345
+ - `journey_id`: journey to reset
346
+ - `contact_id`: reset journey for specified contact id
347
+
348
+ - `reset_journey_for_uid(journey_id, uid)`
349
+ * Restarts a journey for a paused contact having the specified UID. Adds a new contact in journey. Retriggers the journey for a contact who has finished its journey once. (To retrigger, *make sure* that "Retrigger Journey" option is enabled.)
350
+ - `journey_id`: journey to reset
351
+ - `uid`: uid of contact to reset journey
352
+
353
+ - `start_journey_for_contact(journey_id, contact_id)`
354
+ * Starts a journey for contact having specified journey_id
355
+ - `journey_id`: journey to start
356
+ - `contact_id`: contact id of contact to start journey
357
+
358
+ - `start_journey_for_uid(journey_id, uid)`
359
+ * Starts a journey for contact having specified uid and journey_id
360
+ - 'journey_id': journey to start
361
+ - 'uid': uid of contact to start journey
362
+
363
+ ## Product and Revenue
364
+
365
+ ### Instantiation:
366
+
367
+ MaropostApi::ProductsAndRevenue.new(account_id, auth_token)
368
+
369
+ ### Available methods:
370
+
371
+ - `get_order(id)`
372
+ * Gets the specified order
373
+ - `get_order_for_original_order_id(original_order_id)`
374
+ * Gets the specified order
375
+
376
+ - `create_order(require_unique, contact: {}, order: {}, order_items: [], add_tags: [], `
377
+ `remove_tags: [], uid: nil, list_ids: nil, grand_total: nil, `
378
+ `campaign_id: nil, coupon_code: nil)`
379
+ * Creates an order
380
+ - `require_unique`: true to validate that the order has a unique original_order_id for the given contact.
381
+ - `contact`: hash containing the following fields: `email`, `first_name`, `last_name`
382
+ - `order`: hash containing the following fields:
383
+ - `order_date`: uses the format: "YYYY-MM-DDTHH:MM:SS-05:00"
384
+ - `order_status`: status of order
385
+ - `original_order_id`: sets the original_order_id field
386
+ - `order_items`: must contain at least one `OrderItem`. When creating an item, do not manually set the properties. Just use the constructor, itself having the parameters:
387
+ - `item_id`
388
+ - `price`: price of the order_item
389
+ - `quantity`: quantity purchased
390
+ - `description`: description of the product
391
+ - `adcode`: adcode of the order_item
392
+ - `category`: category of the product
393
+ - `add_tags` array of strings
394
+ - `remove_tags` array of strings
395
+ - `uid`: unique id
396
+ - `list_ids` CSV list of IDs (e.g, "12,13")
397
+ - `grand_total`: grand total
398
+ - `campaign_id`: campaign id
399
+ - `coupon_code`: coupon code
400
+
401
+ - `update_order_for_original_order_id(original_order_id,`
402
+ `order_date_time,`
403
+ `order_status,`
404
+ `order_items,`
405
+ `campaign_id: nil,`
406
+ `coupon_code: nil)`
407
+ * Updates an existing eCommerce order using unique original_order_id if the details are changed due to partial return or some other update.
408
+ - `original_order_id`: matches the original_order_id field of the order
409
+ - `order_date_time`: uses the format: YYYY-MM-DDTHH:MM:SS-05:00
410
+ - `order_status`: order status
411
+ - `order_items`: must contain at least one order_item.
412
+ - `campaign_id`: campaign id
413
+ - `coupon_code`: coupon code
414
+
415
+ - `update_order_for_order_id(order_id,`
416
+ `order_date_time,`
417
+ `order_status,`
418
+ `order_items,`
419
+ `campaign_id: nil,`
420
+ `coupon_code: nil)`
421
+ * Updates an existing eCommerce order using unique order_id if the details are changed due to partial return or some other update.
422
+ - `order_id`: matches the Maropost order_id field of the order
423
+ - `order_date_time`: uses the format: YYYY-MM-DDTHH:MM:SS-05:00
424
+ - `order_status`: order status
425
+ - `order_items`: must contain at least one order_item.
426
+ - `campaign_id`: campaign id
427
+ - `coupon_code`: coupon code
428
+
429
+ - `delete_for_original_order_id(original_order_id)`
430
+ * Deletes the complete eCommerce order if the order is cancelled or returned
431
+ - `original_order_id` matches the original_order_id field of the order
432
+
433
+ - `delete_for_order_id(id)`
434
+ * Deletes the complete eCommerce order if the order is cancelled or returned using Maropost order id
435
+ - `id`: Maropost order_id
436
+
437
+ - `delete_products_for_original_order_id(original_order_id, product_ids)`
438
+ * Deletes the specified product(s) from a complete eCommerce order if the product(s) is cancelled or returned
439
+ - `original_order_id`: matches the original_order_id field of the order
440
+ - `product_ids`: the product(s) to delete from the order
441
+
442
+ - `delete_products_for_order_id(id, product_ids)`
443
+ * Deletes the specified product(s) from a complete eCommerce order if the product(s) is cancelled or returned
444
+ - `id`: Maropost order_id
445
+ - `product_ids`: the product(s) to delete from the order
446
+
447
+ ## Relational Table Rows
448
+
449
+ ### Instantiation:
450
+ Unlike the other services, the constructor for this requires a third
451
+ parameter: `table_name`. So for example:
452
+
453
+ MaropostApi::RelationalTableRows.new(my_account_id, my_auth_token, "someTableName")
454
+
455
+ `table_name` sets which relational table the service's operations should act against.
456
+ To switch tables, you do not need to re-instantiate the service. Simply update the `table_name` property of the instance:
457
+
458
+ rows = MaropostApi::RelationalTableRows.new(myId, myToken, "table1");
459
+ rows.table_name = "table2";
460
+
461
+ ### Available functions:
462
+
463
+ - `get()`
464
+ * Gets the records of the Relational Table
465
+
466
+ - `show(unique_field_name, value)`
467
+ * Gets the specified record from the Relational Table
468
+ * `unique_field_namae`: name of the field representing the unique identifier (E.g., "id", "email")
469
+ * `value`: value of the identifier field, for the record to show
470
+
471
+ - `create(key_value_col, *key_value_cols)`
472
+ * Adds a record to the Relational Table
473
+ * `key_value_col`: object hash containing the fields of the
474
+ record to be created, each item consisting of two fields.
475
+ - NOTE: One of the fields must represent the unique identifier.
476
+
477
+ - `update(key_value_col, *key_value_cols)`
478
+ * Updates a record in the Relational Table.
479
+ * `key_value_col`: object hash containing the fields of the
480
+ record to be created, each item consisting of two fields.
481
+ - NOTE: One of the KeyValues must represent the unique identifier.
482
+
483
+ - `upsert(key_value_col, *key_value_cols)`
484
+ * Creates or updates a record in the Relational Table.
485
+ * `key_value_col`: object hash containing the fields of the
486
+ record to be created, each item consisting of two fields.
487
+ - NOTE: One of the KeyValues must represent the unique identifier.
488
+
489
+ - `delete(unique_field_name, value)`
490
+ * Deletes the given record of the Relational Table
491
+ * `unique_field_name` name of the field representing the unique identifier (E.g., "id", "email")
492
+ * `value` value of the identifier field, for the record to delete.
493
+
494
+ ## Reports
495
+
496
+ ### Instantiation:
497
+
498
+ MaropostApi::Reports.new(account_id, auth_token)
499
+
500
+ ### Available methods:
501
+ - `get(page)`
502
+ - returns the list of reports
503
+ - `page`: page # (>= 1). Up to 200 records returned per page.
504
+
505
+ - `get_report(id)`
506
+ - Gets the list of reports
507
+ - `id`: report ID
508
+
509
+ - `get_opens(page,`
510
+ `fields: [],`
511
+ `from: nil,`
512
+ `to: nil,`
513
+ `unique: nil,`
514
+ `email: nil,`
515
+ `uid: nil,`
516
+ `per: nil)`
517
+ * returns the list of open reports based on filters and fields provided
518
+ - `page`: page # (>= 1). Up to 200 records returned per page.
519
+ * `fields`: contact field names to retrieve
520
+ * `from`: the beginning of date range filter
521
+ * `to`: the end of the date range filter
522
+ * `unique`: when true, gets only unique opens
523
+ * `email`: filters by provided email in the contact
524
+ * `uid`: filters by uid
525
+ * `per`: determines how many records per request to receive
526
+
527
+ - `get_clicks(page,`
528
+ `fields: [],`
529
+ `from: nil,`
530
+ `to: nil,`
531
+ `unique: nil,`
532
+ `email: nil,`
533
+ `uid: nil,`
534
+ `per: nil)`
535
+ * returns the list of click reports
536
+ * `page`: page # (>= 1). Up to 200 records returned per page.
537
+ * `fields`: plucks these contact fields if they exist
538
+ * `from`: start of specific date range filter
539
+ * `to`: end of date range filter
540
+ * `unique`: if true, gets unique records
541
+ * `email`: gets Clicks for specific email
542
+ * `uid`: gets Clicks for provided uid
543
+ * `per`: gets the specified number of records
544
+
545
+ - `get_bounce(page,`
546
+ `fields: [],`
547
+ `from: nil,`
548
+ `to: nil,`
549
+ `unique: nil,`
550
+ `email: nil,`
551
+ `uid: nil,`
552
+ `type: nil,`
553
+ `per: nil)`
554
+ * returns the list of bounce reports
555
+ * `page`: page # (>= 1). Up to 200 records returned per page.
556
+ * `fields`: plucks these contact fields if they exist
557
+ * `from`: start of specific date range filter
558
+ * `to`: end of date range filter
559
+ * `unique`: if true, gets unique records
560
+ * `email`: gets Bounces for specific email
561
+ * `uid`: gets Bounces for provided uid
562
+ * `type`: if provided, should be either "soft", or "hard".
563
+ * `per`: gets the specified number of records
564
+
565
+ - ` get_unsubscribes(page,`
566
+ `fields: [],`
567
+ `from: nil,`
568
+ `to: nil,`
569
+ `unique: nil,`
570
+ `email: nil,`
571
+ `uid: nil,`
572
+ `per: nil)`
573
+ * returns the list of Unsubscribes with provided filter constraints
574
+ * `page`: page # (>= 1). Up to 200 records returned per page.
575
+ * `fields`: plucks these contact fields if they exist
576
+ * `from`: start of specific date range filter
577
+ * `to`: end of date range filter
578
+ * `unique` if true, gets unique records
579
+ * `email` gets Unsubscribes for specific email
580
+ * `uid` gets Unsubscribes for provided uid
581
+ * `per` gets the specified number of records
582
+
583
+ - `get_complaints(page,`
584
+ `fields: nil,`
585
+ `from: nil,`
586
+ `to: nil,`
587
+ `unique: nil,`
588
+ `email: nil,`
589
+ `uid: nil,`
590
+ `per: nil)`
591
+ * returns the list of complaints filtered by provided params
592
+ * `page`: page # (>= 1). Up to 200 records returned per page.
593
+ * `fields`: plucks these contact fields if they exist
594
+ * `from`: start of specific date range filter
595
+ * `to`: end of date range filter
596
+ * `unique`: if true, gets unique records
597
+ * `email`: gets Complaints for specific email
598
+ * `uid`: gets Complaints for provided uid
599
+ * `per`: gets the specified number of records
600
+
601
+ - ` get_ab_reports(name,`
602
+ `page,`
603
+ `from: nil,`
604
+ `to: nil,`
605
+ `per: nil)`
606
+ * returns the list of Ab Reports
607
+ * `name`: to get ab_reports with mentioned name
608
+ * `page`: page # (>= 1). Up to 200 records returned per page.
609
+ * `from`: beginning of date range filter
610
+ * `to`: end of date range filter
611
+ * `per`: gets the mentioned number of reports
612
+
613
+ - `get_journey(page)`
614
+ * returns the list of all Journeys
615
+ * `page`: page # (>= 1). Up to 200 records returned per page.
@@ -47,11 +47,12 @@ module MaropostApi
47
47
  order[:order_items].push(item.to_hash)
48
48
  end
49
49
  # required order fields to check for
50
- [:order_date, :order_status, :original_order_id, :order_items].each do |order_field|
50
+ [:order_date, :order_status, :original_order_id].each do |order_field|
51
51
  raise ArgumentError.new "order[:#{order_field}] is required!" if order.has_key?(order_field) == false
52
52
  end
53
53
 
54
54
  params = order
55
+ params[:order_items] = order_items
55
56
  params[:contact] = contact
56
57
  params[:uid] = uid
57
58
  params[:list_ids] = list_ids
@@ -1,5 +1,5 @@
1
1
  module MaropostApi
2
- class RelationalTables
2
+ class RelationalTableRows
3
3
 
4
4
  attr_accessor :table_name
5
5
 
@@ -1,3 +1,3 @@
1
1
  module MaropostApi
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/maropost_api.gemspec CHANGED
@@ -6,8 +6,8 @@ require "maropost_api/version"
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "maropost-api"
8
8
  spec.version = MaropostApi::VERSION
9
- spec.authors = ["Ashish Acharya"]
10
- spec.email = ["aacharya@ap-logic.com"]
9
+ spec.authors = ["Ashish Acharya", "David Lamb"]
10
+ spec.email = ["aacharya@aplogic.com", "dlamb@aplogic.com"]
11
11
 
12
12
  spec.summary = "A consumer gem for Maropost.com api"
13
13
  spec.description = "Maropost API"
metadata CHANGED
@@ -1,10 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maropost-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashish Acharya
8
+ - David Lamb
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
@@ -68,7 +69,8 @@ dependencies:
68
69
  version: '3.0'
69
70
  description: Maropost API
70
71
  email:
71
- - aacharya@ap-logic.com
72
+ - aacharya@aplogic.com
73
+ - dlamb@aplogic.com
72
74
  executables: []
73
75
  extensions: []
74
76
  extra_rdoc_files: []