infusionsoft 1.0.2 → 1.0.3

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.
data/README.md CHANGED
@@ -1,14 +1,19 @@
1
1
  # The Infusionsoft Ruby Gem
2
2
  A Ruby wrapper for the Infusionsoft API
3
3
 
4
+ **This is a complete rewrite and has been implemented as a RubyGem**
5
+ All previous versions will need to update their calls to follow the new schema
6
+
4
7
  ## <a name="installation">Installation</a>
5
8
  gem install infusionsoft
6
9
 
7
10
  ## <a name="documentation">Documentation</a>
8
- documentation link here
11
+ [http://rubydoc.info/gems/infusionsoft/1.0.2/frames](http://rubydoc.info/gems/infusionsoft/1.0.2/frames)
9
12
 
10
13
  ## <a name="setup">Setup & Configuration</a>
11
- For Rails, create an initilizer in `config\initilizers` called infusionsoft.rb and the following
14
+ For Rails 2.3 add `config.gem 'infusionsoft'` or for Rails 3 add it to Bundler
15
+
16
+ Then create an initilizer in `config\initilizers` called infusionsoft.rb and the following
12
17
 
13
18
  Infusionsoft.configure do |config|
14
19
  config.api_url = 'YOUR_INFUSIONSOFT_URL' # example infused.infusionsoft.com
data/lib/infusionsoft.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'infusionsoft/api'
2
2
  require 'infusionsoft/client'
3
3
  require 'infusionsoft/configuration'
4
- #require 'api_infusionsoft/error'
5
4
 
6
5
  module Infusionsoft
7
6
  extend Configuration
@@ -12,7 +12,8 @@ module Infusionsoft
12
12
  require 'infusionsoft/client/data'
13
13
  require 'infusionsoft/client/affiliate'
14
14
  require 'infusionsoft/client/file'
15
- require 'infusionsoft/client/ticket'
15
+ require 'infusionsoft/client/ticket' # Deprecated by Infusionsoft
16
+ require 'infusionsoft/client/search'
16
17
 
17
18
  include Infusionsoft::Client::Contact
18
19
  include Infusionsoft::Client::Email
@@ -20,6 +21,7 @@ module Infusionsoft
20
21
  include Infusionsoft::Client::Data
21
22
  include Infusionsoft::Client::Affiliate
22
23
  include Infusionsoft::Client::File
23
- include Infusionsoft::Client::Ticket
24
+ include Infusionsoft::Client::Ticket # Deprecated by Infusionsoft
25
+ include Infusionsoft::Client::Search
24
26
  end
25
27
  end
@@ -1,51 +1,61 @@
1
1
  module Infusionsoft
2
2
  class Client
3
- ########################
4
- ### Affiliate Service ##
5
- ########################
3
+ # The Affiliate service is used to pull commission data and activities for affiliates.
4
+ # With this service, you have access to Clawbacks, Commissions, Payouts, Running Totals,
5
+ # and the Activity Summary. The methods in the Affiliate service mirror the reports
6
+ # produced inside Infusionsoft.
7
+ #
8
+ # @note To manage affiliate information (ie Name, Phone, etc.) you will need to use the Data service.
6
9
  module Affiliate
7
- # return all claw backs in a date range
10
+ # Used when you need to retrieve all clawed back commissions for a particular affiliate.
8
11
  #
9
- # @affiliate_id [Integer]
10
- # @start_date [Date]
11
- # @end_date [Date]
12
+ # @param [Integer] affiliate_id
13
+ # @params [Date] start_date
14
+ # @end_date [Date] end_date
15
+ # @return [Array] all claw backs for the given affiliate that have occurred within the date
16
+ # range specified
12
17
  def affiliate_clawbacks(affiliate_id, start_date, end_date)
13
- response = get('APIAffiliateService', 'affClawbacks', affiliate_id, start_date, end_date)
18
+ response = get('APIAffiliateService.affClawbacks', affiliate_id, start_date, end_date)
14
19
  end
15
20
 
16
- # return all commissions in a date range
21
+ # Used to retrieve all commissions for a specific affiliate within a date range.
17
22
  #
18
- # @affiliate_id [Integer]
19
- # @start_date [Date]
20
- # @end_date [Date]
23
+ # @param [Integer] affiliate_id
24
+ # @param [Date] start_date
25
+ # @param [Date] end_date
26
+ # @return [Array] all sales commissions for the given affiliate earned within the date range
27
+ # specified
21
28
  def affiliate_commissions(affiliate_id, start_date, end_date)
22
- response = get('APIAffiliateService', 'affCommissions', affiliate_id, start_date, end_date)
29
+ response = get('APIAffiliateService.affCommissions', affiliate_id, start_date, end_date)
23
30
  end
24
31
 
25
- # return all payouts in a date range
32
+ # Used to retrieve all payments for a specific affiliate within a date range.
26
33
  #
27
- # @affiliate_id [Integer]
28
- # @start_date [Date]
29
- # @end_date [Date]
34
+ # @param [Integer] affiliate_id
35
+ # @param [Date] start_date
36
+ # @param [Date] end_date
37
+ # @return [Array] a list of rows, each row is a single payout
30
38
  def affiliate_payouts(affiliate_id, start_date, end_date)
31
- response = get('APIAffiliateService', 'affPayouts', affiliate_id, start_date, end_date)
39
+ response = get('APIAffiliateService.affPayouts', affiliate_id, start_date, end_date)
32
40
  end
33
41
 
34
- # returns a list with each row representing a single affiliates totals represented by a map with key
35
- # one of the names above, and value being the total for the variable
42
+ # This method is used to retrieve all commissions for a specific affiliate within a date range.
36
43
  #
37
- # @affiliate_list [Array]
44
+ # @param [Array] affiliate_list
45
+ # @return [Array] all sales commissions for the given affiliate earned within the date range
46
+ # specified
38
47
  def affiliate_running_totals(affiliate_list)
39
- response = get('APIAffiliateService', 'affRunningTotals', affiliate_list)
48
+ response = get('APIAffiliateService.affRunningTotals', affiliate_list)
40
49
  end
41
50
 
42
- # return how much the specified affiliates are owed
51
+ # Used to retrieve a summary of statistics for a list of affiliates.
43
52
  #
44
- # @affiliate_list [Array]
45
- # @start_date [Date]
46
- # @end_date [Date]
53
+ # @param [Array] affiliate_list
54
+ # @param [Date] start_date
55
+ # @param [Date] end_date
56
+ # @return [Array<Hash>] a summary of the affiliates information for a specified date range
47
57
  def affiliate_summary(affiliate_list, start_date, end_date)
48
- response = get('APIAffiliateService', 'affSummary', affiliate_list, start_date, end_date)
58
+ response = get('APIAffiliateService.affSummary', affiliate_list, start_date, end_date)
49
59
  end
50
60
  end
51
61
  end
@@ -1,143 +1,187 @@
1
1
  module Infusionsoft
2
2
  class Client
3
- ########################
4
- ### Contact Service ###
5
- ########################
3
+ # Contact service is used to manage contacts. You can add, update and find contacts in
4
+ # addition to managing follow up sequences, tags and action sets.
6
5
  module Contact
7
- # Finds all contacts with the supplied email address in any of the three contact record email addresses
6
+ # Creates a new contact record from the data passed in the associative array.
8
7
  #
9
- # @email [String]
10
- # @selected_fields [Array]
11
- def contact_find_by_email(email, selected_fields)
12
- response = get('ContactService.findByEmail', email, selected_fields)
13
- end
14
-
15
- # Adds a contact to the database, then opts in the email address
16
- #
17
- # @data = [Hash]
18
- # @example data = {:EmailAddress1 => 'test@test.com', :FirstName => 'first_name', :LastName => 'last_name'}
19
- # @returns [Integer] This is the id of the newly added contact
8
+ # @param [Hash] data contains the mappable contact fields and it's data
9
+ # @return [Integer] the id of the newly added contact
10
+ # @example
11
+ # { :Email => 'test@test.com', :FirstName => 'first_name', :LastName => 'last_name' }
20
12
  def contact_add(data)
21
13
  contact_id = get('ContactService.add', data)
22
- if data.has_key?("Email"); api_email_optin(data["Email"], "requested information"); end
14
+ if data.has_key?("Email"); email_optin(data["Email"], "requested information"); end
23
15
  return contact_id
24
16
  end
25
17
 
26
- # Creates a new recurring order for a contact.
18
+ # Adds or updates a contact record based on matching data
27
19
  #
28
- # @contact_id [Integer]
29
- # @allow_duplicate [Boolean]
30
- # @cprogram_id [Integer]
31
- # @merchante_account_id [Integer]
32
- # @credit_card_id [Integer]
33
- # @affiliate_id [Integer]
34
- def contact_add_recurring_order(contact_id, allow_duplicate, cprogram_id, merchant_account_id, credit_card_id, affiliate_id,
35
- days_till_charge)
36
- response = get('ContactService','addRecurringOrder', contact_id, allow_duplicate, cprogram_id,
37
- merchant_account_id, credit_card_id, affiliate_id, days_till_charge)
20
+ # @param [Array<Hash>] data the contact data you want added
21
+ # @param [String] check_type available options are 'Email', 'EmailAndName',
22
+ # 'EmailAndNameAndCompany'
23
+ # @return [Integer] id of the contact added or updated
24
+ def contact_add_with_dup_check(data, check_type)
25
+ response = get('ContactService.addWithDupCheck', data, check_type)
38
26
  end
39
27
 
40
- # Adds a contact to a group
28
+ # Updates a contact in the database.
41
29
  #
42
- # @contact_id [Integer]
43
- # @group_id [Integer]
44
- def contact_add_to_group(contact_id, group_id)
45
- response = get('ContactService', 'addToGroup', contact_id, group_id)
46
- end
47
-
48
- def contact_link_contact(remoteApp, remoteId, localId)
49
- response = get('ContactService', 'linkContact', remoteApp, remoteId, localId)
30
+ # @param [Integer] contact_id
31
+ # @param [Hash] data contains the mappable contact fields and it's data
32
+ # @return [Integer] the id of the contact updated
33
+ # @example
34
+ # { :FirstName => 'first_name', :StreetAddress1 => '123 N Street' }
35
+ def contact_update(contact_id, data)
36
+ bool = get('ContactService.update', contact_id, data)
37
+ if data.has_key?("Email"); email_optin(data["Email"], "requested information"); end
38
+ return bool
50
39
  end
51
40
 
52
41
  # Loads a contact from the database
53
42
  #
54
- # @id [Integer]
55
- # @selected_fields [Array]
43
+ # @param [Integer] id
44
+ # @param [Array] selected_fields the list of fields you want back
45
+ # @return [Array] the fields returned back with it's data
46
+ # @example this is what you would get back
47
+ # { "FirstName" => "John", "LastName" => "Doe" }
56
48
  def contact_load(id, selected_fields)
57
- response = get('ContactService', 'load', id, selected_fields)
49
+ response = get('ContactService.load', id, selected_fields)
58
50
  end
59
51
 
60
- def contact_locate_contact_link(locate_map_id)
61
- response = get('ContactService', 'locateContactLink', locate_map_id)
52
+ # Finds all contacts with the supplied email address in any of the three contact record email
53
+ # addresses.
54
+ #
55
+ # @param [String] email
56
+ # @param [Array] selected_fields the list of fields you want with it's data
57
+ # @return [Array<Hash>] the list of contacts with it's fields and data
58
+ def contact_find_by_email(email, selected_fields)
59
+ response = get('ContactService.findByEmail', email, selected_fields)
62
60
  end
63
61
 
64
- def contact_mark_link_updated(locate_map_id)
65
- response = get('ContactService', 'markLinkUpdated', locate_map_id)
62
+ # Adds a contact to a follow-up sequence (campaigns were the original name of follow-up sequences).
63
+ #
64
+ # @param [Integer] contact_id
65
+ # @param [Integer] campaign_id
66
+ # @return [Boolean] returns true/false if the contact was added to the follow-up sequence
67
+ # successfully
68
+ def contact_add_to_campaign(contact_id, campaign_id)
69
+ response = get('ContactService.addToCampaign', contact_id, campaign_id)
66
70
  end
67
71
 
68
- # Adds a contact to a campaign.
72
+ # Returns the Id number of the next follow-up sequence step for the given contact.
69
73
  #
70
- # @contact_id [Integer]
71
- # @campaign_id [Integer]
72
- def contact_add_to_campaign(contact_id, campaign_id)
73
- response = get('ContactService','addToCampaign', contact_id, campaign_id)
74
+ # @param [Integer] contact_id
75
+ # @param [Integer] campaign_id
76
+ # @return [Integer] id number of the next unfishished step in the given follow up sequence
77
+ # for the given contact
78
+ def contact_get_next_campaign_step(contact_id, campaign_id)
79
+ response = get('ContactService.getNextCampaignStep', contact_id, campaign_id)
74
80
  end
75
81
 
76
- # Pauses a campaign for a given contact.
82
+ # Pauses a follow-up sequence for the given contact record
77
83
  #
78
- # @contact_id [Integer]
79
- # @campaign_id [Integer]
84
+ # @param [Integer] contact_id
85
+ # @param [Integer] campaign_id
86
+ # @return [Boolean] returns true/false if the sequence was paused
80
87
  def contact_pause_campaign(contact_id, campaign_id)
81
- response = get('ContactService', 'pauseCampaign', contact_id, campaign_id)
88
+ response = get('ContactService.pauseCampaign', contact_id, campaign_id)
82
89
  end
83
90
 
84
- # Removes a contact from a given campaign.
91
+ # Removes a follow-up sequence from a contact record
85
92
  #
86
- # @contact_id [Integer]
87
- # @campaign_id [Integer]
93
+ # @param [Integer] contact_id
94
+ # @param [Integer] campaign_id
95
+ # @return [Boolean] returns true/false if removed
88
96
  def contact_remove_from_campaign(contact_id, campaign_id)
89
- response = get('ContactService', 'removeFromCampaign', contact_id, campaign_id)
97
+ response = get('ContactService.removeFromCampaign', contact_id, campaign_id)
90
98
  end
91
99
 
92
- # returns the next step in a campaign
100
+ # Resumes a follow-up sequence that has been stopped/paused for a given contact.
93
101
  #
94
- # @contact_id [Integer]
95
- # @campaign_id [Integer]
96
- def contact_get_next_campaign_step(contact_id, campaign_id)
97
- response = get('ContactService', 'getNextCampaignStep', contact_id, campaign_id)
102
+ # @param [Integer] contact_id
103
+ # @param [Ingeger] campaign_id
104
+ # @return [Boolean] returns true/false if sequence was resumed
105
+ def contact_resume_campaign(contact_id, campaign_id)
106
+ response = get('ConactService.resumeCampaignForContact', contact_id, campaign_id)
98
107
  end
99
108
 
100
- # Reschedules a campaign step for a list of contacts
109
+ # Immediately performs the given follow-up sequence step_id for the given contacts.
101
110
  #
102
- # @list_of_contacts [Array]
103
- # @campaign_id [Integer]
104
- def contact_reschedule_campaign_step(list_of_contacts, campaign_id)
105
- response = get('ContactService', 'reschedulteCampaignStep', list_of_contacts, campaign_id)
111
+ # @param [Array<Integer>] list_of_contacts
112
+ # @param [Integer] ) step_id
113
+ # @return [Boolean] returns true/false if the step was rescheduled
114
+ def contact_reschedule_campaign_step(list_of_contacts, step_id)
115
+ response = get('ContactService.reschedulteCampaignStep', list_of_contacts, step_id)
106
116
  end
107
117
 
108
- # Removes a contact from a given group.
118
+ # Removes a tag from a contact (groups were the original name of tags).
109
119
  #
110
- # @contact_id [Integer]
111
- # @group_id [Integer]
120
+ # @param [Integer] contact_id
121
+ # @param [Integer] group_id
122
+ # @return [Boolean] returns true/false if tag was removed successfully
112
123
  def contact_remove_from_group(contact_id, group_id)
113
- response = get('ContactService', 'removeFromGroup', contact_id, group_id)
124
+ response = get('ContactService.removeFromGroup', contact_id, group_id)
125
+ end
126
+
127
+ # Adds a tag to a contact
128
+ #
129
+ # @param [Integer] contact_id
130
+ # @param [Integer] group_id
131
+ # @return [Boolean] returns true/false if the tag was added successfully
132
+ def contact_add_to_group(contact_id, group_id)
133
+ response = get('ContactService.addToGroup', contact_id, group_id)
114
134
  end
115
135
 
116
- # Executes an action sequence for a given contact
136
+ # Runs an action set on a given contact record
137
+ #
138
+ # @param [Integer] contact_id
139
+ # @param [Integer] action_set_id
140
+ # @return [Array<Hash>] A list of details on each action run
141
+ # @example here is a list of what you get back
142
+ # [{ 'Action' => 'Create Task', 'Message' => 'task1 (Task) sent successfully', 'isError' =>
143
+ # nil }]
117
144
  def contact_run_action_set(contact_id, action_set_id)
118
- response = get('ContactService', 'runActionSequence', contact_id, action_set_id)
145
+ response = get('ContactService.runActionSequence', contact_id, action_set_id)
146
+ end
147
+
148
+ def contact_link_contact(remoteApp, remoteId, localId)
149
+ response = get('ContactService.linkContact', remoteApp, remoteId, localId)
150
+ end
151
+
152
+
153
+ def contact_locate_contact_link(locate_map_id)
154
+ response = get('ContactService.locateContactLink', locate_map_id)
155
+ end
156
+
157
+ def contact_mark_link_updated(locate_map_id)
158
+ response = get('ContactService.markLinkUpdated', locate_map_id)
119
159
  end
120
160
 
121
- # Executes an action sequence for a given contact, passing in
122
- # runtime params for running affiliate signup actions, etc
161
+ # Creates a new recurring order for a contact.
123
162
  #
124
- # @contact_id [Integer]
125
- # @action_set_id [Integer]
126
- # @params [Hash]
127
- def contact_run_action_set_with_params(contact_id, action_set_id, params)
128
- response = get('ContactService', 'runActionSequence', contact_id, action_set_id, params)
163
+ # @param [Integer] contact_id
164
+ # @param [Boolean] allow_duplicate
165
+ # @param [Integer] cprogram_id
166
+ # @param [Integer] merchant_account_id
167
+ # @param [Integer] credit_card_id
168
+ # @param [Integer] affiliate_id
169
+ def contact_add_recurring_order(contact_id, allow_duplicate, cprogram_id, merchant_account_id,
170
+ credit_card_id, affiliate_id, days_till_charge)
171
+ response = get('ContactService.addRecurringOrder', contact_id, allow_duplicate, cprogram_id,
172
+ merchant_account_id, credit_card_id, affiliate_id, days_till_charge)
129
173
  end
130
174
 
131
- # Updates a contact in the database.
175
+ # Executes an action sequence for a given contact, passing in runtime params
176
+ # for running affiliate signup actions, etc
132
177
  #
133
- # @contact_id [Integer]
134
- # @data [Hash]
135
- # @example {:FirstName => 'first_name', :StreetAddress1 => '123 N Street'}
136
- def contact_update(contact_id, data)
137
- bool = get('ContactService', 'update', contact_id, data)
138
- if data.has_key?("Email"); api_email_optin(data["Email"], "requested information"); end
139
- return bool
178
+ # @param [Integer] contact_id
179
+ # @param [Integer] action_set_id
180
+ # @param [Hash] data
181
+ def contact_run_action_set_with_params(contact_id, action_set_id, data)
182
+ response = get('ContactService.runActionSequence', contact_id, action_set_id, data)
140
183
  end
184
+
141
185
  end
142
186
  end
143
187
  end
@@ -1,89 +1,131 @@
1
1
  module Infusionsoft
2
2
  class Client
3
- ########################
4
- ### Data Service ###
5
- ########################
3
+ # The Data service is used to manipulate most data in Infusionsoft. It permits you to
4
+ # work on any available tables and has a wide range of uses.
6
5
  module Data
7
- # Adds a record to the database. If you attempt to set fields that are marked read-only
8
- # by the Data Spec, this operation will simply ignore those fields - not throw an error
6
+ # Adds a record with the data provided.
9
7
  #
10
- # @table [String]
11
- # @values [Hash]
12
- def data_add(table, values)
13
- response = get('DataService.add', table, values)
8
+ # @param [String] table the name of the Infusiosoft database table
9
+ # @param [Hash] data the fields and it's data
10
+ # @return [Integer] returns the id of the record added
11
+ def data_add(table, data)
12
+ response = get('DataService.add', table, data)
13
+ end
14
+
15
+ # This method will load a record from the database given the primary key.
16
+ #
17
+ # @param [String] table
18
+ # @param [Integer] id
19
+ # @param [Array] selected_fields
20
+ # @return [Hash] the field names and their data
21
+ # @example
22
+ # { "FirstName" => "John", "LastName" => "Doe" }
23
+ def data_load(table, id, selected_fields)
24
+ response = get('DataService.load', table, id, selected_fields)
25
+ end
26
+
27
+ # Updates the specified record (indicated by ID) with the data provided.
28
+ #
29
+ # @param [String] table
30
+ # @param [Integer] id
31
+ # @param [Hash] data this is the fields and values you would like to update
32
+ # @return [Integer] id of the record updated
33
+ # @example
34
+ # { :FirstName => 'John', :Email => 'test@test.com' }
35
+ def data_update(table, id, data)
36
+ response = get('DataService.update', table, id, data)
37
+ end
38
+
39
+ # Deletes the record (specified by id) in the given table from the database.
40
+ #
41
+ # @param [String] table
42
+ # @param [Integer] id
43
+ # @return [Boolean] returns true/false if the record was successfully deleted
44
+ def data_delete(table, id)
45
+ response = get('DataService.delete', table, id)
14
46
  end
15
47
 
16
48
  # This will locate all records in a given table that match the criteria for a given field.
17
49
  #
18
- # @table [String]
19
- # @limit [Integer]
20
- # @page [Integer]
21
- # @field_name [String]
22
- # @field_value [String]
23
- # @selected_fields [Array]
50
+ # @param [String] table
51
+ # @param [Integer] limit how many records you would like to return (max is 1000)
52
+ # @param [Integer] page the page of results (each page is max 1000 records)
53
+ # @param [String] field_name
54
+ # @param [String, Integer, Date] field_value
55
+ # @param [Array] selected_fields
56
+ # @return [Array<Hash>] returns the array of records with a hash of the fields and values
24
57
  def data_find_by_field(table, limit, page, field_name, field_value, selected_fields)
25
58
  response = get('DataService.findByField', table, limit, page, field_name,
26
59
  field_value, selected_fields)
27
60
  end
28
61
 
29
- # This method will load a record from the database given the primary key
62
+ # Queries records in a given table to find matches on certain fields.
30
63
  #
31
- # @table [String]
32
- # @id [Integer]
33
- # @selected_fields [Array]
34
- def data_load(table, id, selected_fields)
35
- response = get('DataService.load', table, id, selected_fields)
36
- end
37
-
38
- # Queries records in a given table to find matches on certain fields
39
- #
40
- # @table [String]
41
- # @limit [Integer]
42
- # @page [Integer]
43
- # @data [Hash] The data you would like to query on. { :FirstName => 'first_name' }
44
- # @selected_fields [Array]
64
+ # @param [String] table
65
+ # @param [Integer] limit
66
+ # @param [Integer] page
67
+ # @param [Hash] data the data you would like to query on. { :FirstName => 'first_name' }
68
+ # @param [Array] selected_fields the fields and values you want back
69
+ # @return [Array<Hash>] the fields and associated values
45
70
  def data_query(table, limit, page, data, selected_fields)
46
71
  response = get('DataService.query', table, limit, page, data, selected_fields)
47
72
  end
48
73
 
49
- # Updates a given record to the database
74
+ # Adds a custom field to Infusionsoft
50
75
  #
51
- # @table [String]
52
- # @id [Integer]
53
- # @values [Hash] This is the fields and values you would like to update
54
- # @example { :FirstName => 'first_name', :EmailAddress1 => 'test@test.com' }
55
- def data_update(table, id, values)
56
- response = get('DataService.update', table, id, values)
76
+ # @param [String] field_type options include Person, Company, Affiliate, Task/Appt/Note,
77
+ # Order, Subscription, or Opportunity
78
+ # @param [String] name
79
+ # @param [String] data_type the type of field Text, Dropdown, TextArea
80
+ # @param [Integer] header_id see notes here
81
+ # http://help.infusionsoft.com/developers/services-methods/data/addCustomField
82
+ def data_add_custom_field(field_type, name, data_type, header_id)
83
+ response = get('DataService.addCustomField', field_type, name, data_type, header_id)
57
84
  end
58
85
 
59
- # Adds a custom field to Infusionsoft
86
+ # Authenticate an Infusionsoft username and password(md5 hash). If the credentials match
87
+ # it will return back a User ID, if the credentials do not match it will send back an
88
+ # error message
60
89
  #
61
- # @context [String]
62
- # @label [String]
63
- # @data_type [String]
64
- # @group_id [Integer]
65
- def data_add_custom_field(context, label, data_type, group_id)
66
- response = get('DataService.addCustomField', context, label, data_type, group_id)
90
+ # @param [String] username
91
+ # @param [String] password
92
+ # @return [Integer] id of the authenticated user
93
+ def data_authenticate_user(username, password)
94
+ response = get('DataService.authenticateUser', username, password)
67
95
  end
68
96
 
69
- # Updates a custom field
97
+ # This method will return back the data currently configured in a user configured
98
+ # application setting.
70
99
  #
71
- # @field_id [Integer]
72
- # @field_value
73
- def data_update_custom_field(field_id, field_value)
74
- response = get('DataService.updateCustomField', field_id, field_value)
100
+ # @param [String] module
101
+ # @param [String] setting
102
+ # @return [String] current values in given application setting
103
+ # @note to find the module and option names, view the HTML field name within the Infusionsoft
104
+ # settings. You will see something such as name="Contact_WebModule0optiontypes" . The portion
105
+ # before the underscore is the module name. "Contact" in this example. The portion after the
106
+ # 0 is the setting name, "optiontypes" in this example.
107
+ def data_get_app_setting(module_name, setting)
108
+ response = get('DataService.getAppSetting', module_name, setting)
75
109
  end
76
110
 
77
- # Authenticates a user account in Infusionsoft
111
+ # Returns a temporary API key if given a valid Vendor key and user credentials.
78
112
  #
79
- # @username [String]
80
- # @password [String]
81
- def data_authenticate_user(username, password)
82
- response = get('DataService.authenticateUser', username, password)
113
+ # @param [String] vendor_key
114
+ # @param [String] username
115
+ # @param [String] password_hash an md5 hash of users password
116
+ # @return [String] temporary API key
117
+ def data_get_temporary_key(vendor_key, username, password_hash)
118
+ response = get('DataService.getTemporaryKey', username, password_hash)
83
119
  end
84
120
 
85
- def data_echo(text)
86
- response = get('DataService.echo', text)
121
+ # Updates a custom field. Every field can have it’s display name and group id changed,
122
+ # but only certain data types will allow you to change values(dropdown, listbox, radio, etc).
123
+ #
124
+ # @param [Integer] field_id
125
+ # @param [Hash] field_values
126
+ # @return [Boolean] returns true/false if it was updated
127
+ def data_update_custom_field(field_id, field_values)
128
+ response = get('DataService.updateCustomField', field_id, field_values)
87
129
  end
88
130
  end
89
131
  end