Introduction
Production environment
https://atrium.mx.com/
Development environment
https://vestibule.mx.com/
The MX Atrium API supports over 48,000 data connections to thousands of financial institutions. It provides secure access to your users' accounts and transactions with industry-leading cleansing, categorization, and classification.
Atrium is designed according to resource-oriented REST architecture and responds with JSON bodies and HTTP response codes.
Use Atrium's development environment, vestibule.mx.com, to quickly get up and running. The development environment limits are 100 users and access to the top 15 institutions. Contact MX to purchase production access.
Getting started
To get started right away with some of the most common tasks and frequently used features of Atrium, you can check out our detailed developer guide.
It covers things like aggregation, dealing with multi-factor authentication, creating users and members, and a lot more.
Our developer guide also explains our test endpoints and test credentials to help you get off the ground as soon as possible.
We've also provided wrapper libraries in several languages. Visit the appropriate GitHub page below.
Things you need to know
Aggregation and data availability
Aggregation is how Atrium is able to gather financial data from multiple sources and then deliver it to you. It is the core feature of the Atrium API.
MX automatically aggregates certain members in the background every 24 hours. Specifically, we aggregate all members whose connection_status
is either CONNECTED
, CREATED
, IMPEDED
, or UPDATED
— unless the member
has been disabled.
You may aggregate a member
via the aggregate member endpoint to get the most up-to-date information on accounts and transactions. When you aggregate a member
with this endpoint, MX will not initiate a background aggregation within the next 20-hour period.
Aggregation limits
The default minimum time between aggregation events is 10,800 seconds (3 hours), though this limit can vary by institution. Aggregating within this limit will not return an error, however; the response will simply contain the current state of the member
, including the latest connection_status
. Certain codepaths may also bypass this limit — for instance, updating a member's credentials.
The MX Bank test institution has no aggregation limits.
Data availability
Be aware that aggregation is not guaranteed to return all relevant information or even every data point on a given resource. For instance, aggregation may return the balance
of an account, but return a null
value for the apr
and day_payment_is_due
fields. This is to be expected in all resources and all aggregations.
API architecture and resource structure
Atrium is designed around the REST architecture and uses predictable, resource-oriented URLs. Requests are made with HTTP methods and HTTP response codes indicate the success or failure of those requests.
Atrium has five broad groups of resources, each with their own attributes and endpoints:
Resource | Description |
---|---|
user |
A user represents a person using Atrium via your application, be it a mobile app, web app, desktop app, etc. |
institution |
An institution represents a financial institution like Chase or Wells Fargo. It's important to point out that many real-world financial institutions will actually have several different institution objects within Atrium. This is because, for example, the mortgage division of Wells Fargo might use a separate system than its everyday banking division, which is different from its credit card division, etc. |
member |
A member represents the relationship between a user and an institution , and creating one is how you connect a user to an institution . A user may have one member each for their bank, their mortgage broker, their credit card provider, etc. Aggregation takes place via members. |
account |
An account represents a financial account held by a financial institution, e.g., a user's checking or savings account. Because a user's relationship with an institution may involve more than one account, a member may have more than one account associated with it. For instance, a user may have both a checking and savings account with Chase. In that case, the user would have a member that represents their connection with the Chase institution . That member would have two accounts, a checking account and a savings account . |
transaction |
A transaction represents any instance in which money moves into or out of an account . This could be a purchase at a business, a payroll deposit, a transfer from one account to another, an ATM withdrawal, etc. Each transaction belongs to only one account . |
Authentication and security
Atrium API requests must be HTTPS with encryption TLSv1.2 or higher or else they will fail.
All requests are authenticated with tokens in request headers: MX-API-Key
and MX-Client-ID
. The production and development environments require separate tokens. Development tokens are granted automatically during the signup process; These can be found on your profile page.
Contact MX for information on moving to production.
Because these tokens grant access to all of your data, you must keep them secret and keep them safe. Do not share them in public areas, use them in client-side code, or otherwise use them in a way that may compromise their security. In some instances, requests that require authentication will return 404 Not Found
, instead of 401 Unauthorized
. This is to prevent leaking private information.
Caching
Certain Atrium resources are subject to change at any time; for instance, institutions and institution credentials. For this reason, MX discourages partners from caching lists of resources. If caching is necessary, MX recommends refreshing a cached list at least daily.
Character encoding
Requests to Atrium must use characters encoded with the UTF-8 standard.
Data format
JSON structured data is returned in all responses, including some errors.
Dates and times
Dates and times are always given in ISO 8601 format.
Fields which end in _on
are given without a timestamp: 2018-07-18
Fields which end in _at
are given with a timestamp: 2015-04-13T12:01:23-06:00
.
Errors
Example error message
{
"error": {
"message": "Unrecognized institution.",
}
}
Atrium uses conventional HTTP response codes to indicate the success or failure of a request, with supplementary error messaging as needed within response bodies.
Status codes
Status | Explanation |
---|---|
2xx Success | |
200 OK |
Everything worked as expected with content returned. |
202 Accepted |
1. Everything worked and MX's system is processing the request. 2. When attempting an aggregation on a member , an aggregation of the same type is already running; e.g., calling aggregate member while a previous aggregation is still running, or calling verify member while a previous verification is still running. |
204 No Content |
Everything worked as expected without content returned. |
4xx Requester error | |
400 Bad Request |
Often, this means a required parameter was missing. |
401 Unauthorized |
Invalid MX-API-Key or MX-Client-ID provided. |
403 Forbidden |
The request was made from a non-whitelisted address. |
404 Not Found |
Invalid item/id/URL requested. |
405 Method Not Allowed |
A constraint on the requested endpoint wasn't met. |
406 Not Acceptable |
The request didn't specify a valid API version. |
409 Conflict |
1. An object with the given attributes already exists. 2. When attempting an aggregation on a member , the member already has an an aggregation of a different type running; e.g., calling the verify endpoint while a standard aggregation is already running, or calling fetch statements while an identification aggregation is already running. |
422 Unprocessable Entity |
The data provided cannot be processed. |
5xx Responder error — which are rare | |
500, 502, 504 Server errors |
Something went wrong with MX's servers. |
503 Service Unavailable |
The MX Platform is being updated. |
Identifiers and metadata
Example
metadata
request
$ curl -i -X POST 'https://vestibule.mx.com/users' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}' \
-d '{
"user": {
"metadata": "{\"username\":\"steven\"}"
}
}'
Example
identifier
request
$ curl -X POST 'https://vestibule.mx.com/users' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}' \
-d '{
"user": {
"identifier": "5935d8ef-20c0-4bc1-997c-b2cccf4d601d"
}
}'
Example of an
identifier
conflict response
Status: 409 Conflict
{
"error": {
"message": "A user already exists with identifier: '5935d8ef-20c0-4bc1-997c-b2cccf4d601d'."
}
}
Atrium gives you two special — but optional — fields which you can define for any resource created with the API: identifier
and metadata
. These fields make it easier to customize and integrate Atrium with your systems.
For instance, you may need to make certain that some resources are created only once. In these situations, you can give an unique identifier
to resources created with Atrium. Atrium will return a 409 Conflict
error if a resource is created with an identifier
that already exists.
You might also use the metadata
field to store custom data about a resource. For example, you could store a user's username for your system, their sign-up date, the date and time of their last logon in your system, or all of these.
Field | Description |
---|---|
identifier |
A unique, enforced identifier for a user or member , defined by you. An identifier may contain letters, numbers, dashes, and underscores — but they should not be longer than 200 characters. MX recommends using GUIDs. Atrium will return a 409 Conflict error if a resource is created with an identifier that already exists. |
metadata |
This field that can be used to store additional information about a particular user or member . Any UTF-8 string can be stored, but MX recommends using structured key-value data such as JSON. |
IP address whitelisting
All IP addresses which will make calls to Atrium's production environment must be whitelisted first. A 403 Forbidden
error will be returned for non-whitelisted addresses. The vestibule environment does not require any whitelisting.
You can whitelist IP addresses on your account profile.
Limits
User and member limits
The development environment limits developers to 100 users and access to the top 15 institutions.
No user
may have more than 25 members in either the development or production environments.
Aggregation limits
The default minimum time between aggregation events is 10,800 seconds (3 hours), though this limit can vary by institution. Aggregating within this limit will not return an error, however; the response will simply contain the current state of the member
, including the latest connection_status
. Certain codepaths may also bypass this limit — for instance, updating a member's credentials.
The MX Bank test institution has no aggregation limits.
Numbers and number formats
Number limits are described by their precision and scale. Precision refers to the total number of digits. Scale refers to the number of digits to the right of the decimal. For example, 538.46's precision,scale is 5,2.
Percentages are in decimal format without the percentage sign. for example, 2.99% is written 2.99
.
Pagination
Example pagination object:
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 2,
"total_pages": 1
}
All endpoints which return lists are paginated. These endpoints also support two query parameters which specify the number of records per page and the page to be returned.
Each response will include a pagination
object specifying information on the total number of entries and the current page.
Query parameters
Parameter | Definition |
---|---|
page |
This specifies the page to be returned. Defaults to 1 . |
records_per_page |
This specifies the number of records to be returned on each page. Defaults to 25 . The valid range is from 10 to 100 . |
Pagination fields
Field | Definition |
---|---|
current_page |
The page delivered by the current response. |
per_page |
The number of records delivered with each page. |
total_entries |
The total number of records available. |
total_pages |
The total number of pages available. |
Testing
The developer guide explains how to test your setup using our test endpoints and test credentials.
Versioning
We always try to make API changes backwards-compatible. However, when we make breaking changes to Atrium, we'll increment the version number. The current version is v1. Versions are specified in a request's Accept
header. All requests will access the current version unless a different version is specified with the request, so it's best to always specify the API version. The current Accept header is application/vnd.mx.atrium.v1+json
.
Accounts
An account
represents a financial account held by a financial institution, e.g., a user's checking or savings account. An account
belongs to a member
, which represents the user's overall relationship with a particular financial institution. A checking account
may be just one part of a larger relationship that could also include a car loan and a savings account.
Account fields
It's important to remember that balance
and available_balance
will normally be positive numbers — for all account types. But this should be interpreted differently for debt accounts and asset accounts.
An asset account, e.g., CHECKING
, SAVINGS
, or INVESTMENT
, will have a positive balance
unless it is in an overdraft condition, in which case the balance will be negative.
On the other hand, a debt account, e.g., CREDIT CARD
, LOAN
, MORTGAGE
, would have a positive balance
when the user owes money on the account. It would have a negative balance
if the account has been overpaid.
Field name | Data type | Description |
---|---|---|
account_number |
String | The account number. This will typically be a masked or partial account number. |
apr |
Decimal | Annual Percentage Rate. Max length is 10,6. |
apy |
Decimal | Annual Percentage Yield. Max length is 10,6. |
available_balance |
Decimal | The balance currently available in an account. Max length is 14,2. |
available_credit |
Decimal | The currently available credit balance of an account. This field is for accounts with types CREDIT CARD and LINE OF CREDIT . |
balance |
Decimal | An account's current balance. Max length is 14,2. |
cash_balance |
Decimal | The cash balance of the account. Max length is 14,2. |
cash_surrender_value |
Decimal | The sum of money paid to the policyholder or annuity holder in the event the policy is voluntarily terminated before it matures, or the insured event occurs. Max length is 14,2. |
created_at |
String | The date and time the account was created. |
credit_limit |
Decimal | The credit limit for the account. Max length is 10,2. |
currency_code |
String | The three-character ISO 4217 currency code, e.g. USD . |
day_payment_is_due |
Integer | The day of the month the payment is due. Max length is 2. So, for example, the 14th is passed as 14 ). |
death_benefit |
Decimal | Amount paid to the beneficiary of the account upon death of the account owner. Max length is 14,2. |
guid |
String | Unique identifier for the account. Defined by MX. |
holdings_value |
Decimal | The value of the holdings associated with the account. |
institution_code |
String | Unique identifier for the financial institution which holds the account. Defined by MX. |
insured_name |
String | The name of the insured individual. |
interest_rate |
Decimal | Interest rate. Max length is 10,6. |
is_closed |
Boolean | If an account is closed, this field will be true. Otherwise, this field will be false. |
last_payment_at |
String | The date and time the last payment toward a debt account was applied. |
last_payment |
Decimal | The amount of the last payment made on a debt account, such as an account of type CREDIT CARD or MORTGAGE . Max length is 10,2. |
loan_amount |
Decimal | The amount of the loan. Max length is 14,2. |
matures_on |
String | Date on which an account matures. |
member_guid |
String | Unique identifier for the member to which this account belongs. Defined by MX. |
minimum_balance |
Decimal | Minimum required balance for the account. This is normally a positive number. Max length is 14,2. |
minimum_payment |
Decimal | The minimum payment required for an account. This can apply to any debt account. Max length is 10,2. |
name |
String | This must be a human-readable name for the account. It will be visible to the user. |
original_balance |
Decimal | The original balance on an account. This will be a positive value. Max length is 14,2. |
pay_out_amount |
String | The amount paid out to the insured individual or beneficiary under the conditions of the insurance policy. |
payment_due_at |
String | The Date and time the next payment on a debt account is due. |
payoff_balance |
Decimal | Payoff Balance (positive value normally). Can apply to any debt account. Max length is 14,2. |
premium_amount |
String | The insurance policy's premium amount. |
started_on |
String | The date on which a debt account was started. |
subtype |
String | The account's subtype, e.g., PLAN_401_K , MONEY_MARKET , or HOME_EQUITY . |
total_account_value |
Decimal | The total value of the account. Max length is 14,2. |
type |
String | The main type of an account, e.g., INVESTMENT , PREPAID , or SAVINGS . |
updated_at |
String | The date and time at which the account was last updated. |
user_guid |
String | A unique identifier for the user to which the account belongs. Defined by MX. |
Account types and subtypes
Parent types | |
---|---|
ANY (not provided by data partner or invalid number provided) | |
CHECKING | |
SAVINGS | |
LOAN | |
CREDIT_CARD | |
INVESTMENT | |
LINE_OF_CREDIT | |
MORTGAGE | |
PROPERTY | |
CASH | |
INSURANCE | |
PREPAID |
Subtype | Parent type |
---|---|
MONEY_MARKET | SAVINGS |
CERTIFICATE_OF_DEPOSIT | SAVINGS |
AUTO | LOAN |
STUDENT | LOAN |
SMALL_BUSINESS | LOAN |
PERSONAL | LOAN |
PERSONAL_WITH_COLLATERAL | LOAN |
HOME_EQUITY | LOAN |
PLAN_401_K | INVESTMENT |
PLAN_403_B | INVESTMENT |
PLAN_529 | INVESTMENT |
IRA | INVESTMENT |
ROLLOVER_IRA | INVESTMENT |
ROTH_IRA | INVESTMENT |
TAXABLE | INVESTMENT |
NON_TAXABLE | INVESTMENT |
BROKERAGE | INVESTMENT |
TRUST | INVESTMENT |
UNIFORM_GIFTS_TO_MINORS_ACT | INVESTMENT |
PLAN_457 | INVESTMENT |
PENSION | INVESTMENT |
EMPLOYEE_STOCK_OWNERSHIP_PLAN | INVESTMENT |
SIMPLIFIED_EMPLOYEE_PENSION | INVESTMENT |
SIMPLE_IRA | INVESTMENT |
BOAT | LOAN |
POWERSPORTS | LOAN |
RV | LOAN |
HELOC | LOAN |
PLAN_ROTH_401_K | INVESTMENT |
FIXED_ANNUITY | INVESTMENT |
VARIABLE_ANNUITY | INVESTMENT |
VEHICLE_INSURANCE | INSURANCE |
DISABILITY | INSURANCE |
HEALTH | INSURANCE |
LONG_TERM_CARE | INSURANCE |
PROPERTY_AND_CASUALTY | INSURANCE |
UNIVERSAL_LIFE | INSURANCE |
TERM_LIFE | INSURANCE |
WHOLE_LIFE | INSURANCE |
ACCIDENTAL_DEATH_AND_DISMEMBERMENT | INSURANCE |
VARIABLE_UNIVERSAL_LIFE | INSURANCE |
HSA | INVESTMENT |
TAX_FREE_SAVINGS_ACCOUNT | INVESTMENT |
INDIVIDUAL | INVESTMENT |
REGISTERED_RETIREMENT_INCOME_FUND | INVESTMENT |
CASH_MANAGEMENT_ACCOUNT | INVESTMENT |
EMPLOYEE_STOCK_PURCHASE_PLAN | INVESTMENT |
REGISTERED_EDUCATION_SAVINGS_PLAN | INVESTMENT |
PROFIT_SHARING_PLAN | INVESTMENT |
UNIFORM_TRANSFER_TO_MINORS_ACT | INVESTMENT |
PLAN_401_A | INVESTMENT |
SARSEP_IRA | INVESTMENT |
FIXED_ANNUITY_TRADITIONAL_IRA | INVESTMENT |
VARIABLE_ANNUITY_TRADITIONAL_IRA | INVESTMENT |
SEPP_IRA | INVESTMENT |
INHERITED_TRADITIONAL_IRA | INVESTMENT |
FIXED_ANNUITY_ROTH_IRA | INVESTMENT |
VARIABLE_ANNUITY_ROTH_IRA | INVESTMENT |
INHERITED_ROTH_IRA | INVESTMENT |
COVERDELL | INVESTMENT |
ADVISORY_ACCOUNT | INVESTMENT |
BROKERAGE_MARGIN | INVESTMENT |
CHARITABLE_GIFT_ACCOUNT | INVESTMENT |
CHURCH_ACCOUNT | INVESTMENT |
CONSERVATORSHIP | INVESTMENT |
CUSTODIAL | INVESTMENT |
DEFINED_BENEFIT_PLAN | INVESTMENT |
DEFINED_CONTRIBUTION_PLAN | INVESTMENT |
EDUCATIONAL | INVESTMENT |
ESTATE | INVESTMENT |
EXECUTOR | INVESTMENT |
GROUP_RETIREMENT_SAVINGS_PLAN | INVESTMENT |
GUARANTEED_INVESTMENT_CERTIFICATE | INVESTMENT |
HRA | INVESTMENT |
INDEXED_ANNUITY | INVESTMENT |
INVESTMENT_CLUB | INVESTMENT |
IRREVOCABLE_TRUST | INVESTMENT |
JOINT_TENANTS_BY_ENTIRITY | INVESTMENT |
JOINT_TENANTS_COMMUNITY_PROPERTY | INVESTMENT |
JOINT_TENANTS_IN_COMMON | INVESTMENT |
JOINT_TENANTS_WITH_RIGHTS_OF_SURVIVORSHIP | INVESTMENT |
KEOUGH_PLAN | INVESTMENT |
LIFE_INCOME_FUND | INVESTMENT |
LIVING_TRUST | INVESTMENT |
LOCKED_IN_RETIREMENT_ACCOUNT | INVESTMENT |
LOCKED_IN_RETIREMENT_INVESTMENT_FUND | INVESTMENT |
LOCKED_IN_RETIREMENT_SAVINGS_ACCOUNT | INVESTMENT |
MONEY_PURCHASE_PLAN | INVESTMENT |
PARTNERSHIP | INVESTMENT |
PLAN_409_A | INVESTMENT |
PLAN_ROTH_403_B | INVESTMENT |
REGISTERED_DISABILITY_SAVINGS_PLAN | INVESTMENT |
REGISTERED_LOCKED_IN_SAVINGS_PLAN | INVESTMENT |
REGISTERED_PENSION_PLAN | INVESTMENT |
REGISTERED_RETIREMENT_SAVINGS_PLAN | INVESTMENT |
REVOCABLE_TRUST | INVESTMENT |
ROTH_CONVERSION | INVESTMENT |
SOLE_PROPRIETORSHIP | INVESTMENT |
SPOUSAL_IRA | INVESTMENT |
SPOUSAL_ROTH_IRA | INVESTMENT |
TESTAMENTARY_TRUST | INVESTMENT |
THRIFT_SAVINGS_PLAN | INVESTMENT |
INHERITED_ANNUITY | INVESTMENT |
CORPORATE_ACCOUNT | INVESTMENT |
LIMITED_LIABILITY_ACCOUNT | INVESTMENT |
List accounts for a user
Endpoint:
GET /users/{user_guid}/accounts
Example request:
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/accounts' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListUserAccountsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
try
{
// List accounts for a user
AccountsResponseBody response = client.accounts.ListUserAccounts(userGuid, page, recordsPerPage);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling AccountsApi.ListUserAccounts: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
userGUID := "USR-123" // string | The unique identifier for a `user`.
opts := &atrium.ListUserAccountsOpts{
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
}
response, _, err := client.Accounts.ListUserAccounts(ctx, userGUID, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class AccountsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
try {
AccountsResponseBody response = client.accounts.listUserAccounts(userGuid, page, recordsPerPage);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling AccountsApi#listUserAccounts");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var response = client.accounts.listUserAccounts(userGuid, page, recordsPerPage);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
try {
$result = $client->accounts->listUserAccounts($user_guid, $page, $records_per_page);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AccountsApi->listUserAccounts: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # str | The unique identifier for a `user`.
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
try:
# List accounts for a user
response = client.accounts.list_user_accounts(user_guid, page=page, records_per_page=records_per_page)
pprint(response)
except ApiException as e:
print("Exception when calling AccountsApi->list_user_accounts: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # String | The unique identifier for a `user`.
opts = {
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
}
begin
#List accounts for a user
response = client.accounts.list_user_accounts(user_guid, opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling AccountsApi->list_user_accounts: #{e}"
end
Example response
Status: 200 OK
{
"accounts": [
{
"account_number": null,
"apr": null,
"apy": 1.43,
"available_balance": 1000.23,
"available_credit": 100.23,
"balance": 1000.23,
"cash_balance": 1000.32,
"cash_surrender_value": 1000.23,
"created_at": "2016-10-13T17:57:37+00:00",
"credit_limit": 100.23,
"currency_code": "USD",
"day_payment_is_due": 20,
"death_benefit": 1000.12,
"guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"holdings_value": 1000.21,
"insured_name": null,
"institution_code": "chase",
"interest_rate": null,
"is_closed": false,
"last_payment": null,
"last_payment_at": null,
"loan_amount": null,
"matures_on": null,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"minimum_balance": null,
"minimum_payment": null,
"name": "Test Account 2",
"original_balance": null,
"payment_due_at": null,
"payoff_balance": null,
"pay_out_amount": null,
"premium_amount": null,
"started_on": null,
"subtype": null,
"total_account_value": null,
"type": "SAVINGS",
"updated_at": "2016-10-13T18:08:00+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class AccountsResponseBody {
Accounts: [
class Account {
AccountNumber: 123456789
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InsuredName: John Doe
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
PayOutAmount: 2756.85
PremiumAmount: 300.65
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Accounts: [
{
AccountNumber: 123456789
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InsuredName: John Doe
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
PayOutAmount: 2756.85
PremiumAmount: 300.65
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class AccountsResponseBody {
accounts: [
class Account {
accountNumber: 123456789
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
insuredName: John Doe
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
payOutAmount: 2756.85
premiumAmount: 300.65
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
AccountsResponseBody {
accounts: [
Account {
accountNumber: 123456789
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
insuredName: John Doe
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
payOutAmount: 2756.85
premiumAmount: 300.65
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/AccountsResponseBody Object (
[accounts] => Array (
atrium/model/Account Object (
[account_number] => 123456789
[apr] => 1.0
[apy] => 1.0
[available_balance] => 1000.0
[available_credit] => 1000.0
[balance] => 1000.0
[cash_balance] => 1000.0
[cash_surrender_value] => 1000.0
[created_at] => 2016-10-13T17:57:37+00:00
[credit_limit] => 100.0
[currency_code] => USD
[day_payment_is_due] => 20
[death_benefit] => 1000.0
[guid] => ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
[holdings_value] => 1000.0
[insured_name] => John Doe
[institution_code] => chase
[interest_rate] =>
[is_closed] => false
[last_payment] =>
[loan_amount] => 1000.0
[matures_on] =>
[member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[minimum_balance] =>
[minimum_payment] =>
[name] => Test account 2
[original_balance] =>
[payment_due_at] =>
[payoff_balance] =>
[pay_out_amount] => 2756.85
[premium_amount] => 300.65
[started_on] =>
[subtype] =>
[total_account_value] =>
[type] => SAVINGS
[updated_at] => 2016-10-13T18:08:00+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'accounts': [
{
'account_number': 123456789
'apr': 1.0
'apy': 1.0
'available_balance': 1000.0
'available_credit': 1000.0
'balance': 1000.0
'cash_balance': 1000.0
'cash_surrender_value': 1000.0
'created_at': 2016-10-13T17:57:37+00:00
'credit_limit': 100.0
'currency_code': USD
'day_payment_is_due': 20
'death_benefit': 1000.0
'guid': ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
'holdings_value': 1000.0
'insured_name': John Doe
'institution_code': chase
'interest_rate':
'is_closed': false
'last_payment':
'loan_amount': 1000.0
'matures_on':
'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'minimum_balance':
'minimum_payment':
'name': Test account 2
'original_balance':
'payment_due_at':
'payoff_balance':
'pay_out_amount': 2756.85
'premium_amount': 300.65
'started_on':
'subtype':
'total_account_value':
'type': SAVINGS
'updated_at': 2016-10-13T18:08:00+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::AccountsResponseBody
@accounts= [
#<MX::Account
@account_number= 123456789
@apr= 1.0
@apy= 1.0
@available_balance= 1000.0
@available_credit= 1000.0
@balance= 1000.0
@cash_balance= 1000.0
@cash_surrender_value= 1000.0
@created_at= 2016-10-13T17:57:37+00:00
@credit_limit= 100.0
@currency_code= USD
@day_payment_is_due= 20
@death_benefit= 1000.0
@guid= ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
@holdings_value= 1000.0
@insured_name= John Doe
@institution_code= chase
@interest_rate=
@is_closed= false
@last_payment=
@loan_amount= 1000.0
@matures_on=
@member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@minimum_balance=
@minimum_payment=
@name= Test account 2
@original_balance=
@payment_due_at=
@payoff_balance=
@pay_out_amount= 2756.85
@premium_amount= 300.65
@started_on=
@subtype=
@total_account_value=
@type= SAVINGS
@updated_at= 2016-10-13T18:08:00+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
Use this endpoint to view information about every account
that belongs to a user
. You'll need the user's GUID to access this list. The information will include the account type — e.g., CHECKING
, MONEY_MARKET
, or PROPERTY
— the account balance
, the date the account was started, etc.
List account transactions
Endpoint:
GET /users/{user_guid}/accounts/{account_guid}/transactions
Example URL with query parameters:
https://vestibule.mx.com/users/{user_guid}/accounts/{account_guid}/transactions?from_date=2016-09-20&to_date=2016-10-20
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/accounts/{account_guid}/transactions' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListAccountTransactionsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var fromDate = "2016-09-20"; // string | Filter transactions from this date. (optional)
var toDate = "2016-10-20"; // string | Filter transactions to this date. (optional)
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
try
{
// List account transactions
TransactionsResponseBody response = client.accounts.ListAccountTransactions(accountGuid, userGuid, fromDate, toDate, page, recordsPerPage);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling AccountsApi.ListAccountTransactions: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
accountGUID := "ACT-123" // string | The unique identifier for an `account`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
opts := &atrium.ListAccountTransactionsOpts{
FromDate: optional.NewString("2016-09-20"), // string | Filter transactions from this date.
ToDate: optional.NewString("2016-10-20"), // string | Filter transactions to this date.
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
}
response, _, err := client.Accounts.ListAccountTransactions(ctx, accountGUID, userGUID, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class AccountsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String accountGuid = "ACT-123"; // String | The unique identifier for an `account`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
String fromDate = "2016-09-20"; // String | Filter transactions from this date.
String toDate = "2016-10-20"; // String | Filter transactions to this date.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
try {
TransactionsResponseBody response = client.accounts.listAccountTransactions(accountGuid, userGuid, fromDate, toDate, page, recordsPerPage);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling AccountsApi#listAccountTransactions");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var fromDate = "2016-09-20"; // string | Filter transactions from this date. (optional)
var toDate = "2016-10-20"; // string | Filter transactions to this date. (optional)
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var response = client.accounts.listAccountTransactions(accountGuid, userGuid, fromDate, toDate, page, recordsPerPage);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$account_guid = "ACT-123"; // string | The unique identifier for an `account`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$from_date = "2016-09-20"; // string | Filter transactions from this date.
$to_date = "2016-10-20"; // string | Filter transactions to this date.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
try {
$result = $client->accounts->listAccountTransactions($account_guid, $user_guid, $from_date, $to_date, $page, $records_per_page);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AccountsApi->listAccountTransactions: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
account_guid = "ACT-123" # str | The unique identifier for an `account`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
from_date = "2016-09-20" # str | Filter transactions from this date. (optional)
to_date = "2016-10-20" # str | Filter transactions to this date. (optional)
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
try:
# List account transactions
response = client.accounts.list_account_transactions(account_guid, user_guid, from_date=from_date, to_date=to_date, page=page, records_per_page=records_per_page)
pprint(response)
except ApiException as e:
print("Exception when calling AccountsApi->list_account_transactions: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
account_guid = "ACT-123" # String | The unique identifier for an `account`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
opts = {
from_date: "2016-09-20", # String | Filter transactions from this date.
to_date: "2016-10-20" # String | Filter transactions to this date.
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
}
begin
#List account transactions
response = client.accounts.list_account_transactions(account_guid, user_guid, opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling AccountsApi->list_account_transactions: #{e}"
end
Example response
Status: 200 OK
{
"transactions": [
{
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 61.11,
"category": "Groceries",
"check_number": 15234,
"check_number_string": "00015234",
"created_at": "2016-10-06T09:43:42+00:00",
"currency_code": "USD",
"date": "2013-09-23",
"description": "Whole Foods",
"guid": "TRN-265abee9-889b-af6a-c69b-25157db2bdd9",
"is_bill_pay": false,
"is_direct_deposit": false,
"is_expense": true,
"is_fee": false,
"is_income": false,
"is_international": false,
"is_overdraft_fee": false,
"is_payroll_advance": false,
"latitude": -43.2075,
"longitude": 139.691706,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"memo": null,
"merchant_category_code": 5411,
"merchant_guid": "MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b",
"original_description": "WHOLEFDS TSQ 102",
"posted_at": "2016-10-07T06:00:00+00:00",
"status": "POSTED",
"top_level_category": "Food & Dining",
"transacted_at": "2016-10-06T13:00:00+00:00",
"type": "DEBIT",
"updated_at": "2016-10-07T05:49:12+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
},
{
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 23.4,
"category": "Books",
"check_number": 15234,
"check_number_string": "00015234",
"created_at": "2016-08-26T09:43:42+00:00",
"currency_code": "USD",
"date": "2013-09-23",
"description": "Audible",
"guid": "TRN-265abee9-889b-af6a-c69b-25157db2bdd9",
"is_bill_pay": false,
"is_direct_deposit": false,
"is_expense": true,
"is_fee": false,
"is_income": false,
"is_international": false,
"is_overdraft_fee": false,
"is_payroll_advance": false,
"latitude": -43.2075,
"longitude": 139.691706,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"memo": null,
"merchant_category_code": 5411,
"merchant_guid": "MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b",
"original_description": "AUDIBLEBKS",
"posted_at": "2016-08-27T06:00:00+00:00",
"status": "POSTED",
"top_level_category": "Entertainment",
"transacted_at": "2016-08-26T13:00:00+00:00",
"type": "DEBIT",
"updated_at": "2016-08-27T05:49:12+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 2,
"total_pages": 1
}
}
class TransactionsResponseBody {
Transactions: [
class Transaction {
AccountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
Amount: 61.11
Category: Groceries
CheckNumber: 15234
CheckNumberString: 00015234
CreatedAt: 2016-10-06T09:43:42+00:00
CurrencyCode: USD
Date: 2013-09-23
Description: Whole foods
Guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
IsBillPay: false
IsDirectDeposit: false
IsExpense: true
IsFee: false
IsIncome: false
IsInternational: false
IsOverdraftFee: false
IsPayrollAdvance: false
Latitude: -43.2075
Longitude: 139.691706
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Memo:
MerchantCategoryCode: 5411
MerchantGuid: MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
OriginalDescription: WHOLEFDS TSQ 102
PostedAt: 2016-10-07T06:00:00+00:00
Status: POSTED
TopLevelCategory: Food & Dining
TransactedAt: 2016-10-06T13:00:00+00:00
Type: DEBIT
UpdatedAt: 2016-10-07T05:49:12+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Transactions: [
{
AccountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
Amount: 61.11
Category: Groceries
CheckNumber: 15234
CheckNumberString: 00015234
CreatedAt: 2016-10-06T09:43:42+00:00
CurrencyCode: USD
Date: 2013-09-23
Description: Whole foods
Guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
IsBillPay: false
IsDirectDeposit: false
IsExpense: true
IsFee: false
IsIncome: false
IsInternational: false
IsOverdraftFee: false
IsPayrollAdvance: false
Latitude: -43.2075
Longitude: 139.691706
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Memo:
MerchantCategoryCode: 5411
MerchantGuid: MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
OriginalDescription: WHOLEFDS TSQ 102
PostedAt: 2016-10-07T06:00:00+00:00
Status: POSTED
TopLevelCategory: Food & Dining
TransactedAt: 2016-10-06T13:00:00+00:00
Type: DEBIT
UpdatedAt: 2016-10-07T05:49:12+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class TransactionsResponseBody {
transactions: [
class Transaction {
accountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
amount: 61.11
category: Groceries
checkNumber: 15234
checkNumberString: 00015234
createdAt: 2016-10-06T09:43:42+00:00
currencyCode: USD
date: 2013-09-23
description: Whole foods
guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
isBillPay: false
isDirectDeposit: false
isExpense: true
isFee: false
isIncome: false
isInternational: false
isOverdraftFee: false
isPayrollAdvance: false
latitude: -43.2075
longitude: 139.691706
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
memo:
merchantCategoryCode: 5411
merchantGuid: MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
originalDescription: WHOLEFDS TSQ 102
postedAt: 2016-10-07T06:00:00+00:00
status: POSTED
topLevelCategory: Food & Dining
transactedAt: 2016-10-06T13:00:00+00:00
type: DEBIT
updatedAt: 2016-10-07T05:49:12+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
TransactionsResponseBody {
transactions: [
Transaction {
accountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
amount: 61.11
category: Groceries
checkNumber: 15234
checkNumberString: 00015234
createdAt: 2016-10-06T09:43:42+00:00
currencyCode: USD
date: 2013-09-23
description: Whole foods
guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
isBillPay: false
isDirectDeposit: false
isExpense: true
isFee: false
isIncome: false
isInternational: false
isOverdraftFee: false
isPayrollAdvance: false
latitude: -43.2075
longitude: 139.691706
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
memo:
merchantCategoryCode: 5411
merchantGuid: MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
originalDescription: WHOLEFDS TSQ 102
postedAt: 2016-10-07T06:00:00+00:00
status: POSTED
topLevelCategory: Food & Dining
transactedAt: 2016-10-06T13:00:00+00:00
type: DEBIT
updatedAt: 2016-10-07T05:49:12+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/TransactionsResponseBody Object (
[transactions] => Array (
atrium/model/Transaction Object (
[account_guid] => ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
[amount] => 61.11
[category] => Groceries
[check_number] => 15234
[check_number_string] => 00015234
[created_at] => 2016-10-06T09:43:42+00:00
[currency_code] => USD
[date] => 2013-09-23
[description] => Whole foods
[guid] => TRN-265abee9-889b-af6a-c69b-25157db2bdd9
[is_bill_pay] => false
[is_direct_deposit] => false
[is_expense] => true
[is_fee] => false
[is_income] => false
[is_international] => false
[is_overdraft_fee] => false
[is_payroll_advance] => false
[latitude] => -43.2075
[longitude] => 139.691706
[member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[memo] =>
[merchant_category_code] => 5411
[merchant_guid] => MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
[original_description] => WHOLEFDS TSQ 102
[posted_at] => 2016-10-07T06:00:00+00:00
[status] => POSTED
[top_level_category] => Food & Dining
[transacted_at] => 2016-10-06T13:00:00+00:00
[type] => DEBIT
[updated_at] => 2016-10-07T05:49:12+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'transactions': [
{
'account_guid': ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
'amount': 61.11
'category': Groceries
'check_number': 15234
'check_number_string': 00015234
'created_at': 2016-10-06T09:43:42+00:00
'currency_code': USD
'date': 2013-09-23
'description': Whole foods
'guid': TRN-265abee9-889b-af6a-c69b-25157db2bdd9
'is_bill_pay': false
'is_direct_deposit': false
'is_expense': true
'is_fee': false
'is_income': false
'is_international': false
'is_overdraft_fee': false
'is_payroll_advance': false
'latitude': -43.2075
'longitude': 139.691706
'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'memo':
'merchant_category_code': 5411
'merchant_guid': MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
'original_description': WHOLEFDS TSQ 102
'posted_at': 2016-10-07T06:00:00+00:00
'status': POSTED
'top_level_category': Food & Dining
'transacted_at': 2016-10-06T13:00:00+00:00
'type': DEBIT
'updated_at': 2016-10-07T05:49:12+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::TransactionsResponseBody
@transactions= [
#<MX::Transaction
@account_guid= ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
@amount= 61.11
@category= Groceries
@check_number= 15234
@check_number_string= 00015234
@created_at= 2016-10-06T09:43:42+00:00
@currency_code= USD
@date= 2013-09-23
@description= Whole foods
@guid= TRN-265abee9-889b-af6a-c69b-25157db2bdd9
@is_bill_pay= false
@is_direct_deposit= false
@is_expense= true
@is_fee= false
@is_income= false
@is_international= false
@is_overdraft_fee= false
@is_payroll_advance= false
@latitude= -43.2075
@longitude= 139.691706
@member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@memo=
@merchant_category_code= 5411
@merchant_guid= MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b
@original_description= WHOLEFDS TSQ 102
@posted_at= 2016-10-07T06:00:00+00:00
@status= POSTED
@top_level_category= Food & Dining
@transacted_at= 2016-10-06T13:00:00+00:00
@type= DEBIT
@updated_at= 2016-10-07T05:49:12+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
This endpoint allows you to see every transaction
that belongs to a specific account
.
The from_date
and to_date
parameters can optionally be appended to the request if transactions in a specific date range are required.
Query string parameters
Field name | Required | Data type | Description |
---|---|---|---|
from_date |
No | String | Return transactions occurring within a date range starting on this day. If not set, this defaults to 90 days prior to the day of the request. Must be in ISO 8601 format without a time component. |
to_date |
No | String | Return transactions occurring in a date range ending on this day. If not set, this defaults to 5 days forward from the day of the request so as to capture pending transactions. Must be in ISO 8601 format without a time component. |
Read an account
Endpoint 1:
GET /users/{user_guid}/accounts/{account_guid}
Endpoint 2:
GET /users/{user_guid}/members/{member_guid}/accounts/{account_guid}
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/accounts/{account_guid}' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
Example request
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ReadAccountExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Read an account
AccountResponseBody response = client.accounts.ReadAccount(accountGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling AccountsApi.ReadAccount: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
accountGUID := "ACT-123" // string | The unique identifier for an `account`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Accounts.ReadAccount(ctx, accountGUID, userGUID, )
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class AccountsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String accountGuid = "ACT-123"; // String | The unique identifier for an `account`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
AccountResponseBody response = client.accounts.readAccount(accountGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling AccountsApi#readAccount");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID", "https://vestibule.mx.com");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.accounts.readAccount(accountGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$account_guid = "ACT-123"; // string | The unique identifier for an `account`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->accounts->readAccount($account_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AccountsApi->readAccount: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID", "https://vestibule.mx.com")
account_guid = "ACT-123" # str | The unique identifier for an `account`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# Read an account
response = client.accounts.read_account(account_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling AccountsApi->read_account: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
account_guid = "ACT-123" # String | The unique identifier for an `account`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#Read an account
response = client.accounts.read_account(account_guid, user_guid, )
p response
rescue Atrium::ApiError => e
puts "Exception when calling AccountsApi->read_account: #{e}"
end
Example response
{
"account": {
"account_number": null,
"apr": null,
"apy": 1.43,
"available_balance": 1000.23,
"available_credit": 100.23,
"balance": 1000.23,
"cash_balance": 1000.32,
"cash_surrender_value": 1000.23,
"created_at": "2016-10-13T17:57:37+00:00",
"credit_limit": 100.23,
"currency_code": "USD",
"day_payment_is_due": 20,
"death_benefit": 1000.12,
"guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"holdings_value": 1000.21,
"insured_name": null,
"institution_code": "chase",
"interest_rate": null,
"is_closed": false,
"last_payment": null,
"last_payment_at": null,
"loan_amount": null,
"matures_on": null,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"minimum_balance": null,
"minimum_payment": null,
"name": "Test Account 2",
"original_balance": null,
"payment_due_at": null,
"payoff_balance": null,
"pay_out_amount": null,
"premium_amount": null,
"started_on": null,
"subtype": null,
"total_account_value": null,
"type": "SAVINGS",
"updated_at": "2016-10-13T18:08:00+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
}
class AccountResponseBody {
Account:
class Account {
AccountNumber: 123456789
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InsuredName: John Doe
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
PayOutAmount: 2756.85
PremiumAmount: 300.65
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
{
Account:
{
AccountNumber: 123456789
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InsuredName: John Doe
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
PayOutAmount: 2756.85
PremiumAmount: 300.65
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
class AccountResponseBody {
account:
class Account {
accountNumber: 123456789
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
insuredName: John Doe
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
payOutAmount: 2756.85
premiumAmount: 300.65
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
AccountResponseBody {
account:
Account {
accountNumber: 123456789
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
insuredName: John Doe
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
payOutAmount: 2756.85
premiumAmount: 300.65
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
atrium/model/AccountResponseBody Object (
[account] =>
atrium/model/Account Object (
[account_number] => 123456789
[apr] => 1.0
[apy] => 1.0
[available_balance] => 1000.0
[available_credit] => 1000.0
[balance] => 1000.0
[cash_balance] => 1000.0
[cash_surrender_value] => 1000.0
[created_at] => 2016-10-13T17:57:37+00:00
[credit_limit] => 100.0
[currency_code] => USD
[day_payment_is_due] => 20
[death_benefit] => 1000.0
[guid] => ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
[holdings_value] => 1000.0
[insured_name] => John Doe
[institution_code] => chase
[interest_rate] =>
[is_closed] => false
[last_payment] =>
[loan_amount] => 1000.0
[matures_on] =>
[member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[minimum_balance] =>
[minimum_payment] =>
[name] => Test account 2
[original_balance] =>
[payment_due_at] =>
[payoff_balance] =>
[pay_out_amount] => 2756.85
[premium_amount] => 300.65
[started_on] =>
[subtype] =>
[total_account_value] =>
[type] => SAVINGS
[updated_at] => 2016-10-13T18:08:00+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
{
'account':
{
'account_number': 123456789
'apr': 1.0
'apy': 1.0
'available_balance': 1000.0
'available_credit': 1000.0
'balance': 1000.0
'cash_balance': 1000.0
'cash_surrender_value': 1000.0
'created_at': 2016-10-13T17:57:37+00:00
'credit_limit': 100.0
'currency_code': USD
'day_payment_is_due': 20
'death_benefit': 1000.0
'guid': ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
'holdings_value': 1000.0
'insured_name': John Doe
'institution_code': chase
'interest_rate':
'is_closed': false
'last_payment':
'loan_amount': 1000.0
'matures_on':
'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'minimum_balance':
'minimum_payment':
'name': Test account 2
'original_balance':
'payment_due_at':
'payoff_balance':
'pay_out_amount': 2756.85
'premium_amount': 300.65
'started_on':
'subtype':
'total_account_value':
'type': SAVINGS
'updated_at': 2016-10-13T18:08:00+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
#<MX::AccountResponseBody
@account=
#<MX::Account
@account_number= 123456789
@apr= 1.0
@apy= 1.0
@available_balance= 1000.0
@available_credit= 1000.0
@balance= 1000.0
@cash_balance= 1000.0
@cash_surrender_value= 1000.0
@created_at= 2016-10-13T17:57:37+00:00
@credit_limit= 100.0
@currency_code= USD
@day_payment_is_due= 20
@death_benefit= 1000.0
@guid= ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
@holdings_value= 1000.0
@insured_name= John Doe
@institution_code= chase
@interest_rate=
@is_closed= false
@last_payment=
@loan_amount= 1000.0
@matures_on=
@member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@minimum_balance=
@minimum_payment=
@name= Test account 2
@original_balance=
@payment_due_at=
@payoff_balance=
@pay_out_amount= 2756.85
@premium_amount= 300.65
@started_on=
@subtype=
@total_account_value=
@type= SAVINGS
@updated_at= 2016-10-13T18:08:00+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
>
Reading an account allows you to get information about a specific account that belongs to a user
. That includes the account type — e.g., CHECKING
, MONEY_MARKET
, or PROPERTY
— the balance
, the date the account was started, and much more.
There are two endpoints for reading an account. Both will return the same information.
Holdings
Holdings represent a stock, bond, or other type of investment.
Holding fields
Holding types
ANNUITY
CASH
EQUITY
EXCHANGE_TRADED_FUND
FIXED_INCOME
HEDGE_FUND
MONEY_MARKET
MUTUAL_FUND
OPTIONS
UNIT_INVESTMENT_TRUST
UNKNOWN_TYPE
Field | Data type | Description |
---|---|---|
account_guid |
String | The unique identifier for the account associated with the holding . Defined by MX. |
cost_basis |
Decimal | The cost basis is the original value of an asset adjusted for stock splits, dividends, and capital distributions. |
created_at |
String | Date and time the holding was created, represented in ISO 8601 format, with a timestamp. |
currency_code |
String | The three-character ISO 4217 currency code. |
cusip |
String | An identification number assigned to stocks and registered bonds. |
daily_change |
Decimal | The change from the previous day in the price of the holding . |
description |
String | A human-readable description of the holding. |
guid |
String | The unique identifier for the holding . Defined by MX. |
holding_type |
String | The type of holding , e.g., mutual fund, bond, etc. |
market_value |
Decimal | The market value of the holding. |
member_guid |
String | The unique identifier for the member associated with the holding . |
purchase_price |
String | The purchase price of the holding . |
shares |
Decimal | The number of shares for the holding . |
symbol |
String | The ticker symbol, i.e. the abbreviation used to uniquely identify publicly traded stocks, bonds, mutual funds, and ETFs. |
updated_at |
String | The date and time the holding was last updated, represented in ISO 8601 format with timestamp. |
user_guid |
String | The unique identifier for the user associated with the holding . |
List holdings by account
GET users/{user_guid}/accounts/{account_guid}/holdings/
Example request:
$ curl -i -X GET 'https://vestibule.mx.com/users/USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d/accounts/ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2/holdings' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListHoldingsByAccountExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// List holdings by account
HoldingsResponseBody response = client.holdings.ListHoldingsByAccount(accountGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling HoldingsApi.ListHoldingsByAccount: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
accountGUID := "ACT-123" // string | The unique identifier for an `account`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Holdings.ListHoldingsByAccount(ctx, accountGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class HoldingsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String accountGuid = "ACT-123"; // String | The unique identifier for an `account`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
HoldingsResponseBody response = client.holdings.listHoldingsByAccount(accountGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling HoldingsApi#listHoldingsByAccount");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var accountGuid = "ACT-123"; // string | The unique identifier for an `account`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.holdings.listHoldingsByAccount(accountGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$account_guid = "ACT-123"; // string | The unique identifier for an `account`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->holdings->listHoldingsByAccount($account_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling HoldingsApi->listHoldingsByAccount: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
account_guid = "ACT-123" # str | The unique identifier for an `account`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# List holdings by account
response = client.holdings.list_holdings_by_account(account_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling HoldingsApi->list_holdings_by_account: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
account_guid = "ACT-123" # String | The unique identifier for an `account`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#List holdings by account
response = client.holdings.list_holdings_by_account(account_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling HoldingsApi->list_holdings_by_account: #{e}"
end
Example response:
{
"holdings": [
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 676,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.59,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 899.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
},
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 827,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.5,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 989.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 2,
"total_pages": 1
}
}
class HoldingsResponseBody {
Holdings: [
class Holding {
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Holdings: [
{
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class HoldingsResponseBody {
holdings: [
class Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
HoldingsResponseBody {
holdings: [
Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/HoldingsResponseBody Object (
[holdings] => Array (
atrium/model/Holding Object (
[account_guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[cost_basis] => 827
[created_at] => 2015-04-13T12:01:23-06:00
[currency_code] => USD
[cusip] => 18383M878
[daily_change] => 2.5
[description] => Guggenheim Defensive Equity ETF
[guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[holding_type] => MONEY_MARKET
[market_value] => 989.5
[member_guid] => MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
[purchase_price] => 26.3
[shares] => 6
[symbol] => DEF
[updated_at] => 2015-04-13T12:01:23-06:00
[user_guid] => USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'holdings': [
{
'account_guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'cost_basis': 827
'created_at': 2015-04-13T12:01:23-06:00
'currency_code': USD
'cusip': 18383M878
'daily_change': 2.5
'description': Guggenheim Defensive Equity ETF
'guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'holding_type': MONEY_MARKET
'market_value': 989.5
'member_guid': MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
'purchase_price': 26.3
'shares': 6
'symbol': DEF
'updated_at': 2015-04-13T12:01:23-06:00
'user_guid': USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::HoldingsResponseBody
@holdings= [
#<MX::Holding
@account_guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@cost_basis= 827
@created_at= 2015-04-13T12:01:23-06:00
@currency_code= USD
@cusip= 18383M878
@daily_change= 2.5
@description= Guggenheim Defensive Equity ETF
@guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@holding_type= MONEY_MARKET
@market_value= 989.5
@member_guid= MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
@purchase_price= 26.3
@shares= 6
@symbol= DEF
@updated_at= 2015-04-13T12:01:23-06:00
@user_guid= USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
Use this endpoint to read all holdings associated with a specific account
.
List holdings by member
GET users/{user_guid}/members/{member_guid}/holdings/
Example request:
$ curl -i -X GET 'https://vestibule.mx.com/users/USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d/members/MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe/holdings' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListHoldingsByMemberExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// List holdings by member
HoldingsResponseBody response = client.holdings.ListHoldingsByMember(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling HoldingsApi.ListHoldingsByMember: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Holdings.ListHoldingsByMember(ctx, memberGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class HoldingsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
HoldingsResponseBody response = client.holdings.listHoldingsByMember(memberGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling HoldingsApi#listHoldingsByMember");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.holdings.listHoldingsByMember(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->holdings->listHoldingsByMember($member_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling HoldingsApi->listHoldingsByMember: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# List holdings by member
response = client.holdings.list_holdings_by_member(member_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling HoldingsApi->list_holdings_by_member: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#List holdings by member
response = client.holdings.list_holdings_by_member(member_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling HoldingsApi->list_holdings_by_member: #{e}"
end
Example response:
{
"holdings": [
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 676,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.59,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 899.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
},
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 827,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.5,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 989.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class HoldingsResponseBody {
Holdings: [
class Holding {
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Holdings: [
{
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class HoldingsResponseBody {
holdings: [
class Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
HoldingsResponseBody {
holdings: [
Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/HoldingsResponseBody Object (
[holdings] => Array (
atrium/model/Holding Object (
[account_guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[cost_basis] => 827
[created_at] => 2015-04-13T12:01:23-06:00
[currency_code] => USD
[cusip] => 18383M878
[daily_change] => 2.5
[description] => Guggenheim Defensive Equity ETF
[guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[holding_type] => MONEY_MARKET
[market_value] => 989.5
[member_guid] => MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
[purchase_price] => 26.3
[shares] => 6
[symbol] => DEF
[updated_at] => 2015-04-13T12:01:23-06:00
[user_guid] => USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'holdings': [
{
'account_guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'cost_basis': 827
'created_at': 2015-04-13T12:01:23-06:00
'currency_code': USD
'cusip': 18383M878
'daily_change': 2.5
'description': Guggenheim Defensive Equity ETF
'guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'holding_type': MONEY_MARKET
'market_value': 989.5
'member_guid': MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
'purchase_price': 26.3
'shares': 6
'symbol': DEF
'updated_at': 2015-04-13T12:01:23-06:00
'user_guid': USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::HoldingsResponseBody
@holdings= [
#<MX::Holding
@account_guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@cost_basis= 827
@created_at= 2015-04-13T12:01:23-06:00
@currency_code= USD
@cusip= 18383M878
@daily_change= 2.5
@description= Guggenheim Defensive Equity ETF
@guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@holding_type= MONEY_MARKET
@market_value= 989.5
@member_guid= MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
@purchase_price= 26.3
@shares= 6
@symbol= DEF
@updated_at= 2015-04-13T12:01:23-06:00
@user_guid= USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
Use this endpoint to read all holdings associated with a specific member
.
List holdings by user
GET users/{user_guid}/holdings/
Example request:
$ curl -i -X GET 'https://vestibule.mx.com/users/USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d/holdings' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListHoldingsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// List holdings
HoldingsResponseBody response = client.holdings.ListHoldings(userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling HoldingsApi.ListHoldings: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Holdings.ListHoldings(ctx, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class HoldingsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
HoldingsResponseBody response = client.holdings.listHoldings(userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling HoldingsApi#listHoldings");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.holdings.listHoldings(userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->holdings->listHoldings($user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling HoldingsApi->listHoldings: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# List holdings
response = client.holdings.list_holdings(user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling HoldingsApi->list_holdings: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#List holdings
response = client.holdings.list_holdings(user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling HoldingsApi->list_holdings: #{e}"
end
Example response:
{
"holdings": [
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 676,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.59,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 899.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
},
{
"account_guid": "ACT-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 827,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.5,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 989.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class HoldingsResponseBody {
Holdings: [
class Holding {
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Holdings: [
{
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class HoldingsResponseBody {
holdings: [
class Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
HoldingsResponseBody {
holdings: [
Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/HoldingsResponseBody Object (
[holdings] => Array (
atrium/model/Holding Object (
[account_guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[cost_basis] => 827
[created_at] => 2015-04-13T12:01:23-06:00
[currency_code] => USD
[cusip] => 18383M878
[daily_change] => 2.5
[description] => Guggenheim Defensive Equity ETF
[guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[holding_type] => MONEY_MARKET
[market_value] => 989.5
[member_guid] => MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
[purchase_price] => 26.3
[shares] => 6
[symbol] => DEF
[updated_at] => 2015-04-13T12:01:23-06:00
[user_guid] => USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'holdings': [
{
'account_guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'cost_basis': 827
'created_at': 2015-04-13T12:01:23-06:00
'currency_code': USD
'cusip': 18383M878
'daily_change': 2.5
'description': Guggenheim Defensive Equity ETF
'guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'holding_type': MONEY_MARKET
'market_value': 989.5
'member_guid': MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
'purchase_price': 26.3
'shares': 6
'symbol': DEF
'updated_at': 2015-04-13T12:01:23-06:00
'user_guid': USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::HoldingsResponseBody
@holdings= [
#<MX::Holding
@account_guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@cost_basis= 827
@created_at= 2015-04-13T12:01:23-06:00
@currency_code= USD
@cusip= 18383M878
@daily_change= 2.5
@description= Guggenheim Defensive Equity ETF
@guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@holding_type= MONEY_MARKET
@market_value= 989.5
@member_guid= MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
@purchase_price= 26.3
@shares= 6
@symbol= DEF
@updated_at= 2015-04-13T12:01:23-06:00
@user_guid= USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
Use this endpoint to read all holdings associated with a specific user
.
Read a holding
GET users/{user_guid}/holdings/{holding_guid}
Example request:
$ curl -i -X GET 'https://vestibule.mx.com/users/USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d/holdings/HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ReadHoldingExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var holdingGuid = "HOL-123"; // string | The unique identifier for a `holding`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Read holding
HoldingResponseBody response = client.holdings.ReadHolding(holdingGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling HoldingsApi.ReadHolding: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
holdingGUID := "HOL-123" // string | The unique identifier for a `holding`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Holdings.ReadHolding(ctx, holdingGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class HoldingsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String holdingGuid = "HOL-123"; // String | The unique identifier for a `holding`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
HoldingResponseBody response = client.holdings.readHolding(holdingGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling HoldingsApi#readHolding");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var holdingGuid = "HOL-123"; // string | The unique identifier for a `holding`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.holdings.readHolding(holdingGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$holding_guid = "HOL-123"; // string | The unique identifier for a `holding`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->holdings->readHolding($holding_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling HoldingsApi->readHolding: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
holding_guid = "HOL-123" # str | The unique identifier for a `holding`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# Read holding
response = client.holdings.read_holding(holding_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling HoldingsApi->read_holding: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
holding_guid = "HOL-123" # String | The unique identifier for a `holding`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#Read holding
response = client.holdings.read_holding(holding_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling HoldingsApi->read_holding: #{e}"
end
Example response:
{
"holding": {
"account_guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"cost_basis": 827,
"created_at": "2015-04-13T12:01:23-06:00",
"currency_code": "USD",
"cusip": "18383M878",
"daily_change": 2.5,
"description": "Guggenheim Defensive Equity ETF",
"guid": "HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2",
"holding_type": "MONEY_MARKET",
"market_value": 989.5,
"member_guid": "MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe",
"purchase_price": 26.3,
"shares": 6,
"symbol": "DEF",
"updated_at": "2015-04-13T12:01:23-06:00",
"user_guid": "USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d"
}
}
class HoldingResponseBody {
Holding:
class Holding {
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
}
{
Holding:
{
AccountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
CostBasis: 827
CreatedAt: 2015-04-13T12:01:23-06:00
CurrencyCode: USD
Cusip: 18383M878
DailyChange: 2.5
Description: Guggenheim Defensive Equity ETF
Guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
HoldingType: MONEY_MARKET
MarketValue: 989.5
MemberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
PurchasePrice: 26.3
Shares: 6
Symbol: DEF
UpdatedAt: 2015-04-13T12:01:23-06:00
UserGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
}
class HoldingResponseBody {
holding:
class Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
}
HoldingResponseBody {
holding:
Holding {
accountGuid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
costBasis: 827
createdAt: 2015-04-13T12:01:23-06:00
currencyCode: USD
cusip: 18383M878
dailyChange: 2.5
description: Guggenheim Defensive Equity ETF
guid: HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
holdingType: MONEY_MARKET
marketValue: 989.5
memberGuid: MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
purchasePrice: 26.3
shares: 6
symbol: DEF
updatedAt: 2015-04-13T12:01:23-06:00
userGuid: USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
}
atrium/model/HoldingResponseBody Object (
[holding] =>
atrium/model/Holding Object (
[account_guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[cost_basis] => 827
[created_at] => 2015-04-13T12:01:23-06:00
[currency_code] => USD
[cusip] => 18383M878
[daily_change] => 2.5
[description] => Guggenheim Defensive Equity ETF
[guid] => HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
[holding_type] => MONEY_MARKET
[market_value] => 989.5
[member_guid] => MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
[purchase_price] => 26.3
[shares] => 6
[symbol] => DEF
[updated_at] => 2015-04-13T12:01:23-06:00
[user_guid] => USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
)
)
{
'holding':
{
'account_guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'cost_basis': 827
'created_at': 2015-04-13T12:01:23-06:00
'currency_code': USD
'cusip': 18383M878
'daily_change': 2.5
'description': Guggenheim Defensive Equity ETF
'guid': HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
'holding_type': MONEY_MARKET
'market_value': 989.5
'member_guid': MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
'purchase_price': 26.3
'shares': 6
'symbol': DEF
'updated_at': 2015-04-13T12:01:23-06:00
'user_guid': USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
}
}
#<MX::HoldingResponseBody
@holding=
#<MX::Holding
@account_guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@cost_basis= 827
@created_at= 2015-04-13T12:01:23-06:00
@currency_code= USD
@cusip= 18383M878
@daily_change= 2.5
@description= Guggenheim Defensive Equity ETF
@guid= HOL-d65683e8-9eab-26bb-bcfd-ced159c9abe2
@holding_type= MONEY_MARKET
@market_value= 989.5
@member_guid= MBR-d65683e8-9eab-26bb-bcfd-ced159c9abe
@purchase_price= 26.3
@shares= 6
@symbol= DEF
@updated_at= 2015-04-13T12:01:23-06:00
@user_guid= USR-743e5d7f-1116-28fa-5de1-d3ba02e41d8d
>
>
Use this endpoint to read a specific holding
associated with a specific user
.
Institutions
An institution
represents a financial institution like Chase, Wells Fargo, or Mountain America Credit Union.
It's important to point out that many real-world financial institutions will actually have several different institution
objects within Atrium. This is because, for example, the banking and mortgage divisions of Wells Fargo may use separate online systems for accessing customer data, both of which may be different from the credit card division's system, etc.
Institution fields
Field | Data type | Description |
---|---|---|
code |
String | A unique identifier for each institution , defined by MX. |
medium_logo_url |
String | URL for a 100px X 100px logo for each institution . A generic logo is returned for institutions that don't have one. |
name |
String | An easy-to-read name for an institution , e.g., "Chase Bank" or "Wells Fargo Bank." |
small_logo_url |
String | URL for a 50px X 50px logo for each institution . A generic logo is returned for institutions that don't have one. |
supports_account_identification |
Boolean | Indicates whether the institution supports account identification. |
supports_account_statement |
Boolean | Indicates whether the institution provides access to account statements. |
supports_account_verification |
Boolean | Indicates whether the institution supports account verification. |
supports_transaction_history |
Boolean | Indicates whether the institution allows access to up to 24 months of transaction data. |
url |
String | Website URL for a particular institution, e.g., www.chase.com. |
List or search institutions
GET /institutions
Example request
$ curl -i -X GET 'https://vestibule.mx.com/institutions?name=chase' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListInstitutionsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var name = name_example; // string | This will list only institutions in which the appended string appears. (optional)
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
var supportsAccountIdentification = true; // bool? | Filter only institutions which support account identification. (optional)
var supportsAccountStatement = true; // bool? | Filter only institutions which support account statements. (optional)
var supportsAccountVerification = true; // bool? | Filter only institutions which support account verification. (optional)
var supportsTransactionHistory = true; // bool? | Filter only institutions which support extended transaction history. (optional)
try
{
// List institutions
InstitutionsResponseBody response = client.institutions.ListInstitutions(name, page, recordsPerPage, supportsAccountIdentification, supportsAccountStatement, supportsAccountVerification, supportsTransactionHistory);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling InstitutionsApi.ListInstitutions: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
opts := &atrium.ListInstitutionsOpts{
Name: optional.NewString(name_example), // string | This will list only institutions in which the appended string appears.
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
SupportsAccountIdentification: optional.NewBool(true), // bool | Filter only institutions which support account identification.
SupportsAccountStatement: optional.NewBool(true), // bool | Filter only institutions which support account statements.
SupportsAccountVerification: optional.NewBool(true), // bool | Filter only institutions which support account verification.
SupportsTransactionHistory: optional.NewBool(true), // bool | Filter only institutions which support extended transaction history.
}
response, _, err := client.Institutions.ListInstitutions(ctx, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class InstitutionsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String name = name_example; // String | This will list only institutions in which the appended string appears.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
Boolean supportsAccountIdentification = true; // Boolean | Filter only institutions which support account identification.
Boolean supportsAccountStatement = true; // Boolean | Filter only institutions which support account statements.
Boolean supportsAccountVerification = true; // Boolean | Filter only institutions which support account verification.
Boolean supportsTransactionHistory = true; // Boolean | Filter only institutions which support extended transaction history.
try {
InstitutionsResponseBody response = client.institutions.listInstitutions(name, page, recordsPerPage, supportsAccountIdentification, supportsAccountStatement, supportsAccountVerification, supportsTransactionHistory);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling InstitutionsApi#listInstitutions");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var name = name_example; // string | This will list only institutions in which the appended string appears. (optional)
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var supportsAccountIdentification = true; // boolean | Filter only institutions which support account identification. (optional)
var supportsAccountStatement = true; // boolean | Filter only institutions which support account statements. (optional)
var supportsAccountVerification = true; // boolean | Filter only institutions which support account verification. (optional)
var supportsTransactionHistory = true; // boolean | Filter only institutions which support extended transaction history. (optional)
var response = client.institutions.listInstitutions(name, page, recordsPerPage, supportsAccountIdentification, supportsAccountStatement, supportsAccountVerification, supportsTransactionHistory);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$name = name_example; // string | This will list only institutions in which the appended string appears.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
$supports_account_identification = true; // bool | Filter only institutions which support account identification.
$supports_account_statement = true; // bool | Filter only institutions which support account statements.
$supports_account_verification = true; // bool | Filter only institutions which support account verification.
$supports_transaction_history = true; // bool | Filter only institutions which support extended transaction history.
try {
$result = $client->institutions->listInstitutions($name, $page, $records_per_page, $supports_account_identification, $supports_account_statement, $supports_account_verification, $supports_transaction_history);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling InstitutionsApi->listInstitutions: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
name = name_example # str | This will list only institutions in which the appended string appears. (optional)
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
supports_account_identification = true # bool | Filter only institutions which support account identification. (optional)
supports_account_statement = true # bool | Filter only institutions which support account statements. (optional)
supports_account_verification = true # bool | Filter only institutions which support account verification. (optional)
supports_transaction_history = true # bool | Filter only institutions which support extended transaction history. (optional)
try:
# List institutions
response = client.institutions.list_institutions(name=name, page=page, records_per_page=records_per_page, supports_account_identification=supports_account_identification, supports_account_statement=supports_account_statement, supports_account_verification=supports_account_verification, supports_transaction_history=supports_transaction_history)
pprint(response)
except ApiException as e:
print("Exception when calling InstitutionsApi->list_institutions: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
opts = {
name: name_example, # String | This will list only institutions in which the appended string appears.
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
supports_account_identification: true, # BOOLEAN | Filter only institutions which support account identification.
supports_account_statement: true, # BOOLEAN | Filter only institutions which support account statements.
supports_account_verification: true, # BOOLEAN | Filter only institutions which support account verification.
supports_transaction_history: true # BOOLEAN | Filter only institutions which support extended transaction history.
}
begin
#List institutions
response = client.institutions.list_institutions(opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling InstitutionsApi->list_institutions: #{e}"
end
Example response
{
"institutions": [
{
"code": "chase",
"medium_logo_url": "https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png",
"name": "Chase Bank",
"small_logo_url": "https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png",
"supports_account_identification": true,
"supports_account_statement": true,
"supports_account_verification": true,
"supports_transaction_history": true,
"url": "https://www.chase.com"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class InstitutionsResponseBody {
Institutions: [
class Institution {
Code: chase
MediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
Name: Chase Bank
SmallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
SupportsAccountIdentification: true
SupportsAccountStatement: true
SupportsAccountVerification: true
SupportsTransactionHistory: true
Url: https://www.chase.com
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Institutions: [
{
Code: chase
MediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
Name: Chase Bank
SmallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
SupportsAccountIdentification: true
SupportsAccountStatement: true
SupportsAccountVerification: true
SupportsTransactionHistory: true
Url: https://www.chase.com
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class InstitutionsResponseBody {
institutions: [
class Institution {
code: chase
mediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
name: Chase Bank
smallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
supportsAccountIdentification: true
supportsAccountStatement: true
supportsAccountVerification: true
supportsTransactionHistory: true
url: https://www.chase.com
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
InstitutionsResponseBody {
institutions: [
Institution {
code: chase
mediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
name: Chase Bank
smallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
supportsAccountIdentification: true
supportsAccountStatement: true
supportsAccountVerification: true
supportsTransactionHistory: true
url: https://www.chase.com
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/InstitutionsResponseBody Object (
[institutions] => Array (
atrium/model/Institution Object (
[code] => chase
[medium_logo_url] => https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
[name] => Chase Bank
[small_logo_url] => https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
[supports_account_identification] => true
[supports_account_statement] => true
[supports_account_verification] => true
[supports_transaction_history] => true
[url] => https://www.chase.com
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'institutions': [
{
'code': chase
'medium_logo_url': https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
'name': Chase Bank
'small_logo_url': https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
'supports_account_identification': true
'supports_account_statement': true
'supports_account_verification': true
'supports_transaction_history': true
'url': https://www.chase.com
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::InstitutionsResponseBody
@institutions= [
#<MX::Institution
@code= chase
@medium_logo_url= https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
@name= Chase Bank
@small_logo_url= https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
@supports_account_identification= true
@supports_account_statement= true
@supports_account_verification= true
@supports_transaction_history= true
@url= https://www.chase.com
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
This endpoint allows you to see what institutions are available for connection. Information returned will include the institution_code
assigned to a particular institution, URLs for the financial institution's logo, and the URL for its website.
This endpoint takes certain optional query string parameters to facilitate searching for specific institutions.
Parameter | Results |
---|---|
name={string} |
Only institutions whose name contains the appended string will be returned. |
supports_account_identification=true |
Only institutions which support identity will be returned. |
supports_account_statement=true |
Only institutions which offer access to account statements will be returned. |
supports_account_verification=true |
Only institutions which support account verification will be returned. |
supports_transaction_history=true |
Only institutions which offer an extended transaction history will be returned. |
Read institution
GET /institutions/{institution_code}
Example request
$ curl -i -X GET 'https://vestibule.mx.com/institutions/chase' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ReadInstitutionExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var institutionCode = "example_institution_code"; // string | The institution_code of the institution.
try
{
// Read institution
InstitutionResponseBody response = client.institutions.ReadInstitution(institutionCode);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling InstitutionsApi.ReadInstitution: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
institutionCode := "example_institution_code" // string | The institution_code of the institution.
response, _, err := client.Institutions.ReadInstitution(ctx, institutionCode)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class InstitutionsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String institutionCode = "example_institution_code"; // String | The institution_code of the institution.
try {
InstitutionResponseBody response = client.institutions.readInstitution(institutionCode);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling InstitutionsApi#readInstitution");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var institutionCode = "example_institution_code"; // string | The institution_code of the institution.
var response = client.institutions.readInstitution(institutionCode);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$institution_code = "example_institution_code"; // string | The institution_code of the institution.
try {
$result = $client->institutions->readInstitution($institution_code);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling InstitutionsApi->readInstitution: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
institution_code = "example_institution_code" # str | The institution_code of the institution.
try:
# Read institution
response = client.institutions.read_institution(institution_code)
pprint(response)
except ApiException as e:
print("Exception when calling InstitutionsApi->read_institution: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
institution_code = "example_institution_code" # String | The institution_code of the institution.
begin
#Read institution
response = client.institutions.read_institution(institution_code)
p response
rescue Atrium::ApiError => e
puts "Exception when calling InstitutionsApi->read_institution: #{e}"
end
Example response
Status: 200 OK
{
"institution": {
"code": "chase",
"medium_logo_url": "https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png",
"name": "Chase Bank",
"small_logo_url": "https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png",
"supports_account_identification": true,
"supports_account_statement": true,
"supports_account_verification": true,
"supports_transaction_history": true,
"url": "https://www.chase.com"
}
}
class InstitutionResponseBody {
Institution:
class Institution {
Code: chase
MediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
Name: Chase Bank
SmallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
SupportsAccountIdentification: true
SupportsAccountStatement: true
SupportsAccountVerification: true
SupportsTransactionHistory: true
Url: https://www.chase.com
}
}
{
Institution:
{
Code: chase
MediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
Name: Chase Bank
SmallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
SupportsAccountIdentification: true
SupportsAccountStatement: true
SupportsAccountVerification: true
SupportsTransactionHistory: true
Url: https://www.chase.com
}
}
class InstitutionResponseBody {
institution:
class Institution {
code: chase
mediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
name: Chase Bank
smallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
supportsAccountIdentification: true
supportsAccountStatement: true
supportsAccountVerification: true
supportsTransactionHistory: true
url: https://www.chase.com
}
}
InstitutionResponseBody {
institution:
Institution {
code: chase
mediumLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
name: Chase Bank
smallLogoUrl: https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
supportsAccountIdentification: true
supportsAccountStatement: true
supportsAccountVerification: true
supportsTransactionHistory: true
url: https://www.chase.com
}
}
atrium/model/InstitutionResponseBody Object (
[institution] =>
atrium/model/Institution Object (
[code] => chase
[medium_logo_url] => https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
[name] => Chase Bank
[small_logo_url] => https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
[supports_account_identification] => true
[supports_account_statement] => true
[supports_account_verification] => true
[supports_transaction_history] => true
[url] => https://www.chase.com
)
)
{
'institution':
{
'code': chase
'medium_logo_url': https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
'name': Chase Bank
'small_logo_url': https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
'supports_account_identification': true
'supports_account_statement': true
'supports_account_verification': true
'supports_transaction_history': true
'url': https://www.chase.com
}
}
#<MX::InstitutionResponseBody
@institution=
#<MX::Institution
@code= chase
@medium_logo_url= https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/100x100/default_100x100.png
@name= Chase Bank
@small_logo_url= https://content.moneydesktop.com/storage/MD_Assets/Ipad%20Logos/50x50/default_50x50.png
@supports_account_identification= true
@supports_account_statement= true
@supports_account_verification= true
@supports_transaction_history= true
@url= https://www.chase.com
>
>
This endpoint allows you to see information for a specific institution
.
Read institution credentials
GET /institutions/{institution_code}/credentials
Example request
$ curl -i -X GET 'https://vestibule.mx.com/institutions/chase/credentials' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ReadInstitutionCredentialsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var institutionCode = "example_institution_code"; // string | The institution_code of the institution.
try
{
// Read institution credentials
CredentialsResponseBody response = client.institutions.ReadInstitutionCredentials(institutionCode);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling InstitutionsApi.ReadInstitutionCredentials: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
institutionCode := "example_institution_code" // string | The institution_code of the institution.
response, _, err := client.Institutions.ReadInstitutionCredentials(ctx, institutionCode)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class InstitutionsApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String institutionCode = "example_institution_code"; // String | The institution_code of the institution.
try {
CredentialsResponseBody response = client.institutions.readInstitutionCredentials(institutionCode);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling InstitutionsApi#readInstitutionCredentials");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var institutionCode = "example_institution_code"; // string | The institution_code of the institution.
var response = client.institutions.readInstitutionCredentials(institutionCode);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$institution_code = "example_institution_code"; // string | The institution_code of the institution.
try {
$result = $client->institutions->readInstitutionCredentials($institution_code);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling InstitutionsApi->readInstitutionCredentials: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
institution_code = "example_institution_code" # str | The institution_code of the institution.
try:
# Read institution credentials
response = client.institutions.read_institution_credentials(institution_code)
pprint(response)
except ApiException as e:
print("Exception when calling InstitutionsApi->read_institution_credentials: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
institution_code = "example_institution_code" # String | The institution_code of the institution.
begin
#Read institution credentials
response = client.institutions.read_institution_credentials(institution_code)
p response
rescue Atrium::ApiError => e
puts "Exception when calling InstitutionsApi->read_institution_credentials: #{e}"
end
Example response
Status: 200 OK
{
"credentials": [
{
"field_name": "login_email",
"guid": "CRD-12ce94ad-032b-5441-8cb3-d7ebe3a35676",
"label": "Email Address",
"display_order": 0,
"type": "LOGIN"
},
{
"field_name": "login_password",
"guid": "CRD-305767e4-f464-765b-8f83-881b5bd307ec",
"label": "PayPal password",
"display_order": 1,
"type": "PASSWORD"
}
]
}
class CredentialsResponseBody {
Credentials: [
class CredentialResponse {
FieldName: LOGIN
Guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
Label: Username
Options: [
class CredentialOption {
Label: option_label
Value: option_value
}
]
Type: LOGIN
}
]
}
{
Credentials: [
{
FieldName: LOGIN
Guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
Label: Username
Options: [
{
Label: option_label
Value: option_value
}
]
Type: LOGIN
}
]
}
class CredentialsResponseBody {
credentials: [
class CredentialResponse {
fieldName: LOGIN
guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
label: Username
options: [
class CredentialOption {
label: option_label
value: option_value
}
]
type: LOGIN
}
]
}
CredentialsResponseBody {
credentials: [
CredentialResponse {
fieldName: LOGIN
guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
label: Username
options: [
CredentialOption {
label: option_label
value: option_value
}
]
type: LOGIN
}
]
}
atrium/model/CredentialsResponseBody Object (
[credentials] => Array (
atrium/model/CredentialResponse Object (
[field_name] => LOGIN
[guid] => CRD-1ec152cd-e628-e81a-e852-d1e7104624da
[label] => Username
[options] => Array (
atrium/model/CredentialOption Object (
[label] => option_label
[value] => option_value
)
)
[type] => LOGIN
)
)
)
{
'credentials': [
{
'field_name': LOGIN
'guid': CRD-1ec152cd-e628-e81a-e852-d1e7104624da
'label': Username
'options': [
{
'label': option_label
'value': option_value
}
]
'type': LOGIN
}
]
}
#<MX::CredentialsResponseBody
@credentials= [
#<MX::CredentialResponse
@field_name= LOGIN
@guid= CRD-1ec152cd-e628-e81a-e852-d1e7104624da
@label= Username
@options= [
#<MX::CredentialOption
@label= option_label
@value= option_value
>
]
@type= LOGIN
>
]
>
Use this endpoint to see which credentials will be needed to create a member
for a specific institution
.
Field | Data type | Description |
---|---|---|
display_order |
Integer | The order in which the credential should be displayed to the end user; lower numbers should be displayed first. |
field_name |
String | Name of the credential field for the institution, e.g., "LOGIN" |
guid |
String | A unique identifier for the credential. Defined by MX. |
label |
String | A label for the credential, intended to be readable by the end user, e.g., "Username" |
type |
String | A name for the type of field, e.g., "PASSWORD" |
options |
Array | See explanation that immediately follows. |
For credentials with the type OPTIONS
, the credentials
object will contain a nested array called options
. This array lists various choices available for credential prompts, and includes further attributes.
Field | Data type | Description |
---|---|---|
label |
String | A label for the credential prompt. |
value |
String | A response for the credential prompt. |
Members
A member
represents the relationship between a user
and an institution
, and creating one is how you connect one to the other. Thus, multiple members may be attached to a single user
, e.g., one for their bank, another for their mortgage provider, another for their credit card provider, etc.
Member fields
Field | Data type | Description |
---|---|---|
aggregated_at |
String | The date and time the account was last aggregated. |
connection_status |
String | The status of a member's aggregation. Read more about these statuses below. |
guid |
String | A unique identifier for the member . Defined by MX. |
identifier |
String | A unique, enforced identifier for the member . Defined by you. |
institution_code |
String | Unique identifier for the institution . Defined by MX. |
is_being_aggregated |
Boolean | This value is true if the member is being aggregated at the time of the request and false otherwise. |
is_oauth | boolean | This indicates whether the member uses OAuth to authenticate the member. Defaults to false . |
metadata |
String | Additional information you can store on this member . |
name |
String | The name of the member . If omitted as a parameter when creating the member , the institution name within the MX platform will be used, e.g., "Chase Bank." |
oauth_window_uri |
String | A URI which takes the end user to a UI for the registered OAuth application. This field only appears in a member response when creating an OAuth member or when requesting a URI with the generate OAuth window URI endpoint. |
status |
String | The status of a member's aggregation. This field will soon be deprecated. Use connection_status above as more detailed indicator of a member's status. |
successfully_aggregated_at |
String | The date and time the member was successfully aggregated. |
user_guid |
String | A unique identifier for the user. Defined by MX. |
Aggregate member
POST /users/{user_guid}/members/{member_guid}/aggregate
Example request
$ curl -i -X POST 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/aggregate' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class AggregateMemberExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Aggregate member
MemberResponseBody response = client.members.AggregateMember(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.AggregateMember: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Members.AggregateMember(ctx, memberGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
MemberResponseBody response = client.members.aggregateMember(memberGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#aggregateMember");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.members.aggregateMember(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->members->aggregateMember($member_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->aggregateMember: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# Aggregate member
response = client.members.aggregate_member(member_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->aggregate_member: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#Aggregate member
response = client.members.aggregate_member(member_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->aggregate_member: #{e}"
end
Example response
Status: 202 Accepted
{
"member": {
"aggregated_at": "2016-10-13T18:07:57+00:00",
"connection_status": "CONNECTED",
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"identifier": "unique_id",
"institution_code": "chase",
"is_being_aggregated": true,
"is_oauth": false,
"metadata": "{\"credentials_last_refreshed_at\": \"2015-10-15\"}",
"name": "Chase Bank",
"status": "INITIATED",
"successfully_aggregated_at": "2016-10-13T17:57:38+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
}
class MemberResponseBody {
Member:
class Member {
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
{
Member:
{
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
class MemberResponseBody {
member:
class Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
MemberResponseBody {
member:
Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
atrium/model/MemberResponseBody Object (
[member] =>
atrium/model/Member Object (
[aggregated_at] => 2016-10-13T18:07:57+00:00
[connection_status] => CONNECTED
[guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[identifier] => unique_id
[institution_code] => chase
[is_being_aggregated] => false
[is_oauth] => false
[metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
[name] => Chase Bank
[oauth_window_uri] => oauth_window_uri_example
[status] => COMPLETED
[successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
{
'member':
{
'aggregated_at': 2016-10-13T18:07:57+00:00
'connection_status': CONNECTED
'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'identifier': unique_id
'institution_code': chase
'is_being_aggregated': false
'is_oauth': false
'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
'name': Chase Bank
'oauth_window_uri': oauth_window_uri_example
'status': COMPLETED
'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
#<MX::MemberResponseBody
@member=
#<MX::Member
@aggregated_at= 2016-10-13T18:07:57+00:00
@connection_status= CONNECTED
@guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@identifier= unique_id
@institution_code= chase
@is_being_aggregated= false
@is_oauth= false
@metadata= {"credentials_last_refreshed_at": "2015-10-15"}
@name= Chase Bank
@oauth_window_uri= oauth_window_uri_example
@status= COMPLETED
@successfully_aggregated_at= 2016-10-13T17:57:38+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
>
Calling this endpoint initiates an aggregation event for the member
. This gathers the latest account and transaction data from the connected institution. If this data has recently been updated, MX may not initiate an aggregation event.
If a standard aggregation is already running, a 202 Accepted
status will be returned. If another aggregation-type process is already running — like verification or extended transaction history — a 409 Conflict
will be returned.
For more information on this and other aggregation-type processes, please see our developer guide
Aggregate member account balances
Endpoint:
POST /users/{user_guid}/members/{member_guid}/balance
Example request:
curl -X POST \
https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/balance \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class AggregateMemberBalancesExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Aggregate member account balances
MemberResponseBody response = client.members.AggregateMemberBalances(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.AggregateMemberBalances: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Members.AggregateMemberBalances(ctx, memberGUID, userGUID, )
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
MemberResponseBody response = client.members.aggregateMemberBalances(memberGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#aggregateMemberBalances");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.members.aggregateMemberBalances(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->members->aggregateMemberBalances($member_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->aggregateMemberBalances: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID", "https://vestibule.mx.com")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# Aggregate member account balances
response = client.members.aggregate_member_balances(member_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->aggregate_member_balances: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#Aggregate member account balances
response = client.members.aggregate_member_balances(member_guid, user_guid, )
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->aggregate_member_balances: #{e}"
end
Example response:
{
"member": {
"aggregated_at": "2019-10-07T16:25:27Z",
"connection_status": "EXPIRED",
"guid": "MBR-a4652b66-3ee5-cb9f-295a-72eddef61db5",
"identifier": null,
"institution_code": "mxbank",
"is_being_aggregated": true,
"is_oauth": false,
"metadata": null,
"name": "MX Bank",
"status": "INITIATED",
"successfully_aggregated_at": "2019-10-07T15:58:59Z",
"user_guid": "USR-72aba5cc-8c74-b22c-227c-4b1c095fa12e"
}
}
class MemberResponseBody {
Member:
class Member {
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
{
Member:
{
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
class MemberResponseBody {
member:
class Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
MemberResponseBody {
member:
Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
atrium/model/MemberResponseBody Object (
[member] =>
atrium/model/Member Object (
[aggregated_at] => 2016-10-13T18:07:57+00:00
[connection_status] => CONNECTED
[guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[identifier] => unique_id
[institution_code] => chase
[is_being_aggregated] => false
[is_oauth] => false
[metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
[name] => Chase Bank
[oauth_window_uri] => oauth_window_uri_example
[status] => COMPLETED
[successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
{
'member':
{
'aggregated_at': 2016-10-13T18:07:57+00:00
'connection_status': CONNECTED
'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'identifier': unique_id
'institution_code': chase
'is_being_aggregated': false
'is_oauth': false
'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
'name': Chase Bank
'oauth_window_uri': oauth_window_uri_example
'status': COMPLETED
'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
#<MX::MemberResponseBody
@member=
#<MX::Member
@aggregated_at= 2016-10-13T18:07:57+00:00
@connection_status= CONNECTED
@guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@identifier= unique_id
@institution_code= chase
@is_being_aggregated= false
@is_oauth= false
@metadata= {"credentials_last_refreshed_at": "2015-10-15"}
@name= Chase Bank
@oauth_window_uri= oauth_window_uri_example
@status= COMPLETED
@successfully_aggregated_at= 2016-10-13T17:57:38+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
>
This endpoint operates much like the aggregate member endpoint except that it gathers only account balance information; it does not gather any transaction data at all.
If an account balance aggregation is already running, a 202 Accepted
status will be returned. If another aggregation-type process is already running — like verification or extended transaction history — a 409 Conflict
will be returned.
Repeated calls to this endpoint for the same member
can only be made at intervals greater that two hours. If made more frequently, a 429 Too Many Requests
status will be returned.
For more information on this and other aggregation-type processes, please see our developer guide
Create member
POST /users/{user_guid}/members
Example request
$ curl -i -X POST 'https://vestibule.mx.com/users/{user_guid}/members' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}' \
-d '{
"member": {
"institution_code": "chase",
"credentials": [
{
"guid": "CRD-1ec152cd-e628-e81a-e852-d1e7104624da",
"value": "ExampleUsername"
},
{
"guid": "CRD-1ec152cd-e628-e81a-e852-d1e7104624da",
"value": "Pa$$vv@Rd"
}
],
"skip_aggregation": true
}
}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class CreateMemberExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var body = new MemberCreateRequestBody(); // MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
try
{
// Create member
MemberResponseBody response = client.members.CreateMember(userGuid, body);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.CreateMember: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
userGUID := "USR-123" // string | The unique identifier for a `user`.
body := atrium.MemberCreateRequestBody{} // MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
response, _, err := client.Members.CreateMember(ctx, userGUID, body)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
MemberCreateRequestBody body = new MemberCreateRequestBody(); // MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
try {
MemberResponseBody response = client.members.createMember(userGuid, body);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#createMember");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var body = new atrium.MemberCreateRequestBody(); // MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
var response = client.members.createMember(userGuid, body);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$body = new \atrium\model\MemberCreateRequestBody(); // \atrium\model\MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
try {
$result = $client->members->createMember($user_guid, $body);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->createMember: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # str | The unique identifier for a `user`.
body = atrium.MemberCreateRequestBody() # MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
try:
# Create member
response = client.members.create_member(user_guid, body)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->create_member: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # String | The unique identifier for a `user`.
body = Atrium::MemberCreateRequestBody.new # MemberCreateRequestBody | Member object to be created with optional parameters (identifier and metadata) and required parameters (credentials and institution_code)
begin
#Create member
response = client.members.create_member(user_guidbody)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->create_member: #{e}"
end
Example response
Status: 202 Accepted
{
"member": {
"aggregated_at": "2016-10-13T17:57:36+00:00",
"connection_status": "CONNECTED",
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"identifier": "unique_id",
"institution_code": "chase",
"is_being_aggregated": true,
"is_oauth": false,
"metadata": "{\"credentials_last_refreshed_at\": \"2015-10-15\"}",
"name": "Chase Bank",
"status": "INITIATED",
"successfully_aggregated_at": null,
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
}
class MemberResponseBody {
Member:
class Member {
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
{
Member:
{
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
class MemberResponseBody {
member:
class Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
MemberResponseBody {
member:
Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
atrium/model/MemberResponseBody Object (
[member] =>
atrium/model/Member Object (
[aggregated_at] => 2016-10-13T18:07:57+00:00
[connection_status] => CONNECTED
[guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[identifier] => unique_id
[institution_code] => chase
[is_being_aggregated] => false
[is_oauth] => false
[metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
[name] => Chase Bank
[oauth_window_uri] => oauth_window_uri_example
[status] => COMPLETED
[successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
{
'member':
{
'aggregated_at': 2016-10-13T18:07:57+00:00
'connection_status': CONNECTED
'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'identifier': unique_id
'institution_code': chase
'is_being_aggregated': false
'is_oauth': false
'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
'name': Chase Bank
'oauth_window_uri': oauth_window_uri_example
'status': COMPLETED
'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
}
#<MX::MemberResponseBody
@member=
#<MX::Member
@aggregated_at= 2016-10-13T18:07:57+00:00
@connection_status= CONNECTED
@guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@identifier= unique_id
@institution_code= chase
@is_being_aggregated= false
@is_oauth= false
@metadata= {"credentials_last_refreshed_at": "2015-10-15"}
@name= Chase Bank
@oauth_window_uri= oauth_window_uri_example
@status= COMPLETED
@successfully_aggregated_at= 2016-10-13T17:57:38+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
>
Example request for OAuth member
$ curl -i -X POST 'https://vestibule.mx.com/users/USR-fa7537f3-48aa-a683-a02a-b18940482f54/members' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'Content-Type: application/json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}' \
-d '{
"member":{
"institution_code":"chase",
"metadata": "Additional information",
"is_oauth": true
},
"referral_source": "APP",
"ui_message_webview_url_scheme": "yourapp"
}'
Example response
{
"member": {
"aggregated_at": "2016-10-13T17:57:36+00:00",
"connection_status": "PENDING",
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"identifier": "unique_id",
"institution_code": "chase",
"is_being_aggregated": true,
"is_oauth": true,
"metadata": "Additional information",
"name": "Chase Bank",
"oauth_window_uri": "https://dev-firefly1.moneydesktop.com/oauth/predirect_to/MBR-7aa13bdb-2866-ba38-b326-d9fb32268f9b/lk76038j23cAstpxnt4g58vybqZqg9vnn0lz29bwmvc40tss5rhjxlyf53pns05vfd99y5m766fdj7njpf615A5j3013xmdqA9mwz5nAgs9gr2887h0krh1l4gbAxfp8ztnpd47wk6j2ztjbz1f0lyr73nbxft0pwjwkqdjnfpA8ktn9tbvAbxqn40645vs4kxxcAx2rjc0vyxhtfhsk5vpq3Anrmdjtfj8qlpc617bkntbAwlpylfqf4AshyvA6lpmn5ptrzqhd933k98rzymzmjgqy9m25np0fqm7zw6Akr8qyy5ckb6wxxA31vfjw5xm7td8z6vh7d0djwsgw34Awvj58psh2l7xk9414?referral_source=APP&ui_message_webview_url_scheme=yourapp",
"status": null,
"successfully_aggregated_at": null,
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
}
This endpoint allows you to create a new member
. Standard members are created with the required parameters credentials
and institution_code
.
When creating a standard member, you'll need to include the correct type of credential required by the financial institution, with values provided by the end user. You can find out which credential type is required with the read institution credentials endpoint.
Once you successfully create a standard member, MX will immediately validate the provided credentials and attempt to aggregate data for accounts and transactions. You can prevent this automatic aggregation by setting the skip_aggregation
parameter to true
.
OAuth members can only be created with institutions that support it. OAuth members require no credentials, but do require you to set the is_oauth
parameter to true
.
OAuth members will be created with a connection status of PENDING
; a one-time use redirect URI will be provided in the oauth_window_uri
field of the response. Making a separate request to the oauth_window_uri
will then take the end user to the registered OAuth application where they can provide credentials and choose what data to share with MX.
After completing the OAuth process, aggregation automatically will begin and the connection status will be updated, unless the skip_aggregation
parameter was set to true
.
Parameter | Data type | Description | Required? |
---|---|---|---|
identifier |
String | A unique enforced identifier for the member , defined by you. |
No |
institution_code |
String | Unique code for the institution to which the member will connect. |
Yes |
metadata |
String | Additional information you can store on this member . |
No |
skip_aggregation |
Boolean | Setting this parameter to true will prevent the member from automatically aggregating when it is created. |
No |
is_oauth |
Boolean | The member does not require credentials when being created; instead, the member is created with a PENDING status and the response to the request will contain the oauth_window_uri attribute; the end user authenticates credentials with OAuth. |
No |
referral_source |
String | Should be either BROWSER or APP depending on the implementation. Default is BROWSER . This field should not be nested under the member when given in a request body; it can also be sent as a query parameter to the the generate OAuth window URI endpoint. |
No |
ui_message_webview_url_scheme |
String | A scheme for routing the user back to the application state they were previously in. This field should not be nested under the member when given in a request body; it can also be sent as a query parameter to the the generate OAuth window URI endpoint. |
No |
Delete member
DELETE /users/{user_guid}/members/{member_guid}
Example request
$ curl -i -X DELETE 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class DeleteMemberExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Delete member
client.members.DeleteMember(memberGuid, userGuid);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.DeleteMember: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Members.DeleteMember(ctx, memberGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
client.members.deleteMember(memberGuid, userGuid);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#deleteMember");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.members.deleteMember(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$client->members->deleteMember($member_guid, $user_guid);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->deleteMember: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# Delete member
client.members.delete_member(member_guid, user_guid)
except ApiException as e:
print("Exception when calling MembersApi->delete_member: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#Delete member
client.members.delete_member(member_guid, user_guid)
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->delete_member: #{e}"
end
Example response
Status: 204 No Content
Accessing this endpoint will permanently delete a member
.
Generate OAuth window URI
Endpoint:
GET /users/{user_guid}/members/{member_guid}/oauth_window_uri
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/oauth_window_uri' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
Example response
Status: 200 OK
{
"member": {
"aggregated_at": "2016-10-13T18:07:57+00:00",
"connection_status": "CONNECTED",
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"identifier": "unique_id",
"institution_code": "chase",
"is_being_aggregated": false,
"metadata": "{\"credentials_last_refreshed_at\": \"2015-10-15\"}",
"name": "Chase Bank",
"oauth_window_uri": "https://dev-firefly1.moneydesktop.com/oauth/predirect_to/MBR-b5f96507-4c9f-492d-8bb0-810bbe2b8c13/zz9A0dsm36n744jtAApwl7pgpyZApchszmv05jzA2x3bv3j73bfp00g1nszk3nh77zn9jg1vgqt95hsp2r5r1v5lspt7w9fsyqpfy7h902vb41b9b83l01jhbn23lAzvjqggs52pmgx40f41vjxkylp68jh8zl2l33mlzww83xq9dmm9fs0l7t6hfAdls1xmn26ph2xtdxtx3kg8thbkpnxwnd67mlxnqsjqfAjAfjgAzz5zdbsfqqz2hf4dl5v5h2Ax7kx1gz7wmnk7sfk5xtvvptj4r1vqn1wl92dzg0tAzxyvg75d6A3gwpA98pb4s3d1c0nw3zq0mfjdkgsxp7ppgl9x7qvv97n81d53",
"status": "COMPLETED",
"successfully_aggregated_at": "2016-10-13T17:57:38+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
}
This endpoint will generate an oauth_window_uri
for the specified member
.
Generating a new oauth_window_uri
is necessary in order to send the end user through the OAuth process again. There are several situations where you might want to do this. Below are a few examples:
* A previous attempt at OAuth failed — for instance if the end user closed the OAuth window before completing the process.
* The financial institution has revoked a previous OAuth token or the token has expired.
The member
in question must be connected to an institution which supports OAuth. if the institution does not support OAuth, a 400 Bad Request
error will be returned with the message Member cannot use OAuth
.
Query parameters
Parameter | Data type | Description | Required? |
---|---|---|---|
referral_source |
String | Must be either BROWSER or APP depending on the implementation. Defaults to BROWSER . |
No |
ui_message_webview_url_scheme |
String | A scheme for routing the user back to the application state they were previously in. | No |
skip_aggregation |
Boolean | Setting this parameter to true will prevent the member from automatically aggregating after being redirected from the authorization page. |
No |
List members
GET /users/{user_guid}/members
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListMembersExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
try
{
// List members
MembersResponseBody response = client.members.ListMembers(userGuid, page, recordsPerPage);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ListMembers: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
userGUID := "USR-123" // string | The unique identifier for a `user`.
opts := &atrium.ListMembersOpts{
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
}
response, _, err := client.Members.ListMembers(ctx, userGUID, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
try {
MembersResponseBody response = client.members.listMembers(userGuid, page, recordsPerPage);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#listMembers");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var response = client.members.listMembers(userGuid, page, recordsPerPage);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
try {
$result = $client->members->listMembers($user_guid, $page, $records_per_page);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->listMembers: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # str | The unique identifier for a `user`.
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
try:
# List members
response = client.members.list_members(user_guid, page=page, records_per_page=records_per_page)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->list_members: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
user_guid = "USR-123" # String | The unique identifier for a `user`.
opts = {
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
}
begin
#List members
response = client.members.list_members(user_guid, opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->list_members: #{e}"
end
Example response
Status 200 OK
{
"members": [
{
"aggregated_at": "2016-10-13T18:07:57+00:00",
"connection_status": "CONNECTED",
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"identifier": "unique_id",
"institution_code": "chase",
"is_being_aggregated": true,
"is_oauth": false,
"metadata": "{\"credentials_last_refreshed_at\": \"2015-10-15\"}",
"name": "Chase Bank",
"status": "INITIATED",
"successfully_aggregated_at": "2016-10-13T17:57:38+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class MembersResponseBody {
Members: [
class Member {
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Members: [
{
AggregatedAt: 2016-10-13T18:07:57+00:00
ConnectionStatus: CONNECTED
Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Identifier: unique_id
InstitutionCode: chase
IsBeingAggregated: false
IsOauth: false
Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
Name: Chase Bank
OauthWindowUri: oauth_window_uri_example
Status: COMPLETED
SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class MembersResponseBody {
members: [
class Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
MembersResponseBody {
members: [
Member {
aggregatedAt: 2016-10-13T18:07:57+00:00
connectionStatus: CONNECTED
guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
identifier: unique_id
institutionCode: chase
isBeingAggregated: false
isOauth: false
metadata: {"credentials_last_refreshed_at": "2015-10-15"}
name: Chase Bank
oauthWindowUri: oauth_window_uri_example
status: COMPLETED
successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/MembersResponseBody Object (
[members] => Array (
atrium/model/Member Object (
[aggregated_at] => 2016-10-13T18:07:57+00:00
[connection_status] => CONNECTED
[guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[identifier] => unique_id
[institution_code] => chase
[is_being_aggregated] => false
[is_oauth] => false
[metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
[name] => Chase Bank
[oauth_window_uri] => oauth_window_uri_example
[status] => COMPLETED
[successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'members': [
{
'aggregated_at': 2016-10-13T18:07:57+00:00
'connection_status': CONNECTED
'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'identifier': unique_id
'institution_code': chase
'is_being_aggregated': false
'is_oauth': false
'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
'name': Chase Bank
'oauth_window_uri': oauth_window_uri_example
'status': COMPLETED
'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::MembersResponseBody
@members= [
#<MX::Member
@aggregated_at= 2016-10-13T18:07:57+00:00
@connection_status= CONNECTED
@guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@identifier= unique_id
@institution_code= chase
@is_being_aggregated= false
@is_oauth= false
@metadata= {"credentials_last_refreshed_at": "2015-10-15"}
@name= Chase Bank
@oauth_window_uri= oauth_window_uri_example
@status= COMPLETED
@successfully_aggregated_at= 2016-10-13T17:57:38+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
This endpoint returns an array which contains information on every member
associated with a specific user
.
List member credentials
GET /users/{user_guid}/members/{member_guid}/credentials
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/credentials' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListMemberCredentialsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// List member credentials
CredentialsResponseBody response = client.members.ListMemberCredentials(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ListMemberCredentials: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Members.ListMemberCredentials(ctx, memberGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
CredentialsResponseBody response = client.members.listMemberCredentials(memberGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#listMemberCredentials");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.members.listMemberCredentials(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->members->listMemberCredentials($member_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->listMemberCredentials: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# List member credentials
response = client.members.list_member_credentials(member_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->list_member_credentials: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#List member credentials
response = client.members.list_member_credentials(member_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->list_member_credentials: #{e}"
end
Example response
Status 200 OK
{
"credentials": [
{
"field_name": "login_email",
"guid": "CRD-12ce94ad-032b-5441-8cb3-d7ebe3a35676",
"label": "Email Address",
"display_order": 0,
"type": "LOGIN"
},
{
"field_name": "login_password",
"guid": "CRD-305767e4-f464-765b-8f83-881b5bd307ec",
"label": "PayPal password",
"display_order": 1,
"type": "PASSWORD"
}
]
}
class CredentialsResponseBody {
Credentials: [
class CredentialResponse {
FieldName: LOGIN
Guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
Label: Username
Options: [
class CredentialOption {
Label: option_label
Value: option_value
}
]
Type: LOGIN
}
]
}
{
Credentials: [
{
FieldName: LOGIN
Guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
Label: Username
Options: [
{
Label: option_label
Value: option_value
}
]
Type: LOGIN
}
]
}
class CredentialsResponseBody {
credentials: [
class CredentialResponse {
fieldName: LOGIN
guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
label: Username
options: [
class CredentialOption {
label: option_label
value: option_value
}
]
type: LOGIN
}
]
}
CredentialsResponseBody {
credentials: [
CredentialResponse {
fieldName: LOGIN
guid: CRD-1ec152cd-e628-e81a-e852-d1e7104624da
label: Username
options: [
CredentialOption {
label: option_label
value: option_value
}
]
type: LOGIN
}
]
}
atrium/model/CredentialsResponseBody Object (
[credentials] => Array (
atrium/model/CredentialResponse Object (
[field_name] => LOGIN
[guid] => CRD-1ec152cd-e628-e81a-e852-d1e7104624da
[label] => Username
[options] => Array (
atrium/model/CredentialOption Object (
[label] => option_label
[value] => option_value
)
)
[type] => LOGIN
)
)
)
{
'credentials': [
{
'field_name': LOGIN
'guid': CRD-1ec152cd-e628-e81a-e852-d1e7104624da
'label': Username
'options': [
{
'label': option_label
'value': option_value
}
]
'type': LOGIN
}
]
}
#<MX::CredentialsResponseBody
@credentials= [
#<MX::CredentialResponse
@field_name= LOGIN
@guid= CRD-1ec152cd-e628-e81a-e852-d1e7104624da
@label= Username
@options= [
#<MX::CredentialOption
@label= option_label
@value= option_value
>
]
@type= LOGIN
>
]
>
This endpoint returns an array which contains information on every non-MFA credential
associated with a specific member
.
Field | Data type | Description |
---|---|---|
display_order |
Integer | The order in which the credential should be displayed to the end user; lower numbers should be displayed first. |
field_name |
String | Name of the credential field for the institution, e.g., "LOGIN". |
guid |
String | A unique identifier for the credential . Defined by MX. |
label |
String | A label for the credential , intended to be readable by the end user, e.g., Username . |
type |
String | A name for the type of field, e.g., PASSWORD . |
List member accounts
GET /users/{user_guid}/members/{member_guid}/accounts
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/accounts' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListMemberAccountsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
try
{
// List member accounts
AccountsResponseBody response = client.members.ListMemberAccounts(memberGuid, userGuid, page, recordsPerPage);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ListMemberAccounts: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
opts := &atrium.ListMemberAccountsOpts{
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
}
response, _, err := client.Members.ListMemberAccounts(ctx, memberGUID, userGUID, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
try {
AccountsResponseBody response = client.members.listMemberAccounts(memberGuid, userGuid, page, recordsPerPage);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#listMemberAccounts");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var response = client.members.listMemberAccounts(memberGuid, userGuid, page, recordsPerPage);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
try {
$result = $client->members->listMemberAccounts($member_guid, $user_guid, $page, $records_per_page);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->listMemberAccounts: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
try:
# List member accounts
response = client.members.list_member_accounts(member_guid, user_guid, page=page, records_per_page=records_per_page)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->list_member_accounts: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
opts = {
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
}
begin
#List member accounts
response = client.members.list_member_accounts(member_guid, user_guid, opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->list_member_accounts: #{e}"
end
Example Response
Status: 200 OK
{
"accounts": [
{
"apr": 1.12,
"apy": 1.13,
"available_balance": 1000.23,
"available_credit": 100.23,
"balance": 1000.23,
"created_at": "2016-10-13T17:57:37+00:00",
"credit_limit": 100,
"currency_code": "USD",
"day_payment_is_due": 20,
"guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"institution_code": "chase",
"interest_rate": null,
"is_closed": false,
"last_payment": null,
"last_payment_at": null,
"matures_on": null,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"minimum_balance": null,
"minimum_payment": null,
"name": "Test Account 2",
"original_balance": null,
"payment_due_at": null,
"payoff_balance": null,
"started_on": null,
"subtype": null,
"total_account_value": null,
"type": "SAVINGS",
"updated_at": "2016-10-13T18:08:00+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class AccountsResponseBody {
Accounts: [
class Account {
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Accounts: [
{
Apr: 1.0
Apy: 1.0
AvailableBalance: 1000.0
AvailableCredit: 1000.0
Balance: 1000.0
CashBalance: 1000.0
CashSurrenderValue: 1000.0
CreatedAt: 2016-10-13T17:57:37+00:00
CreditLimit: 100.0
CurrencyCode: USD
DayPaymentIsDue: 20
DeathBenefit: 1000.0
Guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
HoldingsValue: 1000.0
InstitutionCode: chase
InterestRate:
IsClosed: false
LastPayment:
LoanAmount: 1000.0
MaturesOn:
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
MinimumBalance:
MinimumPayment:
Name: Test account 2
OriginalBalance:
PaymentDueAt:
PayoffBalance:
StartedOn:
Subtype:
TotalAccountValue:
Type: SAVINGS
UpdatedAt: 2016-10-13T18:08:00+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class AccountsResponseBody {
accounts: [
class Account {
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
AccountsResponseBody {
accounts: [
Account {
apr: 1.0
apy: 1.0
availableBalance: 1000.0
availableCredit: 1000.0
balance: 1000.0
cashBalance: 1000.0
cashSurrenderValue: 1000.0
createdAt: 2016-10-13T17:57:37+00:00
creditLimit: 100.0
currencyCode: USD
dayPaymentIsDue: 20
deathBenefit: 1000.0
guid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
holdingsValue: 1000.0
institutionCode: chase
interestRate:
isClosed: false
lastPayment:
loanAmount: 1000.0
maturesOn:
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
minimumBalance:
minimumPayment:
name: Test account 2
originalBalance:
paymentDueAt:
payoffBalance:
startedOn:
subtype:
totalAccountValue:
type: SAVINGS
updatedAt: 2016-10-13T18:08:00+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/AccountsResponseBody Object (
[accounts] => Array (
atrium/model/Account Object (
[apr] => 1.0
[apy] => 1.0
[available_balance] => 1000.0
[available_credit] => 1000.0
[balance] => 1000.0
[cash_balance] => 1000.0
[cash_surrender_value] => 1000.0
[created_at] => 2016-10-13T17:57:37+00:00
[credit_limit] => 100.0
[currency_code] => USD
[day_payment_is_due] => 20
[death_benefit] => 1000.0
[guid] => ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
[holdings_value] => 1000.0
[institution_code] => chase
[interest_rate] =>
[is_closed] => false
[last_payment] =>
[loan_amount] => 1000.0
[matures_on] =>
[member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[minimum_balance] =>
[minimum_payment] =>
[name] => Test account 2
[original_balance] =>
[payment_due_at] =>
[payoff_balance] =>
[started_on] =>
[subtype] =>
[total_account_value] =>
[type] => SAVINGS
[updated_at] => 2016-10-13T18:08:00+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'accounts': [
{
'apr': 1.0
'apy': 1.0
'available_balance': 1000.0
'available_credit': 1000.0
'balance': 1000.0
'cash_balance': 1000.0
'cash_surrender_value': 1000.0
'created_at': 2016-10-13T17:57:37+00:00
'credit_limit': 100.0
'currency_code': USD
'day_payment_is_due': 20
'death_benefit': 1000.0
'guid': ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
'holdings_value': 1000.0
'institution_code': chase
'interest_rate':
'is_closed': false
'last_payment':
'loan_amount': 1000.0
'matures_on':
'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'minimum_balance':
'minimum_payment':
'name': Test account 2
'original_balance':
'payment_due_at':
'payoff_balance':
'started_on':
'subtype':
'total_account_value':
'type': SAVINGS
'updated_at': 2016-10-13T18:08:00+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::AccountsResponseBody
@accounts= [
#<MX::Account
@apr= 1.0
@apy= 1.0
@available_balance= 1000.0
@available_credit= 1000.0
@balance= 1000.0
@cash_balance= 1000.0
@cash_surrender_value= 1000.0
@created_at= 2016-10-13T17:57:37+00:00
@credit_limit= 100.0
@currency_code= USD
@day_payment_is_due= 20
@death_benefit= 1000.0
@guid= ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
@holdings_value= 1000.0
@institution_code= chase
@interest_rate=
@is_closed= false
@last_payment=
@loan_amount= 1000.0
@matures_on=
@member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@minimum_balance=
@minimum_payment=
@name= Test account 2
@original_balance=
@payment_due_at=
@payoff_balance=
@started_on=
@subtype=
@total_account_value=
@type= SAVINGS
@updated_at= 2016-10-13T18:08:00+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
This endpoint returns an array with information about every account associated with a particular member.
List member MFA challenges
GET /users/{user_guid}/members/member_guid}/challenges
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/challenges' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListMemberMFAChallengesExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// List member MFA challenges
ChallengesResponseBody response = client.members.ListMemberMFAChallenges(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ListMemberMFAChallenges: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
response, _, err := client.Members.ListMemberMFAChallenges(ctx, memberGUID, userGUID)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
try {
ChallengesResponseBody response = client.members.listMemberMFAChallenges(memberGuid, userGuid);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#listMemberMFAChallenges");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var response = client.members.listMemberMFAChallenges(memberGuid, userGuid);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
try {
$result = $client->members->listMemberMFAChallenges($member_guid, $user_guid);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->listMemberMFAChallenges: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
try:
# List member MFA challenges
response = client.members.list_member_mfa_challenges(member_guid, user_guid)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->list_member_mfa_challenges: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
begin
#List member MFA challenges
response = client.members.list_member_mfa_challenges(member_guid, user_guid)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->list_member_mfa_challenges: #{e}"
end
Example response for challenge type TEXT
Status: 200 OK
{
"challenges": [
{
"field_name": "What city were you born in?",
"guid": "CRD-1ec152cd-e628-e81a-e852-d1e7104624da",
"label": "What city were you born in?",
"type": "TEXT"
}
]
}
class ChallengesResponseBody {
Challenges: [
class Challenge {
FieldName: What city were you born in?
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: What city were you born in?
Type: TEXT
}
]
}
{
Challenges: [
{
FieldName: What city were you born in?
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: What city were you born in?
Type: TEXT
}
]
}
class ChallengesResponseBody {
challenges: [
class Challenge {
fieldName: What city were you born in?
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: What city were you born in?
type: TEXT
}
]
}
ChallengesResponseBody {
challenges: [
Challenge {
fieldName: What city were you born in?
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: What city were you born in?
type: TEXT
}
]
}
atrium/model/ChallengesResponseBody Object (
[challenges] => Array (
atrium/model/Challenge Object (
[field_name] => What city were you born in?
[guid] => CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
[label] => What city were you born in?
[type] => TEXT
)
)
)
{
'challenges': [
{
'field_name': What city were you born in?
'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
'label': What city were you born in?
'type': TEXT
}
]
}
#<MX::ChallengesResponseBody
@challenges= [
#<MX::Challenge
@field_name= What city were you born in?
@guid= CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
@label= What city were you born in?
@type= TEXT
>
]
>
Example response for challenge type
IMAGE_DATA
Status: 200 OK
{
"challenges": [
{
"field_name": "Who is this guy?",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "Who is this guy?",
"type": "IMAGE_DATA",
"image_data": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
}
]
}
class ChallengesResponseBody {
Challenges: [
class Challenge {
FieldName: Who is this guy?
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: Who is this guy?
Type: IMAGE_DATA
}
]
}
{
Challenges: [
{
FieldName: Who is this guy?
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: Who is this guy?
Type: IMAGE_DATA
}
]
}
class ChallengesResponseBody {
challenges: [
class Challenge {
fieldName: Who is this guy?
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: Who is this guy?
type: IMAGE_DATA
}
]
}
ChallengesResponseBody {
challenges: [
Challenge {
fieldName: Who is this guy?
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: Who is this guy?
type: IMAGE_DATA
}
]
}
atrium/model/ChallengesResponseBody Object (
[challenges] => Array (
atrium/model/Challenge Object (
[field_name] => Who is this guy?
[guid] => CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
[image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
[label] => Who is this guy?
[type] => IMAGE_DATA
)
)
)
{
'challenges': [
{
'field_name': Who is this guy?
'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
'label': Who is this guy?
'type': IMAGE_DATA
}
]
}
#<MX::ChallengesResponseBody
@challenges= [
#<MX::Challenge
@field_name= Who is this guy?
@guid= CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
@image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
@label= Who is this guy?
@type= IMAGE_DATA
>
]
>
Example response for challenge type
OPTIONS
Status: 200 OK
{
"challenges": [
{
"field_name": "One time passcode",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "Where should we send your one time passcode?",
"type": "OPTIONS",
"options": [
{
"label": "user_email@provider.org",
"value": "0"
},
{
"label": "(XXX) XXX-1234",
"value": "1"
},
{
"label": "(XXX) XXX-2345",
"value": "2"
}
]
}
]
}
class ChallengesResponseBody {
Challenges: [
class Challenge {
FieldName: One time passcode
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: Where should we send your one time passcode?
Options: [
class ChallengeOption {
Label: user_email@provider.org
Value: 0
}
class ChallengeOption {
Label: (XXX) XXX-1234
Value: 1
}
class ChallengeOption {
Label: (XXX) XXX-2345
Value: 2
}
]
Type: OPTIONS
}
]
}
{
Challenges: [
{
FieldName: One time passcode
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: Where should we send your one time passcode?
Options: [
{
Label: user_email@provider.org
Value: 0
}
{
Label: (XXX) XXX-1234
Value: 1
}
{
Label: (XXX) XXX-2345
Value: 2
}
]
Type: OPTIONS
}
]
}
class ChallengesResponseBody {
challenges: [
class Challenge {
fieldName: One time passcode
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: Where should we send your one time passcode?
options: [
class ChallengeOption {
label: user_email@provider.org
value: 0
}
class ChallengeOption {
label: (XXX) XXX-1234
value: 1
}
class ChallengeOption {
label: (XXX) XXX-2345
value: 2
}
]
type: OPTIONS
}
]
}
ChallengesResponseBody {
challenges: [
Challenge {
fieldName: One time passcode
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: Where should we send your one time passcode?
options: [
ChallengeOption {
label: user_email@provider.org
value: 0
}
ChallengeOption {
label: (XXX) XXX-1234
value: 1
}
ChallengeOption {
label: (XXX) XXX-2345
value: 2
}
]
type: OPTIONS
}
]
}
atrium/model/ChallengesResponseBody Object (
[challenges] => Array (
atrium/model/Challenge Object (
[field_name] => One time passcode
[guid] => CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
[label] => Where should we send your one time passcode?
[options] => Array (
atrium/model/ChallengeOption Object (
[label] => user_email@provider.org
[value] => 0
)
atrium/model/ChallengeOption Object (
[label] => (XXX) XXX-1234
[value] => 1
)
atrium/model/ChallengeOption Object (
[label] => (XXX) XXX-2345
[value] => 2
)
)
[type] => OPTIONS
)
)
)
{
'challenges': [
{
'field_name': One time passcode
'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
'label': Where should we send your one time passcode?
'options': [
{
'label': user_email@provider.org
'value': 0
}
{
'label': (XXX) XXX-1234
'value': 1
}
{
'label': (XXX) XXX-2345
'value': 2
}
]
'type': OPTIONS
}
]
}
#<MX::ChallengesResponseBody
@challenges= [
#<MX::Challenge
@field_name= One time passcode
@guid= CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
@label= Where should we send your one time passcode?
@options= [
#<MX::ChallengeOption
@label= user_email@provider.org
@value= 0
>
#<MX::ChallengeOption
@label= (XXX) XXX-1234
@value= 1
>
#<MX::ChallengeOption
@label= (XXX) XXX-2345
@value= 2
>
]
@type= OPTIONS
>
]
>
Example response for challenge type
IMAGE_OPTIONS
Status: 200 OK
{
"challenges": [
{
"field_name": "Choose your image",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "Which is your image?",
"type": "IMAGE_OPTIONS",
"image_options": [
{
"label": "IMAGE_1",
"value": "1",
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
},
{
"label": "IMAGE_2",
"value": "2",
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
},
{
"label": "IMAGE_3",
"value": "3",
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
},
{
"label": "IMAGE_4",
"value": "4",
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
}
]
}
]
}
class ChallengesResponseBody {
Challenges: [
class Challenge {
FieldName: Choose your image
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: Which is your image?
ImageOptions: [
class ChallengeImageOption {
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_1
Value: 1
}
class ChallengeImageOption {
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_2
Value: 2
}
class ChallengeImageOption {
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_3
Value: 3
}
class ChallengeImageOption {
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_4
Value: 4
}
]
Type: IMAGE_OPTIONS
}
]
}
{
Challenges: [
{
FieldName: Choose your image
Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
Label: Which is your image?
ImageOptions: [
{
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_1
Value: 1
}
{
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_2
Value: 2
}
{
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_3
Value: 3
}
{
DataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
Label: IMAGE_4
Value: 4
}
]
Type: IMAGE_OPTIONS
}
]
}
class ChallengesResponseBody {
challenges: [
class Challenge {
fieldName: Choose your image
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: Which is your image?
image_options: [
class ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_1
value: 1
}
class ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_2
value: 2
}
class ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_3
value: 3
}
class ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_4
value; 4
}
]
type: IMAGE_OPTIONS
}
]
}
ChallengesResponseBody {
challenges: [
Challenge {
fieldName: Choose your image
guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
label: Which is your image?
image_options: [
ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_1
value: 1
}
ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_2
value: 2
}
ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_3
value: 3
}
ChallengeImageOption {
dataUri: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
label: IMAGE_4
value: 4
}
]
type: IMAGE_OPTIONS
}
]
}
atrium/model/ChallengesResponseBody Object (
[challenges] => Array (
atrium/model/Challenge Object (
[field_name] => Choose your image
[guid] => CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
[label] => Which is your image?
[image_options] => Array (
atrium/model/ChallengeImageOption Object (
[data_uri] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
[label] => IMAGE_1
[value] => 1
)
atrium/model/ChallengeImageOption Object (
[data_uri] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
[label] => IMAGE_2
[value] => 2
)
atrium/model/ChallengeImageOption Object (
[data_uri] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
[label] => IMAGE_3
[value] => 3
)
atrium/model/ChallengeImageOption Object (
[data_uri] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
[label] => IMAGE_4
[value] => 4
)
)
[type] => IMAGE_OPTIONS
)
)
)
{
'challenges': [
{
'field_name': Choose your image
'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
'label': Which is your image?
'image_options': [
{
'data_uri': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
'label': IMAGE_1
'value': 1
}
{
'data_uri': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
'label': IMAGE_2
'value': 2
}
{
'data_uri': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
'label': IMAGE_3
'value': 3
}
{
'data_uri': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
'label': IMAGE_4
'value': 4
}
]
'type': IMAGE_OPTIONS
}
]
}
#<MX::ChallengesResponseBody
@challenges= [
#<MX::Challenge
@field_name= Choose your image
@guid= CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
@label= Which is your image?
@image_options= [
#<MX::ChallengeImageOption
@data_uri= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
@label= IMAGE_1
@value= 1
>
#<MX::ChallengeImageOption
@data_uri= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
@label= IMAGE_2
@value= 2
>
#<MX::ChallengeImageOption
@data_uri= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
@label= IMAGE_3
@value= 3
>
#<MX::ChallengeImageOption
@data_uri= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
@label= IMAGE_4
@value= 4
>
]
@type= IMAGE_OPTIONS
>
]
>
Use this endpoint for information on what multi-factor authentication challenges need to be answered in order to aggregate a member
.
If the aggregation is not challenged, i.e., the member
does not have a connection status of CHALLENGED
, then code 204 No Content
will be returned.
If the aggregation has been challenged, i.e., the member
does have a connection status of CHALLENGED
, then code 200 OK
will be returned — along with the corresponding challenges.
Field Name | Data type | Description |
---|---|---|
field_name |
string | A non-unique identifier for the question. |
guid |
String | A unique identifier for the challenge, defined by MX. |
label |
String | A readable question that is presented to the user. |
type |
String | The type of challenge. Supported types include TEXT , OPTIONS , TOKEN , IMAGE_DATA , IMAGE_OPTIONS . |
image_data |
String | This field contains image data encoded as a base64 string. It will only be present when the challenge type is IMAGE_DATA . |
image_options |
Array | For challenge type IMAGE_OPTIONS , this field represents an array of choices. It will only be present when the challenge type is IMAGE_OPTIONS . |
options |
Array | For challenge type OPTIONS , this field represents an array of choices. It will only be present when the challenge type is OPTIONS . |
List member transactions
GET /users/{user_guid}/members/{member_guid}/transactions
Example of a URL with query parameters
GET https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/transactions?from_date=2016-09-20&to_date=2016-10-20
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/transactions' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ListMemberTransactionsExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var fromDate = "2016-09-20"; // string | Filter transactions from this date. (optional)
var toDate = "2016-10-20"; // string | Filter transactions to this date. (optional)
var page = 1; // int? | Specify current page. (optional)
var recordsPerPage = 12; // int? | Specify records per page. (optional)
try
{
// List member transactions
TransactionsResponseBody response = client.members.ListMemberTransactions(memberGuid, userGuid, fromDate, toDate, page, recordsPerPage);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ListMemberTransactions: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
"github.com/antihax/optional"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context.Background()
memberGUID := "MBR-123" // string | The unique identifier for a `member`.
userGUID := "USR-123" // string | The unique identifier for a `user`.
opts := &atrium.ListMemberTransactionsOpts{
FromDate: optional.NewString("2016-09-20"), // string | Filter transactions from this date.
ToDate: optional.NewString("2016-10-20"), // string | Filter transactions to this date.
Page: optional.NewInt32(1), // int32 | Specify current page.
RecordsPerPage: optional.NewInt32(12), // int32 | Specify records per page.
}
response, _, err := client.Members.ListMemberTransactions(ctx, memberGUID, userGUID, opts)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Response: %s\n", response)
}
}
import com.mx.atrium.*;
import com.mx.model.*;
public class MembersApiExample {
public static void main(String[] args) {
AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
String memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
String userGuid = "USR-123"; // String | The unique identifier for a `user`.
String fromDate = "2016-09-20"; // String | Filter transactions from this date.
String toDate = "2016-10-20"; // String | Filter transactions to this date.
Integer page = 1; // Integer | Specify current page.
Integer recordsPerPage = 12; // Integer | Specify records per page.
try {
TransactionsResponseBody response = client.members.listMemberTransactions(memberGuid, userGuid, fromDate, toDate, page, recordsPerPage);
System.out.println(response);
} catch (ApiException e) {
System.err.println("Exception when calling MembersApi#listMemberTransactions");
e.printStackTrace();
}
}
}
var atrium = require('./atrium.js');
var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
var fromDate = "2016-09-20"; // string | Filter transactions from this date. (optional)
var toDate = "2016-10-20"; // string | Filter transactions to this date. (optional)
var page = 1; // number | Specify current page. (optional)
var recordsPerPage = 12; // number | Specify records per page. (optional)
var response = client.members.listMemberTransactions(memberGuid, userGuid, fromDate, toDate, page, recordsPerPage);
response.then(function(value) {
console.log(value);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$client = new atrium\Api\AtriumClient(
"YOUR_API_KEY",
"YOUR_CLIENT_ID",
new GuzzleHttp\Client()
);
$member_guid = "MBR-123"; // string | The unique identifier for a `member`.
$user_guid = "USR-123"; // string | The unique identifier for a `user`.
$from_date = "2016-09-20"; // string | Filter transactions from this date.
$to_date = "2016-10-20"; // string | Filter transactions to this date.
$page = 1; // int | Specify current page.
$records_per_page = 12; // int | Specify records per page.
try {
$result = $client->members->listMemberTransactions($member_guid, $user_guid, $from_date, $to_date, $page, $records_per_page);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling MembersApi->listMemberTransactions: ', $e->getMessage(), PHP_EOL;
}
?>
from __future__ import print_function
import time
import atrium
from atrium.rest import ApiException
from pprint import pprint
# create an instance of the AtriumClient
client = atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # str | The unique identifier for a `member`.
user_guid = "USR-123" # str | The unique identifier for a `user`.
from_date = "2016-09-20" # str | Filter transactions from this date. (optional)
to_date = "2016-10-20" # str | Filter transactions to this date. (optional)
page = 1 # int | Specify current page. (optional)
records_per_page = 12 # int | Specify records per page. (optional)
try:
# List member transactions
response = client.members.list_member_transactions(member_guid, user_guid, from_date=from_date, to_date=to_date, page=page, records_per_page=records_per_page)
pprint(response)
except ApiException as e:
print("Exception when calling MembersApi->list_member_transactions: %s\n" % e)
# load the gem
require 'atrium-ruby'
client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
member_guid = "MBR-123" # String | The unique identifier for a `member`.
user_guid = "USR-123" # String | The unique identifier for a `user`.
opts = {
from_date: "2016-09-20", # String | Filter transactions from this date.
to_date: "2016-10-20" # String | Filter transactions to this date.
page: 1, # Integer | Specify current page.
records_per_page: 12, # Integer | Specify records per page.
}
begin
#List member transactions
response = client.members.list_member_transactions(member_guid, user_guid, opts)
p response
rescue Atrium::ApiError => e
puts "Exception when calling MembersApi->list_member_transactions: #{e}"
end
Example response
Status: 200 OK
{
"transactions": [
{
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 61.11,
"category": "Groceries",
"check_number": 15234,
"check_number_string": "00015234",
"created_at": "2016-10-06T09:43:42+00:00",
"currency_code": "USD",
"date": "2013-09-23",
"description": "Whole Foods",
"guid": "TRN-265abee9-889b-af6a-c69b-25157db2bdd9",
"is_bill_pay": false,
"is_direct_deposit": false,
"is_expense": true,
"is_fee": false,
"is_income": false,
"is_international": false,
"is_overdraft_fee": false,
"is_payroll_advance": false,
"latitude": -43.2075,
"longitude": 139.691706,
"member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"memo": null,
"merchant_category_code": 5411,
"original_description": "WHOLEFDS TSQ 102",
"posted_at": "2016-10-07T06:00:00+00:00",
"status": "POSTED",
"top_level_category": "Food & Dining",
"transacted_at": "2016-10-06T13:00:00+00:00",
"type": "DEBIT",
"updated_at": "2016-10-07T05:49:12+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}
class TransactionsResponseBody {
Transactions: [
class Transaction {
AccountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
Amount: 61.11
Category: Groceries
CheckNumber: 15234
CheckNumberString: 00015234
CreatedAt: 2016-10-06T09:43:42+00:00
CurrencyCode: USD
Date: 2013-09-23
Description: Whole foods
Guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
IsBillPay: false
IsDirectDeposit: false
IsExpense: true
IsFee: false
IsIncome: false
IsInternational: false
IsOverdraftFee: false
IsPayrollAdvance: false
Latitude: -43.2075
Longitude: 139.691706
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Memo:
MerchantCategoryCode: 5411
OriginalDescription: WHOLEFDS TSQ 102
PostedAt: 2016-10-07T06:00:00+00:00
Status: POSTED
TopLevelCategory: Food & Dining
TransactedAt: 2016-10-06T13:00:00+00:00
Type: DEBIT
UpdatedAt: 2016-10-07T05:49:12+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
class Pagination {
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
{
Transactions: [
{
AccountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
Amount: 61.11
Category: Groceries
CheckNumber: 15234
CheckNumberString: 00015234
CreatedAt: 2016-10-06T09:43:42+00:00
CurrencyCode: USD
Date: 2013-09-23
Description: Whole foods
Guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
IsBillPay: false
IsDirectDeposit: false
IsExpense: true
IsFee: false
IsIncome: false
IsInternational: false
IsOverdraftFee: false
IsPayrollAdvance: false
Latitude: -43.2075
Longitude: 139.691706
MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
Memo:
MerchantCategoryCode: 5411
OriginalDescription: WHOLEFDS TSQ 102
PostedAt: 2016-10-07T06:00:00+00:00
Status: POSTED
TopLevelCategory: Food & Dining
TransactedAt: 2016-10-06T13:00:00+00:00
Type: DEBIT
UpdatedAt: 2016-10-07T05:49:12+00:00
UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
Pagination:
{
CurrentPage: 1
PerPage: 25
TotalEntries: 1
TotalPages: 1
}
}
class TransactionsResponseBody {
transactions: [
class Transaction {
accountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
amount: 61.11
category: Groceries
checkNumber: 15234
checkNumberString: 00015234
createdAt: 2016-10-06T09:43:42+00:00
currencyCode: USD
date: 2013-09-23
description: Whole foods
guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
isBillPay: false
isDirectDeposit: false
isExpense: true
isFee: false
isIncome: false
isInternational: false
isOverdraftFee: false
isPayrollAdvance: false
latitude: -43.2075
longitude: 139.691706
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
memo:
merchantCategoryCode: 5411
originalDescription: WHOLEFDS TSQ 102
postedAt: 2016-10-07T06:00:00+00:00
status: POSTED
topLevelCategory: Food & Dining
transactedAt: 2016-10-06T13:00:00+00:00
type: DEBIT
updatedAt: 2016-10-07T05:49:12+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
class Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
TransactionsResponseBody {
transactions: [
Transaction {
accountGuid: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
amount: 61.11
category: Groceries
checkNumber: 15234
checkNumberString: 00015234
createdAt: 2016-10-06T09:43:42+00:00
currencyCode: USD
date: 2013-09-23
description: Whole foods
guid: TRN-265abee9-889b-af6a-c69b-25157db2bdd9
isBillPay: false
isDirectDeposit: false
isExpense: true
isFee: false
isIncome: false
isInternational: false
isOverdraftFee: false
isPayrollAdvance: false
latitude: -43.2075
longitude: 139.691706
memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
memo:
merchantCategoryCode: 5411
originalDescription: WHOLEFDS TSQ 102
postedAt: 2016-10-07T06:00:00+00:00
status: POSTED
topLevelCategory: Food & Dining
transactedAt: 2016-10-06T13:00:00+00:00
type: DEBIT
updatedAt: 2016-10-07T05:49:12+00:00
userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
pagination:
Pagination {
currentPage: 1
perPage: 25
totalEntries: 1
totalPages: 1
}
}
atrium/model/TransactionsResponseBody Object (
[transactions] => Array (
atrium/model/Transaction Object (
[account_guid] => ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
[amount] => 61.11
[category] => Groceries
[check_number] => 15234
[check_number_string] => 00015234
[created_at] => 2016-10-06T09:43:42+00:00
[currency_code] => USD
[date] => 2013-09-23
[description] => Whole foods
[guid] => TRN-265abee9-889b-af6a-c69b-25157db2bdd9
[is_bill_pay] => false
[is_direct_deposit] => false
[is_expense] => true
[is_fee] => false
[is_income] => false
[is_international] => false
[is_overdraft_fee] => false
[is_payroll_advance] => false
[latitude] => -43.2075
[longitude] => 139.691706
[member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
[memo] =>
[merchant_category_code] => 5411
[original_description] => WHOLEFDS TSQ 102
[posted_at] => 2016-10-07T06:00:00+00:00
[status] => POSTED
[top_level_category] => Food & Dining
[transacted_at] => 2016-10-06T13:00:00+00:00
[type] => DEBIT
[updated_at] => 2016-10-07T05:49:12+00:00
[user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
)
)
[pagination] =>
atrium/model/Pagination Object (
[current_page] => 1
[per_page] => 25
[total_entries] => 1
[total_pages] => 1
)
)
{
'transactions': [
{
'account_guid': ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
'amount': 61.11
'category': Groceries
'check_number': 15234
'check_number_string': 00015234
'created_at': 2016-10-06T09:43:42+00:00
'currency_code': USD
'date': 2013-09-23
'description': Whole foods
'guid': TRN-265abee9-889b-af6a-c69b-25157db2bdd9
'is_bill_pay': false
'is_direct_deposit': false
'is_expense': true
'is_fee': false
'is_income': false
'is_international': false
'is_overdraft_fee': false
'is_payroll_advance': false
'latitude': -43.2075
'longitude': 139.691706
'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
'memo':
'merchant_category_code': 5411
'original_description': WHOLEFDS TSQ 102
'posted_at': 2016-10-07T06:00:00+00:00
'status': POSTED
'top_level_category': Food & Dining
'transacted_at': 2016-10-06T13:00:00+00:00
'type': DEBIT
'updated_at': 2016-10-07T05:49:12+00:00
'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
}
]
'pagination':
{
'current_page': 1
'per_page': 25
'total_entries': 1
'total_pages': 1
}
}
#<MX::TransactionsResponseBody
@transactions= [
#<MX::Transaction
@account_guid= ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
@amount= 61.11
@category= Groceries
@check_number= 15234
@check_number_string= 00015234
@created_at= 2016-10-06T09:43:42+00:00
@currency_code= USD
@date= 2013-09-23
@description= Whole foods
@guid= TRN-265abee9-889b-af6a-c69b-25157db2bdd9
@is_bill_pay= false
@is_direct_deposit= false
@is_expense= true
@is_fee= false
@is_income= false
@is_international= false
@is_overdraft_fee= false
@is_payroll_advance= false
@latitude= -43.2075
@longitude= 139.691706
@member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
@memo=
@merchant_category_code= 5411
@original_description= WHOLEFDS TSQ 102
@posted_at= 2016-10-07T06:00:00+00:00
@status= POSTED
@top_level_category= Food & Dining
@transacted_at= 2016-10-06T13:00:00+00:00
@type= DEBIT
@updated_at= 2016-10-07T05:49:12+00:00
@user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
>
]
@pagination=
#<MX::Pagination
@current_page= 1
@per_page= 25
@total_entries= 1
@total_pages= 1
>
>
Use this endpoint to get all transactions from all accounts associated with a specific member.
The from_date
and to_date
parameters can optionally be appended to the request if transactions in a specific date range are required.
Query string parameters
Field name | Required | Data type | Description |
---|---|---|---|
from_date |
No | String | Return transactions occurring within a date range starting on this day. If not set, this defaults to 90 days prior to the day of the request. Must be in ISO 8601 format without a time component. |
to_date |
No | String | Return transactions occurring in a date range ending on this day. If not set, this defaults to 5 days forward from the day of the request so as to capture pending transactions. Must be in ISO 8601 format without a time component. |
Read member
GET /users/{user_guid}/members/{member_guid}
Example request
$ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}' \
-H 'Accept: application/vnd.mx.atrium.v1+json' \
-H 'MX-API-Key: {mx_api_key}' \
-H 'MX-Client-ID: {mx_client_id}'
using System;
using Atrium.Api;
using Atrium.Model;
namespace Example
{
public class ReadMemberExample
{
public void main()
{
var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
var memberGuid = "MBR-123"; // string | The unique identifier for a `member`.
var userGuid = "USR-123"; // string | The unique identifier for a `user`.
try
{
// Read member
MemberResponseBody response = client.members.ReadMember(memberGuid, userGuid);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine("Exception when calling MembersApi.ReadMember: " + e.Message );
}
}
}
}
package main
import (
"context"
"fmt"
"github.com/mxenabled/atrium-go"
)
func main() {
client := atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID")
ctx := context