Intuit Customer Account Data API client
Aggcat is available through Rubygems and can be installed via:
$ gem install aggcat
or add it to your Gemfile like this:
gem 'aggcat'
Register for Intuit Customer Account Data.
Get your OAuth data.
require 'aggcat'
# Aggcat global configuration
Aggcat.configure do |config|
config.issuer_id = 'your issuer id'
config.consumer_key = 'your consumer key'
config.consumer_secret = 'your consumer secret'
config.certificate_path = '/path/to/your/certificate/key'
config.verbose = false # verpose = true will output all raw XML API requests/responses to STDOUT
# certificate could be provided as a string instead of a path to a file using certificate_value
# certificate_value takes precedence over certificate_path
# certificate_value should contain newline characters as appropriate
# config.certificate_value = "-----BEGIN RSA PRIVATE KEY-----\nasdf123FOO$BAR\n...\n-----END RSA PRIVATE KEY-----"
# certificate's can contain passwords, put your password here.
# config.certificate_password = "1234"
end
# alternatively, specify configuration options when instantiating an Aggcat::Client
client = Aggcat::Client.new(
issuer_id: 'your issuer id',
consumer_key: 'your consumer key',
consumer_secret: 'your consumer secret',
certificate_path: '/path/to/your/certificate/key', # OR certificate_value: "--BEGIN RSA KEY--..."
customer_id: 'scope for all requests'
)
# create an scoped client by customer_id
client = Aggcat.scope(customer_id)
# get all supported financial institutions
client.institutions
# get details for Bank of America
client.institution(14007)
# add new financial account to aggregate from Bank of America
response = client.discover_and_add_accounts(14007, username, password)
# in case MFA is required
questions = response[:result][:challenges]
answers = ['first answer', 'second answer']
challenge_session_id = response[:challenge_session_id]
challenge_node_id = response[:challenge_node_id]
client.account_confirmation(14007, challenge_session_id, challenge_node_id, answers)
# get already aggregated financial account
client.account(account_id)
# get all aggregated accounts
client.accounts
# get account transactions
start_date = Date.today - 30
end_date = Date.today # optional
client.account_transactions(account_id, start_date, end_date)
# update account type
client.update_account_type(account_id, 'CREDITCARD')
# update login credentials
client.update_login(institution_id, login_id, new_username, new_password)
# in case MFA is required
client.update_login_confirmation(login_id, challenge_session_id, challenge_node_id, answers)
# get position info for an investment account
client.investment_positions(account_id)
# you can set scope inline for any request
Aggcat.scope(customer_id).account(account_id)
# delete account
client.delete_account(account_id)
# delete customer for the current scope
client.delete_customer
Please make sure to read Intuit's Account Data API.
- Ruby 1.9.3 or higher
Copyright (c) 2013 Gene Drabkin. See LICENSE for details.