Skip to content

Typescript SDK

Requirements

  • Node 18+ Our developer tools are built on Javascript and utilizes the modern NPM packaging system. Javascript comes preinstalled on most development machines. Node (and NPM with it) can be installed from NPM's main site or through your operating system's package distributor.

Installation

Functionality within the VibeIQ platform (Contrail) can be accessed and extended through a TypeScript SDK. The SDK is installable via the popular JavaScript Node Packages Manager npm.

npm install @contrail/sdk --global

This will install the contrail SDK globally to your system, which will enable you to use it in any script, regardless of which directory it is in.

Alternatively, If you are using the SDK as part of a module you plan on packaging and sharing with other developers (or deploying to the cloud), you can add the SDK to your project:

npm install @contrail/sdk

Scripting vs App development

In the world of Javascript, code can be written as a one-off "script", run through the node interpreter, or packaged as part of an application. Below are examples on how to authenticate and print your username in each of these paradigms.

Scripting

To use the Contrail SDK as part of a one-off script, you can use the require javascript keyword.

script.js
const contrail = require("@contrail/sdk");

// define an asynchronous function
const run = async () => {
  await contrail.login({
    orgSlug: "YOUR-ORG-HERE",
    email: "myEmail@example.com",
    password: "neverInPlainText",
  });

  // or using an api key like the one you can get from `contrail app getApiKey`
  // await contrail.login({orgSlug: 'test-zone-1', apiKey: 'app:qwerty'})

  const user = await contrail.getCurrentUser();
  console.log("USER:", JSON.stringify(user, null, 2));
};

// run the function
run();

You can run your script using node in your shell.

node script.js

Packaged Module

If you intend on using the Contrail SDK as part of your packaging module, you may use the import keyword. You are more likely to use this when writing integrations as part of a web or server runtime.

someServerFile.js
import { login, getCurrentUser } from "@contrail/sdk";

export async function run() => {

  await login({orgSlug: 'YOUR-ORG-HERE', email: 'myEmail@example.com', password: 'neverInPlainText'});

  // or using an api key like the one you can get from `contrail app getApiKey`
  // await login({orgSlug: 'test-zone-1', apiKey: 'app:qwerty'})

  const user = await getCurrentUser();
  console.log('USER:', JSON.stringify(user, null, 2))
}

App Authentication

Apps actions are automatically authenticated, and do not require any login logic when running in an event workflow.