Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wfgilman/yodlee-elixir
An Elixir library for Yodlee
https://github.com/wfgilman/yodlee-elixir
elixir yodlee
Last synced: 10 days ago
JSON representation
An Elixir library for Yodlee
- Host: GitHub
- URL: https://github.com/wfgilman/yodlee-elixir
- Owner: wfgilman
- License: mit
- Created: 2018-06-12T20:05:46.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-07-19T19:01:33.000Z (over 3 years ago)
- Last Synced: 2024-10-16T09:36:02.492Z (about 1 month ago)
- Topics: elixir, yodlee
- Language: Elixir
- Size: 17.6 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Yodlee
[![Build Status](https://travis-ci.org/wfgilman/yodlee-elixir.svg?branch=master)](https://travis-ci.org/wfgilman/yodlee-elixir)
[![Hex.pm Version](https://img.shields.io/hexpm/v/yodlee_elixir.svg)](https://hex.pm/packages/yodlee_elixir)Elixir library for Yodlee's v1.0 API
Supported Yodlee endpoints:
- [x] Cobrand
- [x] User
- [x] Accounts
- [ ] Holdings
- [x] Providers
- [x] ProviderAccounts
- [x] Transactions
- [ ] Statements
- [ ] Derived
- [x] DataExtracts
- [ ] Refresh## Usage
Add to your dependencies in `mix.exs`. The hex specification is required.
```elixir
def deps do
[{:yodlee, "~> 0.1", hex: :yodlee_elixir}]
end
```## Configuration
Add the following configuration to your project.
```elixir
config :yodlee,
root_uri: "https://developer.api.yodlee.com/ysl/restserver/v1/",
cob_session: nil,
cobrand_login: "your_cobrand_username",
cobrand_password: "your_cobrand_password",
httpoison_options: [timeout: 10_000, recv_timeout: 100_000]
```## Getting Started
Here's a few usage examples for getting started (courtesy of [tmaszk](https://github.com/tmaszk)).
#### Logging in
Establishing a Cobrand session
```elixir
iex(1)> {:ok, cobrand} = Yodlee.Cobrand.login()
{:ok,
%Yodlee.Cobrand{
application_id: "XXXXX",
cobrand_id: 10...,
locale: "en_US",
session: "08..."
}}
```Establishing a User session (required for most API calls)
```elixir
iex(2)> {:ok, user} = Yodlee.User.login(cobrand.session, %{ loginName: "YourCobrandLoginName", password: "YourCobrandPassword", email: "YourEmailAddress" })
{:ok,
%Yodlee.User{
id: 10...,
login_name: "..",
session: "08..."
}}
```#### Linking a Provider Account
I recommend using Yodlee's FastLink for facilitating the addition and updating of Provider
Accounts due to the complexity and ever-changing nature of Provider login and MFA
challenges. FastLink is fully supported by Yodlee.#### Fetching User Data
Searching Providers
```elixir
iex(3)> Yodlee.Provider.search(user.session, %{ name: "Hamilton"} )
{:ok,
[
%Yodlee.Provider{
auth_type: "MFA_CREDENTIALS",
base_url: "http://www.hamiltonstatebank.com/",
container_names: ["loan", "bank"],
...
},
%Yodlee.Provider{...},
...
]}
```Getting Transactions from a linked User Account
```elixir
iex(4)> {:ok, accounts} = Yodlee.Account.list(user.session)
{:ok,
[
%Yodlee.Account{
account_name: "DDA",
account_number: "...",
account_status: "ACTIVE",
account_type: "CHECKING",
....
},
%Yodlee.Account{...},
...
]}iex(5)> {:ok, transactions} = Yodlee.Transaction.list(user.session, "bank", hd(accounts).id)
{:ok,
[
%Yodlee.Transaction{
account_id: 100....,
amount: %Yodlee.Money{amount: 6268.87, currency: "USD"},
base_type: "CREDIT",
container: "bank",
date: "2018-07-06",
id: 910000,
interest: nil,
principal: nil,
status: "PENDING"
},
%Yodlee.Transaction{...},
...
]}
```## Tests and Style
This library has sparse test coverage at the moment.
Run tests using `mix test`.
Before making pull requests, run the coverage and style checks.
```elixir
mix coveralls
mix credo
```