Skip to content

GemHQ/gem-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Official Gem API Node.js Client

The official Node.js client for the Gem API.

Install

npm install @gem.co/api

Quickstart

Server

// Set the SDK constants.
const { GEM_API_KEY, GEM_API_SECRET } = process.env;
const { Gem } = require('@gem.co/api').SDK;

// Create client instance.
const gem = new Gem({
  apiKey: GEM_API_KEY,
  secretKey: GEM_API_SECRET,
  environment: 'sandbox',
});

/**
 *
 * MAIN
 *
 **/

(async () => {
  try {
    const applicationUsers = await gem.listUsers();
    const firstUser = applicationUsers[0];
    const transactions = await gem.listTransactions({ userId: firstUser.id });

    console.log('User Transactions', transactions);
  } catch (e) {
    console.error('Gem Error', e);
  }
})();

Client API Reference

Constructor

const gem = new Gem({
  /* Configuration Parameters */
});

Configuration Parameters:

parameter description
apiKey Gem API key for the respective environment.
secretKey Gem API secret for the respective environment.
environment The Gem API environment. Options: sandbox or production.
options Configuration options that are passed to the Axios Client for each request made to the API.

SDK Requests

Users

method parameters description
getUser (userId: string) Get a user by ID.
listUsers (pageNumber?: number, pageSize?: number) List all users

Profiles

method parameters description
createProfile ( userId: string, profile: ProfileModel ) Create a profile.

Documents

method parameters description
createProfileDocument ( profileId: string, document: FormData ) Attach a document to a profile. (Documents may have many files associated.)

Institutions

method parameters description
getInstitution ( institutionId: string ) Get an institution by ID.
listInstitutions none List all supported institutions.

Transactions

method parameters description
getTransaction ( transactionId: string ) Get a transaction by ID.
listTransactions ({ userId?: string, accountId?: string, beforeId?: string, afterId?: string, limit?: number }?: object) Get a list of transactions.

Assets

method parameters description
getAssets ( assetId: string, source?: string ) Get assets from a source. assetIds can be a comma seperated list.
listAssets ( category: 'cryptocurrency' or 'fiat' ) List all supported assets of a certain category.

Payment Methods + Supported Currencies

method parameters description
listSupportedCurrencies (institutionId: wyre or coinify) List payment methods for a particular institution and their supported currencies.

Prices

method parameters description
getAssetPrice ( assetId: string, currencyId: string, source?: string ) Get an asset price in units of a requested currency.
listAssetPrices ( assetIds: string, currencyId: string, source?: string ) List asset prices in units of a requested currency.

Vanilla Requests

Each function makes a request to Gem's API and returns a promise in response.

const gem = new Gem({
  /* Configuration Parameters */
});

const client = gem.client;

client.get(path, parameters, options);
client.post(path, body, options);
client.put(path, body, options);
client.patch(path, body, options);
client.delete(path, body, options);

Debugging

Setting the DEBUG environment variable will turn on Gem client debug logging.

  DEBUG=gem:* node bin/my_program