Name: mrkt
Owner: Artsy
Description: This gem provides some level of abstraction to Marketo REST APIs.
Forked from: raszi/mrkt
Created: 2017-05-02 14:00:49.0
Updated: 2017-05-02 14:00:50.0
Pushed: 2017-04-28 15:20:49.0
Homepage: http://developers.marketo.com/documentation/rest
Size: 755
Language: Ruby
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This gem provides some level of abstraction to Marketo REST APIs. Please note that this gem is alpha quality.
Add this line to your application's Gemfile:
'mrkt'
And then execute:
$ bundle
Or install it yourself as:
$ gem install mrkt
Get the following from your Marketo admin:
'123-abc-123.mktorest.com'
'4567e1cdf-0fae-4685-a914-5be45043f2d8'
'7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt'
nt = Mrkt::Client.new(
st: '123-abc-123.mktorest.com',
ient_id: '4567e1cdf-0fae-4685-a914-5be45043f2d8',
ient_secret: '7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt')
If you need verbosity during troubleshooting, enable debug mode:
nt = Mrkt::Client.new(
st: '123-abc-123.mktorest.com',
ient_id: '4567e1cdf-0fae-4685-a914-5be45043f2d8',
ient_secret: '7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt',
bug: true,
gger: ::Logger.new("log/marketo.log"), # optional, defaults to Faraday default of logging to STDOUT
g_options: {bodies: true}) # optional, defaults to Faraday default of only logging headers
Since the Marketo API provides API access keys with a validity of 3600 seconds, if you are running an hourly cronjob it's possible that your subsequent call receives the same key from the previous hour, which is then immediately expired. If this is the case, you can configure the client to retry until receiving a valid key:
nt = Mrkt::Client.new(
st: '123-abc-123.mktorest.com',
ient_id: '4567e1cdf-0fae-4685-a914-5be45043f2d8',
ient_secret: '7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt',
try_authentication: true,
try_authentication_count: 3, # default: 3
try_authentication_wait_seconds: 1, # default: 0
This is turned off by default.
onse = client.get_leads(:email, ['sammy@acme.com'])
onse[:result].each do |result|
"id: #{result[:id]}, email: #{result[:email]}"
onse = client.createupdate_leads([{ email: 'sample@example.com', firstName: 'John' }], lookup_field: :email)
onse[:result].each do |result|
"id: #{result[:id]}, email: #{result[:email]}"
aign_id = 42 # this is the ID of the campaign
_ids = [1, 2, 4] # these are the leads who receive the campaign
ns = [{ # these tokens (optional) are then passed to the campaign
name: '{{my.message}}',
value: 'Updated message'
}, {
name: '{{my.other token}}',
value: 'Value for other token'
}]
nt.request_campaign(campaign_id, lead_ids, tokens) # tokens can be omited
requestId: 'e42b#14272d07d78', success: true }
$ bundle exec rspec
Examples are in the spec/
directory.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)