Node.js HTTP Client

Manage Traverse databases, queries, and imports from Node.js over HTTP.

Install

npm install @truespar/traverse-http

Note: Requires Node.js 22+ (uses native fetch). Zero external dependencies.

Connect

import { TraverseHttpClient } from '@truespar/traverse-http';

const client = new TraverseHttpClient('http://localhost:7691');

// With API key authentication
const client = new TraverseHttpClient('http://localhost:7691', {
    apiKey: 'tvs_your_api_key',
});

Health Check

const health = await client.health();
console.log(health.status);      // "ok"
console.log(health.version);     // server version
console.log(health.uptimeSecs);  // seconds since start

// Quick readiness probe (returns boolean, never throws)
if (await client.ready()) {
    console.log('Server is ready');
}

List Databases

const databases = await client.listDatabases();
for (const db of databases) {
    console.log(db.name, db.isDefault);
}

Create & Drop Database

await client.createDatabase('mydb');
await client.dropDatabase('mydb');

Run a Query

const result = await client.query(
    'MATCH (n:Person) WHERE n.age > $min_age RETURN n.name, n.age',
    { min_age: 25 },
    'mydb',
);
for (const row of result.rows) {
    console.log(row);
}

console.log(result.columns);  // ['n.name', 'n.age']
console.log(result.timeMs);   // query time in milliseconds

Import Cypher

const result = await client.importCypher(
    "CREATE (a:Person {name: 'Alice'});\nCREATE (b:Person {name: 'Bob'});",
    'mydb',
);
console.log(`${result.executed} of ${result.totalStatements} statements`);

Schema

const schema = await client.getSchema('mydb');
console.log(schema.labels);
console.log(schema.relationshipTypes);
console.log(schema.indexes);

Aliases

// Create an alias
await client.createAlias('production', 'mydb');

// List aliases
for (const alias of await client.listAliases()) {
    console.log(`${alias.alias} -> ${alias.database}`);
}

// Update and drop
await client.alterAlias('production', 'mydb_v2');
await client.dropAlias('production');

File Upload

import { readFileSync } from 'node:fs';

const data = readFileSync('backup.tvdb');
const result = await client.uploadFile('backup.tvdb', data);
console.log(result.sizeBytes);

Save

// Persist all databases to disk
await client.save();

Constructor Options

const client = new TraverseHttpClient('https://traverse.example.com', {
    apiKey: 'tvs_...',
    timeout: 30_000,              // API request timeout in ms (default: 100000)
    transferTimeout: 600_000,     // file upload/download timeout in ms (default: 3600000)
    allowUntrustedCertificate: true,  // skip TLS verification
});