Javascript SDK

Documentation for various classes and utilities within the Javascript SDK

Static Methods

init

Initializes and configures a client for working with the OpenTransact API.

Signature: init: (clientToken: string, baseUrl?: string) => Client

Parameters

ArgumentTypeRequiredNotes
clientTokenString
baseUrlUUIDOptional hostname for connecting to non-production servers
Returns

An instance of OpenTransact.Client

OpenTransact.Client

The Client object facilitates interactions with the OpenTransact API

Constructor

Signature: constructor: (token: string, baseUrl?: string)

Events

All events will pass the current authentication as an argument

  • opentransact:threeDSecure:start: Fires when the workflow is firsttriggered.
  • opentransact:threeDSecure:preauthComplete: Fires when the authentication completes the Preauth step.
  • opentransact:threeDSecure:preauthError: Fires if the result of the Preauth step was an error.
  • opentransact:threeDSecure:methodStart: Fires when the 3DS Method (browser fingerprinting) starts
  • opentransact:threeDSecure:methodSubmitted: Fires when the result of the 3DS Method is submitted to OpenTransact API.
  • opentransact:threeDSecure:methodComplete: Fires when authentication completes the Method step.
  • opentransact:threeDSecure:methodTimeout: Fires when the Method step is not completed within 15 seconds (spec limits it to 10).
  • opentransact:threeDSecure:authError: Fires when the auth step errors.
  • opentransact:threeDSecure:authComplete: Fires when the auth step complets.
  • opentransact:threeDSecure:challengeStart: Fires when the 3Ds Challenge step is triggered.
  • opentransact:threeDSecure:challengeSubmitted: Fires when Challenge response is submitted to the OpenTransact API.
  • opentransact:threeDSecure:challengeTimeout: Fires if the user does not respond to the challenge within 15 minutes.
  • opentransact:threeDSecure:postauthError: Fires when the postauth step errors.
  • opentransact:threeDSecure:postauthComplete: Fires when the postauth step completes.
  • opentransact:threeDSecure:complete: Fires when the workflow is completes

Properties

ArgumentTypeRequiredNotes
tokenString
baseUrlUUIDThe URL base which all URIs are built from

Methods

create

Create an object via the API.

Signature: async create: (resource: CreateResourceRequest) => Promise<ApiRequestResult>

Parameters

ArgumentTypeRequiredNotes
resourceCreateResourceRequestJSON for the resource

Check the Create Docs for any endpoint in the REST API Documentation to see formats which are acceptable for type CreateResourceRequest

Returns

Promise<ApiRequestResult>

Example Usage
let addressParams = {
  type: "addresses",
  attributes: {
    street1: "123 Wickersham Ln",
    locality: "Austin",
    region: "TX",
    country: "US",
    zipcode: "78701",
  },
  relationships: {
    owner: {
      data: {
        type: "profiles",
        id: profile_id,
      },
    },
  },
};
let addressResponse = await client.create(addressParams);
if (addressResponse.success) {
  // do stuff
} else {
  // show error
}

get

Get an object from the API.

Signature: async get: (resourceName: string, id: string) => Promise<ApiRequestResult>

Parameters
ArgumentTypeRequiredNotes
resourceNameStringJSON:API type for the resource
idUUIDUUID for the resource to fetch

Check the Show Docs for any endpoint in the REST API Documentation to get details about valid resourceName values, and which objects can be fetched.

Returns

Promise<ApiRequestResult>

Example Usage
const profileResponse = await window.client.get("profiles", profileId);

list

List objects of a particular type from the API.

Signature: async list: (resourceName: string, filters: CollectionRequestFilter) => Promise<ApiRequestResult>

Parameters

ArgumentTypeRequiredNotes
resourceNameStringJSON:API type for the resource
filtersCollectionRequestFilterFilters to limit the objects returned

Check the List Docs for any endpoint in the REST API Documentation to get details about valid resourceName values, and which filters can be set.

Returns

Promise<ApiRequestResult>

Example Usage

const profileResponse = await window.client.list("profiles");

update

Update an object via the API.

Signature: async update: (resource: UpdateResourceRequest) => Promise<ApiRequestResult>

Parameters

ArgumentTypeRequiredNotes
resourceUpdateResourceRequestJSON for the resource

Check the Update Docs for any endpoint in the REST API Documentation to see formats which are acceptable for type UpdateResourceRequest

Returns

Promise<ApiRequestResult>

Example Usage

const updateAccountRequest = {
  type: "accounts",
  id: accountId,
  attributes: {
    metadata: {
      myKey: "test-update",
    },
  },
};
const updateAccountResponse = await window.client.update(updateAccountRequest);
if (updateAccountResponse.success) {
  // do stuff
} else {
  // Show an error
}

poll

Poll an object for updates via the API.

Signature: async poll: (resourceName: string, id: string, options: PollOptions) => Promise<boolean>

Parameters
ArgumentTypeRequiredNotes
resourceNameStringJSON:API type for the resource
idUUIDUUID for the resource to fetch
optionsPollOptionsOptions for the polling mechanism

The first two arguments are the same as get()

PollOptions

interface PollOptions {
  delay: number; // how long between retries
  maxRetries: number; // how many retries until timeout is called
  update: (
    // a callback function called whenever a resource is returned
    resouce: Resource, // the returned resource
    next: (reset?: number) => void, // skip to the next iteration in the loop, set the retries if a number is passed
    complete: () => void // complete polling early
  ) => void;
  error: (error: ApiRequestResult) => void; // callback called when an error is returned from the API
  timeout: () => void; // callback called when maxRetries is hit
}

Returns

Promise<boolean>

Example Usage

window.client.poll("accounts", accountId, {
  update: async (updatedAccount, next, complete) => {
    console.log("Received updated account");
    console.log(updatedAccount);

    if (updatedAccount.status == "active") {
      complete();
    } else if (updatedAccount.status == "invalid") {
      complete();
      console.log("Authentication Failed");
    } else if (
      updatedAccount.metadata.threeDSecure &&
      updatedAccount.metadata.threeDSecure.required
    ) {
      console.log("Triggering 3DS2");
      let result = await window.client.triggerThreeDSecure(
        updatedAccount,
        threeDS2Options
      );
      next(0);
    } else {
      next();
    }
  },
  error: (error) => console.log(error),
  timeout: () => console.log("Account polling timed out."),
});

triggerThreeDSecure

Trigger 3DSecure Workflow on an Account or Transaction that requires it

Signature: async triggerThreeDSecure: (resource: Transaction | Account, options: ThreeDSecureOptions) => Promise<boolean>

Parameters

ArgumentTypeRequiredNotes
resourceTransaction | Accountresource object to trigger the workflow on
optionsThreeDSecureOptionsoptions for 3DS workflow

Check the 3DSecure docs for details on the required attriburtes of ThreeDSecureOptions

Returns

Promise<boolean>

Example Usage

let result = await window.client.triggerThreeDSecure(account, threeDS2Options);

Was this page helpful?