README.md in maropost-api-0.1.0 vs README.md in maropost-api-0.2.0
- old
+ new
@@ -1,614 +1,1228 @@
-# marketing-ruby
\ No newline at end of file
+# Summary
+
+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.
+
+# Installation
+
+[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
+
+ gem install maropost-api
+
+# Usage
+To use a service, first instantiate it, providing your Maropost account_id
+and Auth Token. For example, to get your list of reports using the Reports
+service, execute:
+
+ reports = MaropostApi::Reports.new(account_id, auth_token)
+ result = reports.Get(1);
+ if result.success {
+ myReports = result.data;
+ }
+
+The result object contains two fields:
+
+- `success` (bool)
+- `errors` (object)
+
+If `success` is `false`, then `errors` will have details about the reason for
+failure. If `errors` is not `nil`, then `success` will always be `false`.
+
+The object might also contain one property, `data` (dynamic), which contains whatever
+data the operation itself provides. Some operations, such as `delete()`
+operations, might not provide any data.
+
+# Specific APIs
+The specific APIs contained are:
+
+- [Campaigns](#campaigns)
+- [AB Test Campaigns](#ab-test-campaigns)
+- [Transactional Campaigns](#transactional-campaigns)
+- [Contacts](#contacts)
+- [Journeys](#journeys)
+- [Product and Revenue](#product-and-revenue)
+- [Relational Table Rows](#relational-table-rows)
+- [Reports](#reports)
+
+## Campaigns
+### Instantiation:
+
+ MaropostApi::Campaigns.new(account_id, auth_token)
+
+### Available methods:
+
+ - `get(page)`
+ - returns the list of campaigns for the account
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_campaign(campaign_id)`
+ - returns the given campaign
+ - `get_bounce_reports(campaign_id, page)`
+ - returns the list of bounce reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_click_reports(campaign_id, page, unique = nil)`
+ - returns the list of click reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
+ - `get_complaint_reports(campaign_id, page)`
+ - returns the list of complaint reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_delivered_reports(campaign_id, page)`
+ - returns the list of delivered reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_hard_bounce_reports(campaign_id, page)`
+ - returns the list of hard bounces for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_link_reports(campaign_id, page, unique = nil)`
+ - returns the list of link reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
+ - `get_open_reports(campaign_id, page, unique = nil)`
+ - returns the list of open reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `unique`: `true` = get for unique contacts. Otherwise, `false`.
+ - `get_soft_bounce_reports(campaign_id, page)`
+ - returns the list of soft bounce reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `get_unsubscribe_reports(campaign_id, page)`
+ - returns the list of unsubscribe reports for the given campaign ID
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+## AB Test Campaigns
+### Instantiation:
+
+ MaropostApi::AbTestCampaigns.new(account_id, auth_token)
+
+### Available Methods:
+ - `create_ab_test(name, from_email, address, language, campaign_groups_attributes,`
+ `commit, sendAt, brand_id: nil, suppressed_list_ids: [],`
+ `suppressed_journey_ids: [], suppressed_segment_ids: [], emailPreviewLink: nil,`
+ `decided_by: nil, lists: [], ctags: [], segments: [])`
+ * Creates an Ab Test campaign
+ - `name`: name of the new campaign
+ - `from_email`: default sender email address for campaign emails
+ - `address`: default physical address included on campaign emails
+ - `language`: ISO 639-1 language code (e.g., "en"). 2 characters
+ - `campaign_groups_attributes`: array of attributes. Each attribute is itself a hash with the following properties (all strings):
+ - `name`: name of the group
+ - `content_id`: content ID
+ - `subject`: subject line of emails
+ - `from_name`: "from name" on emails
+ - `percentage`: percentage of emails that should be send with these settings
+ - `commit`: allowed values: 'Save as Draft' or 'Send Test' or 'Schedule'
+ - `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)
+ - `brand_id`: brand ID as a string
+ - `suppressed_list_ids`: array of list IDs in string format
+ - `suppressed_journey_ids`: array of journey IDs in string format
+ - `suppressed_segment_ids`: array of segment IDs in string format
+ - `email_preview_link`: (string)
+ - `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)
+ - `lists`: array of list IDs in string format
+ - `ctags`: array of tags in string format
+ - `segments`: array of segments in string format
+
+## Transactional Campaigns
+
+### Instantiation:
+
+ MaropostApi::TransactionalCampaigns.new(account_id, auth_token)
+
+### Available methods:
+ - `get(page)`
+ * returns the list of Transaction Campaigns
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ - `create(name, subject, preheader, from_name, from_email, reply_to,`
+ `content_id, email_preview_link, address, language, add_ctags)`
+ * Creates a Transactional Campaign
+ - `name` campaign name
+ - `subject` campaign subject
+ - `preheader` campaign preheader
+ - `from_name` sender name in the email
+ - `from_email` sender email address
+ - `reply_to` reply-to email address
+ - `content_id`
+ - `email_preview_link`
+ - `address` physical address
+ - `language` ISO 639-1 language code
+ - `add_ctags` array of campaign tags
+
+ - `send_email(campaign_id,
+ content: {},
+ contact: {},
+ send_time: {},
+ ignore_dnm: nil,
+ bcc: nil,
+ from_name: nil,
+ from_email: nil,
+ subject: nil,
+ reply_to: nil,
+ address: nil,
+ tags: {},
+ add_ctags: [])`
+ * 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.
+ - `campaign_id`: must be a campaign that already exists when you call `get()`. If you don't have one, first call `create(...)`.
+ - `content`: hash with the following fields: `name`, `html_part`, `text_part`
+ - `ignoreDnm`: If true, ignores the Do Not Mail list for the recipient contact.
+ - `contact`: hash defining the recipient with the following fields: `email`, `first_name`, `last_name`, `custom_field`
+ - `custom_field`: is a hash of the custom fields.
+ - `send_time`: hash with the following string fields: `hour` ("1" - "12") and `minute` ("00" - "59")
+ - If the hour is less than the current hour, the email will go out the following day.
+ - If the hour and minute combine to less than the current time, the email will go out the following day.
+ - `bcc`: BCC recipient. May only pass a single email address, empty string, or nil. If provided, it must be a well-formed email address.
+ - `from_name`: sender's name. If `from_email` is set, it overrides the transactional campaign default sender name. Ignored otherwise.
+ - `from_email`: sender's email address. Overrides the transactional campaign default sender email.
+ - `subject`: subject line of email. Overrides the transactional campaign default subject.
+ - `reply_to`: reply-to address. Overrides the transactional campaign default reply-to.
+ - `address`: physical address of sender. Overrides the transactional campaign default sender address.
+ - `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.
+ - `ctags`: campaign tags. Must be a simple array of scalar values.
+
+## Contacts
+
+### Instantiation:
+
+ MaropostApi::Contacts.new(account_id, auth_token)
+
+### Available methods:
+
+ - `get_for_email(email)`
+ * Gets the contact according to email address
+ - `email`: email address of the contact
+
+ - `get_opens(contact_id, page)`
+ * Gets the list of opens for the specified contact
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_clicks(contact_id, page)`
+ * Gets the list of clicks for the specified contact
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_for_list(list_id, page)`
+ * Gets the list of contacts for the specified list
+ - `list_id`: ID of the list to which the contact being retrieved
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_contact_for_list(list_id, contact_id)`
+ - Gets the specified contact from the specified list
+ - `list_id`: ID of the list to which the contact is being retrieved
+ - `contact_id`: contact id of contact to for which the contact is being retrieved
+
+ - `create_or_update_for_list(list_id, email, first_name: nil, last_name: nil, phone: nil,`
+ `fax: nil, uid: nil, custom_field: nil, add_tags: nil,`
+ `remove_tags: nil, remove_from_dnm: true, subscribe: true)`
+ * Creates a contact within a list. Updates if previous contact is matched by email
+ - `list_id`: ID of the list to which the contact being updated belongs
+ - `contact_id`: ID of the contact being updated
+ - `email`: Email address for the contact to be updated
+ - `first_name`: first name of Contact
+ - `last_name`: last name of Contact
+ - `phone`: phone number of Contact
+ - `fax`: fax number of Contact
+ - `uid`: UID for the Contact
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
+ - `add_tags`: tags to add to the contact. Simple array of tag names
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM)
+ - `subscribe`: set this true to subscribe contact to the list; false otherwise
+
+ - `update_for_list_and_contact(list_id, contact_id, email, first_name: nil, last_name: nil, phone: nil, fax: nil,`
+ `uid: nil, custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: true, subscribe: true)`
+ * Creates a contact within a list. Updates if previous contact is matched by email.
+ - `list_id`: ID of the list for which the contact is being created
+ - `email`: email address for the contact to be created|updated
+ - `first_name`: first name of Contact
+ - `last_name`: last Name of Contact
+ - `phone`: phone number of Contact
+ - `fax`: fax number of Contact
+ - `uid`: UID for the contact
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values.
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings).
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings).
+ - `remove_from_dnm`: Set this true to subscribe contact to the list, and remove it from DNM.
+ - `subscribe`: true to subscribe the contact to the list; false otherwise.
+
+ - `create_or_update_contact(email, first_name: nil, last_name: nil, phone: nil, fax: nil, uid: nil,`
+ `custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: true, subscribe: true)`
+ * Creates a contact without a list. Updates if already existing email is passed.
+ - `contact_id`: ID of the contact
+ - `email`: Email address for the contact to be created|updated
+ - `first_name`: first name of Contact
+ - `last_name`: last Name of Contact
+ - `phone`: phone number of Contact
+ - `fax`: fax number of Contact
+ - `uid`: UID for the contact
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings).
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings).
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM
+ - `subscribe`: true to subscribe the contact to the list; false otherwise.
+
+ - `create_or_update_for_list_and_workflows(email, first_name: nil, last_name: nil, phone: nil, fax: nil, uid: nil,`
+ `custom_field: nil, add_tags: nil, remove_tags: nil, remove_from_dnm: false, subscribe_list_ids: nil,`
+ `unsubscribe_list_ids: nil, unsubscribe_workflow_ids: nil, unsubscribe_campaign: nil)`
+ * Creates or updates Contact
+ - Multiple lists can be subscribed, unsubscribed.
+ - Multiple workflows can be unsubscribed.
+ - `email`: email address for the contact to be created|updated
+ - `first_name`: first name of Contact
+ - `last_name`: last name of Contact
+ - `phone`: phone number of Contact
+ - `fax`: fax number of Contact
+ - `uid`: UID for the Contact
+ - `custom_field`: custom fields passed as associative array. Keys represent the field names while values represent the values
+ - `add_tags`: tags to add to the contact. Simple array of tag names (strings)
+ - `remove_tags`: tags to remove from the contact. Simple array of tag names (strings)
+ - `remove_from_dnm`: set this true to subscribe contact to the list, and remove it from DNM
+ - `subscribe_list_ids`: simple array of IDs of lists to subscribe the contact to
+ - `unsubscribe_list_ids`: simple array of IDs of Lists to unsubscribe the contact from
+ - `unsubscribe_workflow_ids`: simple array of list of IDs of workflows to unsubscribe the contact from
+ - `unsubscribe_campaign`: campaign_id to unsubscribe the contact from
+
+ - `delete_from_all_lists(email)`
+ * Deletes specified contact from all lists
+ - `email`: email address of the contact
+
+ - `delete_from_lists(contact_id, list_ids: nil)`
+ * Deletes the specified contact from the specified lists
+ - `contact_id`: id of the contact
+ - `list_ids`: simple array of ids of the lists
+
+ - `delete_contact_for_uid(uid)`
+ * Deletes contact having the specified UID
+ - `uid`: UID of the Contact for which the contact is being deleted
+
+ - `delete_list_contact(list_id, contact_id)`
+ * Deletes specified contact from the specified list
+ - `list_id`: ID of the list for which the contact is being deleted
+ - `contact_id`: contact id of the list for which the contact is being deleted
+
+ - `unsubscribe_all(contact_field_value, contact_field_name: "email")`
+ * Unsubscribes contact having the specified field name/value.
+ - `contact_field_value`: the value of the field for the contact(s) being unsubscribed
+ - `contact_field_name`: the name of the field being checked for the value. At present, the accepted field names are: 'email' or 'uid'
+
+## Journeys
+
+### Instantiation:
+
+ MaropostApi::Journeys.new(account_id, auth_token)
+
+### Available methods:
+
+ - `get(page)`
+ * Gets the list of journeys
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_campaigns(journey_id, page)`
+ * Gets the list of all campaigns for the specified journey
+ - `journey_id`: get campaigns filtered with journey_id
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_contacts(journey_id, page)`
+ * Gets the list of all contacts for the specified journey
+ - `journey_id`: get contacts filtered with journey_id
+ - `page` : page # (>= 1). Up to 200 records returned per page.
+
+ - `stop_all(contact_id, recipientEmail, uid, page)`
+ * Stops all journeys, filtered for the matching parameters
+ - `contact_id`: this filter ignored unless greater than 0
+ - `recipientEmail`: this filter ignored if nil
+ - `uid`: this filter ignored if nil
+ - `page`: page # (>= 1). Up to 200 record returned per page.
+
+ - `pause_journey_for_contact(journey_id, contact_id)`
+ * Pause the specified journey for the specified contact
+ - `journey_id`: journey to pause
+ - `contact_id`: pause journey for specified contact id
+
+ - `pause_journey_for_uid(journey_id, uid)`
+ * Pause the specified journey for the contact having the specified UID
+ - `journey_id`: journey to pause
+ - `uid`: pause journey for specified uid
+
+ - `reset_journey_for_contact(journey_id, contact_id)`
+ * 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.
+ - `journey_id`: journey to reset
+ - `contact_id`: reset journey for specified contact id
+
+ - `reset_journey_for_uid(journey_id, uid)`
+ * 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.)
+ - `journey_id`: journey to reset
+ - `uid`: uid of contact to reset journey
+
+ - `start_journey_for_contact(journey_id, contact_id)`
+ * Starts a journey for contact having specified journey_id
+ - `journey_id`: journey to start
+ - `contact_id`: contact id of contact to start journey
+
+ - `start_journey_for_uid(journey_id, uid)`
+ * Starts a journey for contact having specified uid and journey_id
+ - 'journey_id': journey to start
+ - 'uid': uid of contact to start journey
+
+## Product and Revenue
+
+### Instantiation:
+
+ MaropostApi::ProductsAndRevenue.new(account_id, auth_token)
+
+### Available methods:
+
+ - `get_order(id)`
+ * Gets the specified order
+ - `get_order_for_original_order_id(original_order_id)`
+ * Gets the specified order
+
+ - `create_order(require_unique, contact: {}, order: {}, order_items: [], add_tags: [], `
+ `remove_tags: [], uid: nil, list_ids: nil, grand_total: nil, `
+ `campaign_id: nil, coupon_code: nil)`
+ * Creates an order
+ - `require_unique`: true to validate that the order has a unique original_order_id for the given contact.
+ - `contact`: hash containing the following fields: `email`, `first_name`, `last_name`
+ - `order`: hash containing the following fields:
+ - `order_date`: uses the format: "YYYY-MM-DDTHH:MM:SS-05:00"
+ - `order_status`: status of order
+ - `original_order_id`: sets the original_order_id field
+ - `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:
+ - `item_id`
+ - `price`: price of the order_item
+ - `quantity`: quantity purchased
+ - `description`: description of the product
+ - `adcode`: adcode of the order_item
+ - `category`: category of the product
+ - `add_tags` array of strings
+ - `remove_tags` array of strings
+ - `uid`: unique id
+ - `list_ids` CSV list of IDs (e.g, "12,13")
+ - `grand_total`: grand total
+ - `campaign_id`: campaign id
+ - `coupon_code`: coupon code
+
+ - `update_order_for_original_order_id(original_order_id,`
+ `order_date_time,`
+ `order_status,`
+ `order_items,`
+ `campaign_id: nil,`
+ `coupon_code: nil)`
+ * Updates an existing eCommerce order using unique original_order_id if the details are changed due to partial return or some other update.
+ - `original_order_id`: matches the original_order_id field of the order
+ - `order_date_time`: uses the format: YYYY-MM-DDTHH:MM:SS-05:00
+ - `order_status`: order status
+ - `order_items`: must contain at least one order_item.
+ - `campaign_id`: campaign id
+ - `coupon_code`: coupon code
+
+ - `update_order_for_order_id(order_id,`
+ `order_date_time,`
+ `order_status,`
+ `order_items,`
+ `campaign_id: nil,`
+ `coupon_code: nil)`
+ * Updates an existing eCommerce order using unique order_id if the details are changed due to partial return or some other update.
+ - `order_id`: matches the Maropost order_id field of the order
+ - `order_date_time`: uses the format: YYYY-MM-DDTHH:MM:SS-05:00
+ - `order_status`: order status
+ - `order_items`: must contain at least one order_item.
+ - `campaign_id`: campaign id
+ - `coupon_code`: coupon code
+
+ - `delete_for_original_order_id(original_order_id)`
+ * Deletes the complete eCommerce order if the order is cancelled or returned
+ - `original_order_id` matches the original_order_id field of the order
+
+ - `delete_for_order_id(id)`
+ * Deletes the complete eCommerce order if the order is cancelled or returned using Maropost order id
+ - `id`: Maropost order_id
+
+ - `delete_products_for_original_order_id(original_order_id, product_ids)`
+ * Deletes the specified product(s) from a complete eCommerce order if the product(s) is cancelled or returned
+ - `original_order_id`: matches the original_order_id field of the order
+ - `product_ids`: the product(s) to delete from the order
+
+ - `delete_products_for_order_id(id, product_ids)`
+ * Deletes the specified product(s) from a complete eCommerce order if the product(s) is cancelled or returned
+ - `id`: Maropost order_id
+ - `product_ids`: the product(s) to delete from the order
+
+## Relational Table Rows
+
+### Instantiation:
+Unlike the other services, the constructor for this requires a third
+parameter: `table_name`. So for example:
+
+ MaropostApi::RelationalTableRows.new(my_account_id, my_auth_token, "someTableName")
+
+`table_name` sets which relational table the service's operations should act against.
+To switch tables, you do not need to re-instantiate the service. Simply update the `table_name` property of the instance:
+
+ rows = MaropostApi::RelationalTableRows.new(myId, myToken, "table1");
+ rows.table_name = "table2";
+
+### Available functions:
+
+ - `get()`
+ * Gets the records of the Relational Table
+
+ - `show(unique_field_name, value)`
+ * Gets the specified record from the Relational Table
+ * `unique_field_namae`: name of the field representing the unique identifier (E.g., "id", "email")
+ * `value`: value of the identifier field, for the record to show
+
+ - `create(key_value_col, *key_value_cols)`
+ * Adds a record to the Relational Table
+ * `key_value_col`: object hash containing the fields of the
+ record to be created, each item consisting of two fields.
+ - NOTE: One of the fields must represent the unique identifier.
+
+ - `update(key_value_col, *key_value_cols)`
+ * Updates a record in the Relational Table.
+ * `key_value_col`: object hash containing the fields of the
+ record to be created, each item consisting of two fields.
+ - NOTE: One of the KeyValues must represent the unique identifier.
+
+ - `upsert(key_value_col, *key_value_cols)`
+ * Creates or updates a record in the Relational Table.
+ * `key_value_col`: object hash containing the fields of the
+ record to be created, each item consisting of two fields.
+ - NOTE: One of the KeyValues must represent the unique identifier.
+
+ - `delete(unique_field_name, value)`
+ * Deletes the given record of the Relational Table
+ * `unique_field_name` name of the field representing the unique identifier (E.g., "id", "email")
+ * `value` value of the identifier field, for the record to delete.
+
+## Reports
+
+### Instantiation:
+
+ MaropostApi::Reports.new(account_id, auth_token)
+
+### Available methods:
+ - `get(page)`
+ - returns the list of reports
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+
+ - `get_report(id)`
+ - Gets the list of reports
+ - `id`: report ID
+
+ - `get_opens(page,`
+ `fields: [],`
+ `from: nil,`
+ `to: nil,`
+ `unique: nil,`
+ `email: nil,`
+ `uid: nil,`
+ `per: nil)`
+ * returns the list of open reports based on filters and fields provided
+ - `page`: page # (>= 1). Up to 200 records returned per page.
+ * `fields`: contact field names to retrieve
+ * `from`: the beginning of date range filter
+ * `to`: the end of the date range filter
+ * `unique`: when true, gets only unique opens
+ * `email`: filters by provided email in the contact
+ * `uid`: filters by uid
+ * `per`: determines how many records per request to receive
+
+ - `get_clicks(page,`
+ `fields: [],`
+ `from: nil,`
+ `to: nil,`
+ `unique: nil,`
+ `email: nil,`
+ `uid: nil,`
+ `per: nil)`
+ * returns the list of click reports
+ * `page`: page # (>= 1). Up to 200 records returned per page.
+ * `fields`: plucks these contact fields if they exist
+ * `from`: start of specific date range filter
+ * `to`: end of date range filter
+ * `unique`: if true, gets unique records
+ * `email`: gets Clicks for specific email
+ * `uid`: gets Clicks for provided uid
+ * `per`: gets the specified number of records
+
+ - `get_bounce(page,`
+ `fields: [],`
+ `from: nil,`
+ `to: nil,`
+ `unique: nil,`
+ `email: nil,`
+ `uid: nil,`
+ `type: nil,`
+ `per: nil)`
+ * returns the list of bounce reports
+ * `page`: page # (>= 1). Up to 200 records returned per page.
+ * `fields`: plucks these contact fields if they exist
+ * `from`: start of specific date range filter
+ * `to`: end of date range filter
+ * `unique`: if true, gets unique records
+ * `email`: gets Bounces for specific email
+ * `uid`: gets Bounces for provided uid
+ * `type`: if provided, should be either "soft", or "hard".
+ * `per`: gets the specified number of records
+
+ - ` get_unsubscribes(page,`
+ `fields: [],`
+ `from: nil,`
+ `to: nil,`
+ `unique: nil,`
+ `email: nil,`
+ `uid: nil,`
+ `per: nil)`
+ * returns the list of Unsubscribes with provided filter constraints
+ * `page`: page # (>= 1). Up to 200 records returned per page.
+ * `fields`: plucks these contact fields if they exist
+ * `from`: start of specific date range filter
+ * `to`: end of date range filter
+ * `unique` if true, gets unique records
+ * `email` gets Unsubscribes for specific email
+ * `uid` gets Unsubscribes for provided uid
+ * `per` gets the specified number of records
+
+ - `get_complaints(page,`
+ `fields: nil,`
+ `from: nil,`
+ `to: nil,`
+ `unique: nil,`
+ `email: nil,`
+ `uid: nil,`
+ `per: nil)`
+ * returns the list of complaints filtered by provided params
+ * `page`: page # (>= 1). Up to 200 records returned per page.
+ * `fields`: plucks these contact fields if they exist
+ * `from`: start of specific date range filter
+ * `to`: end of date range filter
+ * `unique`: if true, gets unique records
+ * `email`: gets Complaints for specific email
+ * `uid`: gets Complaints for provided uid
+ * `per`: gets the specified number of records
+
+ - ` get_ab_reports(name,`
+ `page,`
+ `from: nil,`
+ `to: nil,`
+ `per: nil)`
+ * returns the list of Ab Reports
+ * `name`: to get ab_reports with mentioned name
+ * `page`: page # (>= 1). Up to 200 records returned per page.
+ * `from`: beginning of date range filter
+ * `to`: end of date range filter
+ * `per`: gets the mentioned number of reports
+
+ - `get_journey(page)`
+ * returns the list of all Journeys
+ * `page`: page # (>= 1). Up to 200 records returned per page.