NAV Navbar
cURL C# Go Java Node PHP Python Ruby
  • Verification overview
  • Create a user
  • Get the institution code
  • Get the institution's required credentials using the institution code
  • Create a member using institution code and required credentials
  • Poll the connection_status
  • Answer MFA, if necessary
  • Read account numbers
  • Verify a member
  • Testing Verification
  • Changelog
  • Atrium Verification Guide

    Verification overview

    MX's account verification is offered in the context of the Atrium API and relies on the resources of that RESTful API to function properly. Specifically, this means following the general workflow below:

    1. Creating a user;
    2. Creating a member using the correct institution code and credentials required by that institution (a member aggregates automatically when it is created);
    3. Polling the member's connection_status and answering MFA if necessary;
    4. Reading the member's account_numbers (you may begin with this step for members that already exist);
    5. Calling the verify endpoint, if needed;
    6. Repeating steps 3 and 4.

    One reason for this workflow is that account and routing information is sometimes available through normal aggregation; in these cases, there would be no need to incur the cost of calling the verify endpoint.

    For important information on errors, standards and conventions, and resource structure in Atrium, please see our technical reference page.

    Create a user

    Endpoint: POST /users

    Example 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": {
              "identifier": "unique_id",
              "metadata": "{\"first_name\": \"Steven\"}"
            }
          }'
    
    using System;
    using Atrium.Api;
    using Atrium.Model;
    
    namespace Example
    {
        public class CreateUserExample
        {
            public void main()
            {
                var client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
    
                var body = new UserCreateRequestBody(); // UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
                try
                {
                    // Create user
                    UserResponseBody response = client.users.CreateUser(body);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling UsersApi.CreateUser: " + 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()
    
      body := atrium.UserCreateRequestBody{} // UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
      response, _, err := client.Users.CreateUser(ctx, 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 UsersApiExample {
        public static void main(String[] args) {
            AtriumClient client = new AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
    
            UserCreateRequestBody body = new UserCreateRequestBody(); // UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
            try {
                UserResponseBody response = client.users.createUser(body);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling UsersApi#createUser");
                e.printStackTrace();
            }
        }
    }
    
    var atrium = require('./atrium.js');
    
    var client = new atrium.AtriumClient("YOUR_API_KEY", "YOUR_CLIENT_ID");
    
    var body = new atrium.UserCreateRequestBody(); // UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
    var response = client.users.createUser(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()
    );
    
    $body = new \atrium\model\UserCreateRequestBody(); // \atrium\model\UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
    try {
        $result = $client->users->createUser($body);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling UsersApi->createUser: ', $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")
    
    body = atrium.UserCreateRequestBody() # UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
    try:
        # Create user
        response = client.users.create_user(body)
        pprint(response)
    except ApiException as e:
        print("Exception when calling UsersApi->create_user: %s\n" % e)
    
    # load the gem
    require 'atrium-ruby'
    
    client = Atrium::AtriumClient.new("YOUR_API_KEY", "YOUR_CLIENT_ID")
    
    body = Atrium::UserCreateRequestBody.new # UserCreateRequestBody | User object to be created with optional parameters (identifier, is_disabled, metadata)
    
    begin
      #Create user
      response = client.users.create_user(body)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling UsersApi->create_user: #{e}"
    end
    

    Example response

    Status: 200 OK
    
    {
      "user": {
        "guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
        "identifier": "unique_id",
        "is_disabled": false,
        "metadata": "{\"first_name\": \"Steven\"}"
      }
    }
    
    class UserResponseBody {
      User:
        class User {
          Guid: USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          Identifier: My-Unique-ID
          IsDisabled: false
          Metadata: {"first_name": "Steven", "last_name": "Universe"}
        }
    }
    
    {
      User:
        {
          Guid: USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          Identifier: My-Unique-ID
          IsDisabled: false
          Metadata: {"first_name": "Steven", "last_name": "Universe"}
        }
    }
    
    class UserResponseBody {
      user:
        class User {
          guid: USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          identifier: My-Unique-ID
          isDisabled: false
          metadata: {"first_name": "Steven", "last_name": "Universe"}
        }
    }
    
    UserResponseBody {
      user:
        User {
          guid: USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          identifier: My-Unique-ID
          isDisabled: false
          metadata: {"first_name": "Steven", "last_name": "Universe"}
        }
    }
    
    atrium/model/UserResponseBody Object (
      [user] =>
        atrium/model/User Object (
          [guid] => USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          [identifier] => My-Unique-ID
          [is_disabled] => false
          [metadata] => {"first_name": "Steven", "last_name": "Universe"}
        )
    )
    
    {
      'user':
        {
          'guid': USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          'identifier': My-Unique-ID
          'is_disabled': false
          'metadata': {"first_name": "Steven", "last_name": "Universe"}
        }
    }
    
    #<MX::UserResponseBody
      @user=
        #<MX::User
          @guid= USR-d74cb14f-fd0a-449f-991b-e0362a63d9c6
          @identifier= My-Unique-ID
          @is_disabled= false
          @metadata= {"first_name": "Steven", "last_name": "Universe"}
        >
    >
    

    For further details on users, click here.

    Get the institution code

    Endpoint: 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)
    
                try
                {
                    // List institutions
                    InstitutionsResponseBody response = client.institutions.ListInstitutions(name, page, recordsPerPage);
                    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.
      }
    
      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.
    
            try {
                InstitutionsResponseBody response = client.institutions.listInstitutions(name, page, recordsPerPage);
                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 response = client.institutions.listInstitutions(name, 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()
    );
    
    $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.
    
    try {
        $result = $client->institutions->listInstitutions($name, $page, $records_per_page);
        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)
    
    try:
        # List institutions
        response = client.institutions.list_institutions(name=name, page=page, records_per_page=records_per_page)
        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.
    }
    
    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

    Status: 200 OK
    
    {
      "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_verification": 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
          SupportsAccountVerification: 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
          SupportsAccountVerification: 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
          supportsAccountVerification: 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
          supportsAccountVerification: 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_verification] => 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_verification': 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_verification= true
          @url= https://www.chase.com
        >  
      ]
      @pagination=
        #<MX::Pagination
          @current_page= 1
          @per_page= 25
          @total_entries= 1
          @total_pages= 1
        >
    >
    

    Only certain institutions support verification. To get a list of all institutions which support verification, append the following query string to your request URL: supports_account_verification=true.

    For further details on institutions, click here.

    Get the institution's required credentials using the institution code

    Endpoint: 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

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

    Create a member using institution code and required credentials

    Endpoint: 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
        >
    >
    

    Creating a member automatically starts aggregation unless the skip_aggregation parameter is set to true in the request body. On already-existing members for which standard aggregation did not return account information, you can use the verify endpoint described below.

    For further details on members, click here

    Poll the connection_status

    Endpoint: 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

    {
      "member": {
          "aggregated_at": "2016-10-13T18:07:57+00:00",
          "connection_status": "CONNECTED",
          "status": "COMPLETED",
          "successfully_aggregated_at": "2016-10-13T17:57:38+00:00",
          "guid": "MBR-a4652b66-3ee5-cb9f-295a-72eddef61db5",
          "has_processed_accounts": true,
          "has_processed_transactions": true,
          "is_being_aggregated": false
      }
    }
    
    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
          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
          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
          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
          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_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_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_being_aggregated= false
          @status= COMPLETED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
        >
    >
    

    Example of challenges field when connection_status is CHALLENGED

    "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 for challenge type IMAGE_DATA

    
      "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 for challenge type OPTIONS

      "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 for challenge type IMAGE_OPTIONS

      "challenges": [
        {
          "field_name": "Choose your image",
          "guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
          "label": "Which is your image?",
          "type": "IMAGE_OPTIONS",
          "options": [
            {
              "label": "IMAGE_1",
              "image_data": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
            },
            {
              "label": "IMAGE_2",
              "image_data": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
            },
            {
              "label": "IMAGE_3",
              "image_data": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
            },
            {
              "label": "IMAGE_4",
              "image_data": "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?
          Options: [
            class ChallengeOption {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_1
            }   
            class ChallengeOption {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_2
            }    
            class ChallengeOption {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_3
            }    
            class ChallengeOption {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_4
            }       
          ]
          Type: IMAGE_OPTIONS
        }  
      ]
    }
    
    {
      Challenges: [
        {
          FieldName: Choose your image
          Guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
          Label: Which is your image?
          Options: [
            {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_1
            }   
            {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_2
            }   
            {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_3
            }   
            {
              ImageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              Label: IMAGE_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?
          options: [
            class ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_1
            }      
            class ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_2
            }      
            class ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_3
            }      
            class ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_4
            }      
          ]
          type: IMAGE_OPTIONS
        }  
      ]
    }
    
    ChallengesResponseBody {
      challenges: [
        Challenge {
          fieldName: Choose your image
          guid: CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
          label: Which is your image?
          options: [
            ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_1
            }      
            ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_2
            }     
            ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_3
            }     
            ChallengeOption {
              imageData: data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              label: IMAGE_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?
          [options] => Array (
            atrium/model/ChallengeOption Object (
              [image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              [label] => IMAGE_1
            )      
            atrium/model/ChallengeOption Object (
              [image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              [label] => IMAGE_2
            )    
            atrium/model/ChallengeOption Object (
              [image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              [label] => IMAGE_3
            )    
            atrium/model/ChallengeOption Object (
              [image_data] => data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              [label] => IMAGE_4
            )    
          )
          [type] => IMAGE_OPTIONS
        )  
      )
    )
    
    {
      'challenges': [
        {
          'field_name': Choose your image
          'guid': CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5
          'label': Which is your image?
          'options': [
            {
              'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              'label': IMAGE_1
            }      
            {
              'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              'label': IMAGE_2
            }     
            {
              'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              'label': IMAGE_3
            }     
            {
              'image_data': data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              'label': IMAGE_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?
          @options= [
            #<MX::ChallengeOption
              @image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              @label= IMAGE_1
            >      
            #<MX::ChallengeOption
              @image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              @label= IMAGE_2
            >      
            #<MX::ChallengeOption
              @image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              @label= IMAGE_3
            >      
            #<MX::ChallengeOption
              @image_data= data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...
              @label= IMAGE_4
            >      
          ]
          @type= IMAGE_OPTIONS
        >  
      ]
    >
    

    A connection status of CONNECTED means that the member was successfully authenticated and aggregation has begun. The is_being_aggregated field will tell you whether aggregation has completed; the field will be true while aggregation is taking place and returns to false when aggregation is complete.

    If the aggregation has triggered MFA, the response will contain a field called challenges which contains an array of MFA questions that must be answered. There are several different types of challenges, each of which has an example to the right.

    For further information on connection_status and related fields, click here

    Answer MFA, if necessary

    Endpoint PUT /users/{user_guid}/members/{member_guid}/resume

    Example request to resume aggregation:

    $ curl -i -X PUT 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/resume' \
      -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":{
              "challenges":[
                {
                   "guid": "institution-credential-guid",
                   "value": "user-entered-value"
                },
                {
                  "guid": "institution-credential-guid",
                   "value": "user-entered-value"
                }
              ]
            }
          }'
    
    using System;
    using Atrium.Api;
    using Atrium.Model;
    
    namespace Example
    {
        public class ResumeMemberExample
        {
            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 body = new MemberResumeRequestBody(); // MemberResumeRequestBody | Member object with MFA challenge answers
    
                try
                {
                    // Resume aggregation from MFA
                    MemberResponseBody response = client.members.ResumeMember(memberGuid, userGuid, body);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling MembersApi.ResumeMember: " + 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`.
      body := atrium.MemberResumeRequestBody{} // MemberResumeRequestBody | Member object with MFA challenge answers
    
      response, _, err := client.Members.ResumeMember(ctx, memberGUID, 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 memberGuid = "MBR-123"; // String | The unique identifier for a `member`.
            String userGuid = "USR-123"; // String | The unique identifier for a `user`.
            MemberResumeRequestBody body = new MemberResumeRequestBody(); // MemberResumeRequestBody | Member object with MFA challenge answers
    
            try {
                MemberResponseBody response = client.members.resumeMember(memberGuid, userGuid, body);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling MembersApi#resumeMember");
                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 body = new atrium.MemberResumeRequestBody(); // MemberResumeRequestBody | Member object with MFA challenge answers
    
    var response = client.members.resumeMember(memberGuid, 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()
    );
    
    $member_guid = "MBR-123"; // string | The unique identifier for a `member`.
    $user_guid = "USR-123"; // string | The unique identifier for a `user`.
    $body = new \atrium\model\MemberResumeRequestBody(); // \atrium\model\MemberResumeRequestBody | Member object with MFA challenge answers
    
    try {
        $result = $client->members->resumeMember($member_guid, $user_guid, $body);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling MembersApi->resumeMember: ', $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`.
    body = atrium.MemberResumeRequestBody() # MemberResumeRequestBody | Member object with MFA challenge answers
    
    try:
        # Resume aggregation from MFA
        response = client.members.resume_member(member_guid, user_guid, body)
        pprint(response)
    except ApiException as e:
        print("Exception when calling MembersApi->resume_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`.
    body = Atrium::MemberResumeRequestBody.new # MemberResumeRequestBody | Member object with MFA challenge answers
    
    begin
      #Resume aggregation from MFA
      response = client.members.resume_member(member_guid, user_guidbody)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling MembersApi->resume_member: #{e}"
    end
    

    Example response

    Status: 202 Accepted
    
    {
      "member": {
        "aggregated_at": "2016-09-30T14:31:45-06:00",
        "connection_status": "RESUMED",
        "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": "Bank Name",
        "status": "REQUESTED",
        "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: RESUMED
          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: REQUESTED
          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: RESUMED
          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: REQUESTED
          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: RESUMED
          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: REQUESTED
          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: RESUMED
          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: REQUESTED
          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] => RESUMED
          [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] => REQUESTED
          [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': RESUMED
          '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': REQUESTED
          '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= RESUMED
          @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= REQUESTED
          @successfully_aggregated_at= 2016-10-13T17:57:38+00:00
          @user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
        >
    >
    

    If the connection_status returns as CHALLENGED during polling, it will be necessary to answer multi-factor authentication in order to continue. This requires calling the list member MFA challenges endpoint and the resume aggregation from MFA endpoint, then polling the connection_status again.

    Further details on MFA, see our technical reference or our troubleshooting guide.

    Read account numbers

    Endpoint: GET /users/{user_guid}/members/{member_guid}/account_numbers

    Example request:

    $ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/account_numbers' \
      -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 ListAccountNumbersExample
        {
            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 account numbers
                    AccountNumbersResponseBody response = client.verification.ListAccountNumbers(memberGuid, userGuid);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling VerificationApi.ListAccountNumbers: " + 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.Verification.ListAccountNumbers(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 VerificationApiExample {
        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 {
                AccountNumbersResponseBody response = client.verification.listAccountNumbers(memberGuid, userGuid);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling VerificationApi#listAccountNumbers");
                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.verification.listAccountNumbers(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->verification->listAccountNumbers($member_guid, $user_guid);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling VerificationApi->listAccountNumbers: ', $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 account numbers
        response = client.verification.list_account_numbers(member_guid, user_guid)
        pprint(response)
    except ApiException as e:
        print("Exception when calling VerificationApi->list_account_numbers: %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 account numbers
      response = client.verification.list_account_numbers(member_guid, user_guid)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling VerificationApi->list_account_numbers: #{e}"
    end
    

    Example response:

    {
      "account_numbers": [
        {
          "account_guid": "ACT-123",
          "account_number": "10001",
          "routing_number": "68899990000000",
          "member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
          "user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
        }
      ]
    }
    
    class AccountNumbersResponseBody {
      AccountNumbers: [
        class AccountNumber {
          AccountGuid: ACT-123
          AccountNumber: 10001
          MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          RoutingNumber: 68899990000000
          UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    {
      AccountNumbers: [
        {
          AccountGuid: ACT-123
          AccountNumber: 10001
          MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          RoutingNumber: 68899990000000
          UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    class AccountNumbersResponseBody {
      account_numbers: [
        class AccountNumber {
          accountGuid: ACT-123
          accountNumber: 10001
          memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          routingNumber: 68899990000000
          userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    AccountNumbersResponseBody {
      account_numbers: [
        AccountNumber {
          accountGuid: ACT-123
          accountNumber: 10001
          memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          routingNumber: 68899990000000
          userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    atrium/model/AccountNumbersResponseBody Object (
      [account_numbers] => Array (
        atrium/model/AccountNumber Object (
          [account_guid] => ACT-123
          [account_number] => 10001
          [member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          [routing_number] => 68899990000000
          [user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
        )  
      )
    )
    
    {
      'account_numbers': [
        {
          'account_guid': ACT-123
          'account_number': 10001
          'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          'routing_number': 68899990000000
          'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    #<MX::AccountNumbersResponseBody
      @account_numbers= [
        #<MX::AccountNumber
          @account_guid= ACT-123
          @account_number= 10001
          @member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          @routing_number= 68899990000000
          @user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
        >  
      ]
    >
    

    Endpoint: GET /users/{user_guid}/accounts/{account_guid}/account_numbers

    Example request:

    $ curl -i -X GET 'https://vestibule.mx.com/users/{user_guid}/accounts/{account_guid}/account_numbers' \
      -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 ListAccountNumbersByAccountExample
        {
            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 account numbers by account GUID
                    AccountNumbersResponseBody response = client.verification.ListAccountNumbersByAccount(accountGuid, userGuid);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling VerificationApi.ListAccountNumbersByAccount: " + 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.Verification.ListAccountNumbersByAccount(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 VerificationApiExample {
        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 {
                AccountNumbersResponseBody response = client.verification.listAccountNumbersByAccount(accountGuid, userGuid);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling VerificationApi#listAccountNumbersByAccount");
                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.verification.listAccountNumbersByAccount(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->verification->listAccountNumbersByAccount($account_guid, $user_guid);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling VerificationApi->listAccountNumbersByAccount: ', $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 account numbers by account GUID
        response = client.verification.list_account_numbers_by_account(account_guid, user_guid)
        pprint(response)
    except ApiException as e:
        print("Exception when calling VerificationApi->list_account_numbers_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
      #Read account numbers by account GUID
      response = client.verification.list_account_numbers_by_account(account_guid, user_guid)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling VerificationApi->list_account_numbers_by_account: #{e}"
    end
    

    Example response:

    {
      "account_numbers": [
        {
          "account_guid": "ACT-123",
          "account_number": "10001",
          "routing_number": "68899990000000",
          "member_guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
          "user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54"
        }
      ]
    }
    
    class AccountNumbersResponseBody {
      AccountNumbers: [
        class AccountNumber {
          AccountGuid: ACT-123
          AccountNumber: 10001
          MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          RoutingNumber: 68899990000000
          UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    {
      AccountNumbers: [
        {
          AccountGuid: ACT-123
          AccountNumber: 10001
          MemberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          RoutingNumber: 68899990000000
          UserGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    class AccountNumbersResponseBody {
      account_numbers: [
        class AccountNumber {
          accountGuid: ACT-123
          accountNumber: 10001
          memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          routingNumber: 68899990000000
          userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    AccountNumbersResponseBody {
      account_numbers: [
        AccountNumber {
          accountGuid: ACT-123
          accountNumber: 10001
          memberGuid: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          routingNumber: 68899990000000
          userGuid: USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    atrium/model/AccountNumbersResponseBody Object (
      [account_numbers] => Array (
        atrium/model/AccountNumber Object (
          [account_guid] => ACT-123
          [account_number] => 10001
          [member_guid] => MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          [routing_number] => 68899990000000
          [user_guid] => USR-fa7537f3-48aa-a683-a02a-b18940482f54
        )  
      )
    )
    
    {
      'account_numbers': [
        {
          'account_guid': ACT-123
          'account_number': 10001
          'member_guid': MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          'routing_number': 68899990000000
          'user_guid': USR-fa7537f3-48aa-a683-a02a-b18940482f54
        }  
      ]
    }
    
    #<MX::AccountNumbersResponseBody
      @account_numbers= [
        #<MX::AccountNumber
          @account_guid= ACT-123
          @account_number= 10001
          @member_guid= MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
          @routing_number= 68899990000000
          @user_guid= USR-fa7537f3-48aa-a683-a02a-b18940482f54
        >  
      ]
    >
    

    Account numbers can be accessed either through a member or through a specific account. Both paths are shown here.

    Verify a member

    Endpoint: POST /users/{user_guid}/members/{member_guid}/verify

    Example request:

    curl -i -X POST 'https://vestibule.mx.com/users/{user_guid}/members/{member_guid}/verify' \
      -H 'Accept: application/vnd.mx.atrium.v1+json' \
      -H 'Content-Type: application/json' \
      -H 'MX-API-Key: {mx_api_key}' \
      -H 'MX-Client-ID: {mx_client_id}'
    
    using System;
    using Atrium.Api;
    using Atrium.Model;
    
    namespace Example
    {
        public class VerifyMemberExample
        {
            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
                {
                    // Verify
                    MemberResponseBody response = client.verification.VerifyMember(memberGuid, userGuid);
                    Console.WriteLine(response);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception when calling VerificationApi.VerifyMember: " + 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.Verification.VerifyMember(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 VerificationApiExample {
        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.verification.verifyMember(memberGuid, userGuid);
                System.out.println(response);
            } catch (ApiException e) {
                System.err.println("Exception when calling VerificationApi#verifyMember");
                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.verification.verifyMember(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->verification->verifyMember($member_guid, $user_guid);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling VerificationApi->verifyMember: ', $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:
        # Verify
        response = client.verification.verify_member(member_guid, user_guid)
        pprint(response)
    except ApiException as e:
        print("Exception when calling VerificationApi->verify_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
      #Verify
      response = client.verification.verify_member(member_guid, user_guid)
      p response
    rescue Atrium::ApiError => e
      puts "Exception when calling VerificationApi->verify_member: #{e}"
    end
    

    Example response:

    {
        "member": {
            "aggregated_at": "2018-06-25T20:04:19Z",
            "connection_status": "CONNECTED",
            "identifier": "chase_ds",
            "status": "INITIATED",
            "successfully_aggregated_at": "2018-06-25T19:45:01Z",
            "guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
            "institution_code": "6930ee63-16b3-fc5e-ab48-18bbc39379d0",
            "is_being_aggregated": true,
            "metadata": null,
            "name": "chase ds",
            "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
        >
    >
    

    The verify endpoint begins a verification process for an already-existing member.

    Testing Verification

    To test your setup without incurring the cost of calling the verify endpoint, Atrium has test endpoints available.

    Simply modify the URL to contain the user GUID test_atrium and the member GUID test_atrium_member.

    The endpoint URLs will then be as follows:

    /users/test_atrium/members/test_atrium_member/verify
    /users/test_atrium/members/test_atrium_member/account_numbers

    Changelog

    June 13, 2019

    June 5, 2019

    May 21, 2019

    March 21, 2019

    February 25, 2019

    February 22, 2019

    February 7, 2019

    January 30, 2019

    January 28, 2019

    January 11, 2019

    December 18, 2018

    December 12, 2018

    November 26, 2018

    November 19, 2018

    November 16, 2018

    September 20, 2018

    August 13, 2018

    July 20, 2018

    April 25, 2018

    Updated support escalation information in the Member statuses section of the Getting Started with Atrium guide.

    April 20, 2018

    March 6, 2018

    February 14, 2018

    Added code examples for several languages.

    December 5, 2017

    November 21, 2017

    October 4, 2017

    September 13, 2017