Aggcat

Build Status Coverage Status Gem Version

Intuit Customer Account Data API client

Installation

Aggcat is available through Rubygems and can be installed via:

$ gem install aggcat

or add it to your Gemfile like this:

gem 'aggcat'

Start Guide

Register for Intuit Customer Account Data.

Get your OAuth data.

Usage

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.(14007, challenge_session_id, challenge_node_id, answers)

# get already aggregated financial account
client.()

# get all aggregated accounts
client.accounts

# get account transactions
start_date = Date.today - 30
end_date = Date.today # optional
client.(, start_date, end_date)

# update account type
client.(, 'CREDITCARD')

# update login credentials
client.(institution_id, , new_username, new_password)

# in case MFA is required
client.(, challenge_session_id, challenge_node_id, answers)

# get position info for an investment account
client.investment_positions()

# you can set scope inline for any request
Aggcat.scope(customer_id).()

# delete account
client.()

# delete customer for the current scope
client.delete_customer

Documentation

Please make sure to read Intuit's Account Data API.

API Use Cases.

Testing Calls to the API.

Requirements

  • Ruby 1.9.3 or higher

Copyright (c) 2013 Gene Drabkin. See LICENSE for details.