Skip to main content
Skip table of contents

Getting Started with @vidispine/vdt-api [VDT UG]

Introduction

VidiCore Development Toolkit provides a set of libraries which you can use when building your javascript applications. In this guide we will show you how create a to run JavaScript in a node environment and connect to your VidiCore API server.

Requirements

  • Can install packages and applications on your workstation.

  • Comfortable using the command-line and code-editor.

  • Able to read and write Javascript using ES6+ syntax.

You should also have a VidiCore API service endpoint which you can use as a sandbox. If you do not have one already, register at vidinet.net where you can provision a new service endpoint.

We recommend that Windows users install Windows Subsystem for Linux and a Linux distribution such as Ubuntu 20.04.

Setup

Install Node

Node is an open-source Javascript run-time environment which we will use to build our application.

Download and install from the official website or via your package manager. Make sure you are using the latest LTS version (v12) and include npm.

BASH
node -v

We will also be using npm to install packages. It is typically will be installed with node. Make sure you are using version 6 or later

BASH
npm -v
Node Package

We will create a simple node package to begin with.

BASH
mkdir my-vidispine-script
cd my-vidispine-script
npm init

Press enter to use the defaults, these can be edited later.

You will now see a new file called package.json has been created.

Install Dependencies

We will install the @vidispine/vdt-api library. This will create a node_modules subfolder and download all the package dependencies.

CODE
npm install @vidispine/vdt-api

Using VDT-API via node command-line

Running the node command within your project directory will make all of the libraries installed in the node_modules folder available to import, including @vidispine/vdt-api. Let’s run a quick test to see if we can connect to your VidiCore API endpoint.

Start the node runtime within your my-vidispine-script folder.

BASH
node

The @vidispine/vdt-api library provides a wrapper around the axios client with functions named after the VidiCore REST APIs. The request configuration object is passed along to the client and we can use this to specify the credentials and endpoint URL.

The URL should include the protocol (http or https) and the port (if anything other than 80 or 443). It should not include the API path and not have any trailing slash.

In this example we will assume you are using a user which is a member of the _special_all group.

The function returns a promise which will be fulfilled with a response object. If the response data is JSON it will be automatically parsed into a Javascript object.

First we will import the package as a variable called api and create a function called logResponse to log the response body returned from the API.

JS
const api = require('@vidispine/vdt-api');

const logResponse = (response) => console.log(response.data);

Add your connection details for the VidiCore API endpoint, username and password. We combine the username and password into an auth object.

JS
const baseURL = 'https://demo.myvidispine.com';
const username = 'admin';
const password = 'admin';
const auth = { username, password };

Make sure to replace the username, password and baseURL with your own settings

Now make API calls to the server by specifying the auth and baseURL args on the version.getVersion function

JS
api.version.getVersion({ auth, baseURL }).then(logResponse);

To make things easier, use the login function so that we do not have to specify the connection detauls each time we make a request. Under the hood, this is setting the axios defaults.

JS
api.utils.login({ baseURL, username, password })

api.user.listUser().then(logResponse);

Requests may have specific required parameters. In this example for group.getGroup request we are specifying the groupName

CODE
api.group.getGroup({ groupName: '_special_all' }).then(logResponse)

The queryParams object can be added to the request where needed (for pre v5.0 APIs the matrixParams can also be set). We are using the name query parameter but look at the API documentation for the other options.

CODE
api.user.listUser({ queryParams: { name: 'admin' } }).then(logResponse);

We can set the body of the request. In this example we are using the search.searchItemCollection with text searching in the itemSearchDocument.

CODE
var itemSearchDocument = { text: [{ value: '*' }]}
api.search.searchItemCollection({ itemSearchDocument }).then(logResponse);

You always have access to see all of the configuration used to make the request. Lets try search.searchItemCollection but we will create a new function to log the config object and use that in the promise.

CODE
const logConfig = (response) => console.log(response.config);
api.search.searchItemCollection({ itemSearchDocument }).then(logConfig);

Finally, type .exit to quit the node environment.

CODE
.exit

Use @vidispine/vdt-api for reference to the other functions.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.