NAV Navbar
cURL C# Go Java Node PHP Python Ruby
  • Introduction
  • Getting started
  • Things you need to know
  • Accounts
  • Holdings
  • Institutions
  • Members
  • Merchants
  • MX Connect widget
  • Transactions
  • Users
  • Webhooks
  • Premium features
  • Changelog
  • MX Atrium API
    Technical Reference

    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

    A detailed guide to getting started with Atrium is available here. It covers some of the most common questions and scenarios you'll run into when getting up and running, offers step-buy-step guides for testing, provides downloadable resources, and offers workflow examples and explanations.

    Wrapper libraries

    To help you get started with Atrium, we've provided wrapper libraries in several languages. Visit the appropriate GitHub page below.

    C#

    Go

    Java

    Node

    PHP

    Python

    Ruby

    Things you need to know

    Standards and conventions

    Thing Description
    API architecture 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.
    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.
    Security Atrium API requests must be HTTPS with encryption TLSv1.2 or higher or else they will fail.
    Authentication All requests to Atrium are authenticated with tokens: MX-API-Key and MX-Client-ID. The production and development environments require separate tokens. Development tokens are granted automatically during the signup process, and are available in 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.
    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.
    Data formats By default, JSON structured data is returned in responses, including some errors.
    Character encoding Requests and responses to Atrium must use characters encoded with the UTF-8 standard.
    Dates and times Dates and times follow ISO 8601 format. E.g., 2015-04-13T12:01:23-06:00.
    Percentages Percentages are in decimal format without the percentage sign. E.g., 2.99% is written 2.99.
    Numbers 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. E.g., 538.46's precision,scale is 5,2.
    Pagination All endpoints which return lists are paginated with defaults of page=1 and records_per_page=25. You may override these defaults with URL query parameters. The records_per_page parameter supports any integer within the range 10-1000.
    Limits The development environment limits developers to 100 users and access to the top 15 institutions.

    No user may have more than 25 members, regardless of the environment.

    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.

    Resource structure

    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.

    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.

    Background Aggregation

    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 in the foreground via the aggregate member endpoint to get the most up-to-date information on accounts and transactions.

    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.

    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.

    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

    Account types and subtypes

    ANY
      (Either the type was not provided by the data partner
      or the value provided was invalid.)
    CHECKING
    SAVINGS
      MONEY_MARKET
      CERTIFICATE_OF_DEPOSIT
    LOAN
      AUTO
      STUDENT
      SMALL_BUSINESS
      PERSONAL
      PERSONAL_WITH_COLLATERAL
      HOME_EQUITY
      BOAT
      POWERSPORTS
      RV
    CREDIT_CARD
    INVESTMENT
      PLAN_401_K
      PLAN_403_B
      PLAN_529
      IRA
      ROLLOVER_IRA
      ROTH_IRA
      TAXABLE
      NON_TAXABLE
      BROKERAGE
      TRUST
      UNIFORM_GIFTS_TO_MINORS_ACT
      PLAN_457
      PENSION
      EMPLOYEE_STOCK_OWNERSHIP_PLAN
      SIMPLIFIED_EMPLOYEE_PENSION
      SIMPLE_IRA
    LINE_OF_CREDIT
    MORTGAGE
    PROPERTY
    CASH
    INSURANCE
    PREPAID
    

    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
    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.
    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 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.
    last_payment_at String The date and time the last payment toward a debt account was applied.
    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.
    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.
    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.

    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": [
        {
          "apr": 1.0,
          "apy": 1.0,
          "available_balance": 1000.0,
          "available_credit": 100,
          "balance": 1000.0,
          "cash_balance": 1000.0,
          "cash_surrender_value": 1000.0,
          "created_at": "2016-10-13T17:57:37+00:00",
          "credit_limit": 100,
          "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": 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,
          "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 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
        >
    >
    

    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.40,
          "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",
          "merchant_guid": "MCH-7ed79542-884d-2b1b-dd74-501c5cc9d25b",
          "memo": null,
          "merchant_category_code": 5411,
          "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"
        }
      ]
    }
    
    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 default from_date is 90 days prior to the request, and the default to_date is 5 days from the time of the request.

    The from_date and to_date parameters can optionally be appended to the request.

    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}'
    
    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");
    
    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")
    
    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

    Status: 200 OK
    
    {
      "account": {
        "apr": 1.0,
        "apy": 1.0,
        "available_balance": 1000.0,
        "available_credit": 100,
        "balance": 1000.0,
        "cash_balance": 1000.0,
        "cash_surrender_value": 1000.0,
        "created_at": "2016-10-13T17:57:37+00:00",
        "credit_limit": 100,
        "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": 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,
        "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 {
          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
        }
    }
    
    {
      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
        }
    }
    
    class AccountResponseBody {
      account:
        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
        }
    }
    
    AccountResponseBody {
      account:
        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
        }
    }
    
    atrium/model/AccountResponseBody Object (
      [account] =>
        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
        )
    )
    
    {
      '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
        }
    }
    
    #<MX::AccountResponseBody
      @account=
        #<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
        >
    >
    

    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"
        }  
      ]
    }
    
    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

    shell 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"
        }  
      ]
    }
    
    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"
        }  
      ]
    }
    
    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"
        }
      ]
    }
    
    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.
    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."
    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 '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,
        "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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          [metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
          [name] => Chase Bank
          [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
          'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
          'name': Chase Bank
          '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
          @metadata= {"credentials_last_refreshed_at": "2015-10-15"}
          @name= Chase Bank
          @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

    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,
        "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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          [metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
          [name] => Chase Bank
          [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
          'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
          'name': Chase Bank
          '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
          @metadata= {"credentials_last_refreshed_at": "2015-10-15"}
          @name= Chase Bank
          @status= COMPLETED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
          @user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
        >
    >
    

    This endpoint allows you to create a new member. Members are created with the required parameters credentials and institution_code, and the optional parameters identifier and metadata.

    When creating a 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 /institutions/{institution_code}/credentials endpoint.

    If successful, Atrium will respond with the newly-created member object.

    Once you successfully create a member, MX will immediately validate the provided credentials and attempt to aggregate data for accounts and transactions. You can prevent this automatic aggregation attempt by setting the optional skip_aggregation parameter to true in the request body.

    Parameter Data type Description Required?
    credentials Array The credentials endpoint for the requested institution will give you a list of all the credentials required to create a member for a given institution. Each required credential will need to be included within this array. Yes
    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

    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.

    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,
          "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 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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          [metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
          [name] => Chase Bank
          [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
          'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
          'name': Chase Bank
          '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
          @metadata= {"credentials_last_refreshed_at": "2015-10-15"}
          @name= Chase Bank
          @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.
    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.

    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.0,
          "apy": 1.0,
          "available_balance": 1000.0,
          "available_credit": 100,
          "balance": 1000.0,
          "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"
        }
      ]
    }
    
    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"
        }
      ]
    }
    
    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.

    This endpoint accepts optional URL query parameters — from_date and to_date — which are used to filter transactions according to the date they were posted. If no values are given for the query parameters, from_date will default to 90 days prior to the request and to_date will default to 5 days from the time of the request.

    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.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.ReadMember(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.readMember(memberGuid, userGuid);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling MembersApi#readMember");
                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.readMember(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->readMember($member_guid, $user_guid);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling MembersApi->readMember: ', $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:
        # Read member
        response = client.members.read_member(member_guid, user_guid)
        pprint(response)
    except ApiException as e:
        print("Exception when calling MembersApi->read_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
      #Read member
      response = client.members.read_member(member_guid, user_guid)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling MembersApi->read_member: #{e}"
    end
    

    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",
        "status": "COMPLETED",
        "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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          Metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          Name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          metadata: {"credentials_last_refreshed_at": "2015-10-15"}
          name: Chase Bank
          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
          [metadata] => {"credentials_last_refreshed_at": "2015-10-15"}
          [name] => Chase Bank
          [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
          'metadata': {"credentials_last_refreshed_at": "2015-10-15"}
          'name': Chase Bank
          '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
          @metadata= {"credentials_last_refreshed_at": "2015-10-15"}
          @name= Chase Bank
          @status= COMPLETED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
          @user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
        >
    >
    

    Use this endpoint to read the attributes of a specific member.

    Read member connection status

    GET /users/{user_guid}/members/{member_guid}/status
    

    Example request

    $ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/status' \
      -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 ReadMemberStatusExample
        {
            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 connection status
                    MemberConnectionStatusResponseBody response = client.members.ReadMemberStatus(memberGuid, userGuid);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling MembersApi.ReadMemberStatus: " + 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.ReadMemberStatus(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 {
                MemberConnectionStatusResponseBody response = client.members.readMemberStatus(memberGuid, userGuid);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling MembersApi#readMemberStatus");
                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.readMemberStatus(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->readMemberStatus($member_guid, $user_guid);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling MembersApi->readMemberStatus: ', $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:
        # Read member connection status
        response = client.members.read_member_status(member_guid, user_guid)
        pprint(response)
    except ApiException as e:
        print("Exception when calling MembersApi->read_member_status: %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
      #Read member connection status
      response = client.members.read_member_status(member_guid, user_guid)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling MembersApi->read_member_status: #{e}"
    end
    

    Example response

    Status: 200 OK
    
    {
      "member": {
        "aggregated_at": "2019-06-08T17:21:05Z",
        "connection_status": "CONNECTED",
        "guid": "MBR-a4652b66-3ee5-cb9f-295a-72eddef61db5",
        "has_processed_accounts": true,
        "has_processed_transactions": true,
        "is_authenticated": true,
        "is_being_aggregated": false,
        "status": "COMPLETED",
        "successfully_aggregated_at": "2019-06-07T21:16:03Z"
      }
    }
    
    class MemberConnectionStatusResponseBody {
      Member:
        class MemberConnectionStatus {
          AggregatedAt: 2016-10-13T18:07:57+00:00
          ConnectionStatus: CONNECTED
          Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          HasProcessedAccounts: true
          HasProcessedTransactions: false
          IsAuthenticated: true
          IsBeingAggregated: false
          Status: COMPLETED
          SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    {
      Member:
        {
          AggregatedAt: 2016-10-13T18:07:57+00:00
          ConnectionStatus: CONNECTED
          Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          HasProcessedAccounts: true
          HasProcessedTransactions: false
          IsAuthenticated: true
          IsBeingAggregated: false
          Status: COMPLETED
          SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    class MemberConnectionStatusResponseBody {
      member:
        class MemberConnectionStatus {
          aggregatedAt: 2016-10-13T18:07:57+00:00
          connectionStatus: CONNECTED
          guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          hasProcessedAccounts: true
          hasProcessedTransactions: false
          isAuthenticated: true
          isBeingAggregated: false
          status: COMPLETED
          successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    MemberConnectionStatusResponseBody {
      member:
        MemberConnectionStatus {
          aggregatedAt: 2016-10-13T18:07:57+00:00
          connectionStatus: CONNECTED
          guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          hasProcessedAccounts: true
          hasProcessedTransactions: false
          isAuthenticated: true
          isBeingAggregated: false
          status: COMPLETED
          successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    atrium/model/MemberConnectionStatusResponseBody Object (
      [member] =>
        atrium/model/MemberConnectionStatus Object (
          [aggregated_at] => 2016-10-13T18:07:57+00:00
          [connection_status] => CONNECTED
          [guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          [has_processed_accounts] => true
          [has_processed_transactions] => false
          [is_authenticated] => true
          [is_being_aggregated] => false
          [status] => COMPLETED
          [successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
        )
    )
    
    {
      'member':
        {
          'aggregated_at': 2016-10-13T18:07:57+00:00
          'connection_status': CONNECTED
          'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          'has_processed_accounts': true
          'has_processed_transactions': false
          'is_authenticated': true
          'is_being_aggregated': false
          'status': COMPLETED
          'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
        }
    }
    
    #<MX::MemberConnectionStatusResponseBody
      @member=
        #<MX::MemberConnectionStatus
          @aggregated_at= 2016-10-13T18:07:57+00:00
          @connection_status= CONNECTED
          @guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          @has_processed_accounts= true
          @has_processed_transactions= false
          @is_authenticated= true
          @is_being_aggregated= false
          @status= COMPLETED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
        >
    >
    

    Example response for status CHALLENGED

    Status: 200 OK
    
    {
      "member": {
        "aggregated_at": "2016-10-13T18:24:37+00:00",
        "challenges": [
          {
            "field_name": null,
            "guid": "CRD-1ec152cd-e628-e81a-e852-d1e7104624da",
            "label": "What city were you born in?",
            "type": "TEXT"
          }
        ],
        "connection_status": "CHALLENGED",
        "guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
        "has_processed_accounts": false,
        "has_processed_transactions": false,
        "is_authenticated": false,
        "is_being_aggregated": true,
        "status": "CHALLENGED",
        "successfully_aggregated_at": "2016-10-13T18:08:04+00:00"
      }
    }
    
    class MemberConnectionStatusResponseBody {
      Member:
        class MemberConnectionStatus {
          AggregatedAt: 2016-10-13T18:07:57+00:00
          Challenges: [
            class Challenge {
              FieldName: Who is this guy?
              Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              ImageData: Who is this guy?
              Label: Who is this guy?
              Options: [
                class ChallengeOption {
                  ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  Label: IMAGE_1
                  Value: image_data
                }
              ]
              Type: IMAGE_DATA
            }
          ]
          ConnectionStatus: CHALLENGED
          Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          HasProcessedAccounts: false
          HasProcessedTransactions: false
          IsAuthenticated: true
          IsBeingAggregated: false
          Status: COMPLETED
          SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    {
      Member:
        {
          AggregatedAt: 2016-10-13T18:07:57+00:00
          Challenges: [
            {
              FieldName: Who is this guy?
              Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              ImageData: Who is this guy?
              Label: Who is this guy?
              Options: [
                {
                  ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  Label: IMAGE_1
                  Value: image_data
                }
              ]
              Type: IMAGE_DATA
            }
          ]
          ConnectionStatus: CHALLENGED
          Guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          HasProcessedAccounts: false
          HasProcessedTransactions: false
          IsAuthenticated: true
          IsBeingAggregated: false
          Status: COMPLETED
          SuccessfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    class MemberConnectionStatusResponseBody {
      member:
        class MemberConnectionStatus {
          aggregatedAt: 2016-10-13T18:07:57+00:00
          challenges: [
            class Challenge {
              fieldName: Who is this guy?
              guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              imageData: Who is this guy?
              label: Who is this guy?
              options: [
                class ChallengeOption {
                  imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  label: IMAGE_1
                  value: image_data
                }
              ]
              type: IMAGE_DATA
            }
          ]
          connectionStatus: CHALLENGED
          guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          hasProcessedAccounts: false
          hasProcessedTransactions: false
          isAuthenticated: true
          isBeingAggregated: false
          status: COMPLETED
          successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    MemberConnectionStatusResponseBody {
      member:
        MemberConnectionStatus {
          aggregatedAt: 2016-10-13T18:07:57+00:00
          challenges: [
            Challenge {
              fieldName: Who is this guy?
              guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              imageData: Who is this guy?
              label: Who is this guy?
              options: [
                ChallengeOption {
                  imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  label: IMAGE_1
                  value: image_data
                }
              ]
              type: IMAGE_DATA
            }
          ]
          connectionStatus: CHALLENGED
          guid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          hasProcessedAccounts: false
          hasProcessedTransactions: false
          isAuthenticated: true
          isBeingAggregated: false
          status: COMPLETED
          successfullyAggregatedAt: 2016-10-13T17:57:38+00:00
        }
    }
    
    atrium/model/MemberConnectionStatusResponseBody Object (
      [member] =>
        atrium/model/MemberConnectionStatus Object (
          [aggregated_at] => 2016-10-13T18:07:57+00:00
          [challenges] => Array (
            atrium/model/Challenge Object (
              [field_name] => Who is this guy?
              [guid] => CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              [image_data] => Who is this guy?
              [label] => Who is this guy?
              [options] => Array (
                atrium/model/ChallengeOption Object (
                  [image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  [label] => IMAGE_1
                  [value] => image_data
                )
              )
              [type] => IMAGE_DATA
            )
          )
          [connection_status] => CHALLENGED
          [guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          [has_processed_accounts] => false
          [has_processed_transactions] => false
          [is_authenticated] => true
          [is_being_aggregated] => false
          [status] => COMPLETED
          [successfully_aggregated_at] => 2016-10-13T17:57:38+00:00
        )
    )
    
    {
      'member':
        {
          'aggregated_at': 2016-10-13T18:07:57+00:00
          'challenges': [
            {
              'field_name': Who is this guy?
              'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              'image_data': Who is this guy?
              'label': Who is this guy?
              'options': [
                {
                  'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  'label': IMAGE_1
                  'value': image_data
                }
              ]
              'type': IMAGE_DATA
            }
          ]
          'connection_status': CHALLENGED
          'guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          'has_processed_accounts': false
          'has_processed_transactions': false
          'is_authenticated': true
          'is_being_aggregated': false
          'status': COMPLETED
          'successfully_aggregated_at': 2016-10-13T17:57:38+00:00
        }
    }
    
    #<MX::MemberConnectionStatusResponseBody
      @member=
        #<MX::MemberConnectionStatus
          @aggregated_at= 2016-10-13T18:07:57+00:00
          @challenges= [
            #<MX::Challenge
              @field_name= Who is this guy?
              @guid= CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
              @image_data= Who is this guy?
              @label= Who is this guy?
              @options= [
                #<MX::ChallengeOption
                  @image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
                  @label= IMAGE_1
                  @value= image_data
                >
              ]
              @type= IMAGE_DATA
            >
          ]
          @connection_status= CHALLENGED
          @guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          @has_processed_accounts= false
          @has_processed_transactions= false
          @is_authenticated= true
          @is_being_aggregated= false
          @status= COMPLETED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
        >
    >
    

    This endpoint provides the status of the member's most recent aggregation-type event. This is an important step in the aggregation process (as well as identification, verification, etc.), and the results returned by this endpoint should determine what you do next in order to successfully aggregate a member.

    MX has introduced new, more detailed information on the current status of a member's connection to a financial institution and the state of its aggregation: the connection_status field. These are intended to replace and expand upon the information provided in the status field, which will soon be deprecated; support for the status field remains for the time being.

    Member connection statuses should be used in conjunction with all the fields described below. For instance, when is_being_aggregated switches from true to false and the value of connection_status is CONNECTED, you can stop polling the status and list the member's transactions or list the transactions for a specific account.

    The response for this endpoint is not the same as the read member endpoint; this endpoint returns fields which are specifically focused on the state of the member's aggregation, as well as including MFA challenges when the connection_status is CHALLENGED.

    MX recommends a minimum polling interval of 3 seconds when using this endpoint.

    Read member connection status fields

    Field Data type Description
    aggregated_at String The date and time the account was last aggregated.
    challenges Array An array containing MFA challenges that have been issued. challenges will only be present when the connection_status is CHALLENGED.
    connection_status String The status of a member's aggregation. Read more about these statuses here.
    guid String A unique identifier for the member. Defined by MX.
    has_processed_accounts Boolean true when accounts have been processed for a member, false otherwise. Resets each time /aggregate is called.
    has_processed_transactions Boolean true when transactions have been processed for a member, false otherwise. Resets each time /aggregate is called.
    is_authenticated Boolean If the member’s credentials were authenticated during the most recent aggregation, this field will be true. Otherwise, this field will be false. Resets to false each time /aggregate is called. This field does not indicate that an aggregation is completed — only that the credentials used were good; MFA or other connection problems may occur while this value is true.
    is_being_aggregated Boolean This value is true if the member is being aggregated at the time of the request and false otherwise.
    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.

    Connection status definitions

    Connection status id (integer) Connection status (string) Definition Next steps End-user message
    null null The member exists but does not have credentials. None. None.
    0 CREATED The member is new and has not yet been aggregated. Aggregate the member once the end user logs in; poll for a status update. Connecting to {...} ...
    1 PREVENTED MX is preventing aggregation until the member’s credentials have been updated. Display end-user message; after end user has updated their credentials, aggregate again. The last 3 attempts to connect have failed. Please re-enter your credentials to continue importing data.
    2 DENIED The credentials provided for the member were invalid. Display end-user message; after end user has updated their credentials, aggregate again. The credentials entered do not match your credentials at this institution. Please re-enter your credentials to continue importing data.
    3 CHALLENGED The member has been challenged by multi-factor authentication. Display end-user message; follow MFA pathway; after the user answers MFA, poll for a status update. To authenticate your connection to {...}, please answer the following challenge(s).
    4 REJECTED An MFA challenge was answered incorrectly. Display end-user message; another challenge may follow or aggregation may need to be restarted. The answer or answers provided were incorrect. Please try again.
    5 LOCKED The financial institution is preventing authentication. The end user must contact the financial institution. Display end-user message. Your account is locked. Please log in to the appropriate website for {...} and follow the steps to resolve the issue.
    6 CONNECTED The member was successfully authenticated and data is now aggregating. Display the account as having been connected. Connected to [...] ...
    7 IMPEDED The end user’s attention is required at their online banking institution, e.g., there is a marketing message that must be viewed, terms and conditions that must be accepted, etc. Display end-user message. Your attention is needed at this institution's website. Please log in to the appropriate website for {...} and follow the steps to resolve the issue.
    8 RECONNECTED The member has been migrated to a new