Traverse.Http 0.7.0

dotnet add package Traverse.Http --version 0.7.0
                    
NuGet\Install-Package Traverse.Http -Version 0.7.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Traverse.Http" Version="0.7.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Traverse.Http" Version="0.7.0" />
                    
Directory.Packages.props
<PackageReference Include="Traverse.Http" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Traverse.Http --version 0.7.0
                    
#r "nuget: Traverse.Http, 0.7.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Traverse.Http@0.7.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Traverse.Http&version=0.7.0
                    
Install as a Cake Addin
#tool nuget:?package=Traverse.Http&version=0.7.0
                    
Install as a Cake Tool

Traverse.Http

HTTP client for the Traverse graph database management API. Manage databases, files, aliases, schema, and users over HTTP/HTTPS.

Installation

dotnet add package Traverse.Http

Features

  • Zero dependencies — pure .NET, no third-party packages
  • Full API coverage — databases, files, aliases, schema, users, import, query
  • Async-first — all methods are async/await with CancellationToken support
  • File transfers — upload/download .tvdb files with progress reporting
  • TLS — optional support for self-signed certificates

Quick Start

using Traverse.Http;

var client = new TraverseHttpClient("http://localhost:7691",
    new TraverseHttpOptions { ApiKey = "tvs_..." });

// List databases
var databases = await client.ListDatabasesAsync();
foreach (var db in databases)
    Console.WriteLine($"{db.Name}: {db.NodeCount} nodes, {db.EdgeCount} edges");

// Run a query
var result = await client.QueryAsync("MATCH (n) RETURN count(n) AS cnt");
Console.WriteLine(result.Rows[0]["cnt"]);

// Create a database
await client.CreateDatabaseAsync("mydb");

// Import Cypher statements
await client.ImportCypherAsync("CREATE (:Person {name: 'Alice'})");

Database Management

await client.CreateDatabaseAsync("analytics");
await client.RenameDatabaseAsync("analytics", "analytics-v2");
await client.DropDatabaseAsync("analytics-v2");

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

File Management

// List .tvdb files on the server
var files = await client.ListFilesAsync();

// Upload a database file
await using var stream = File.OpenRead("backup.tvdb");
await client.UploadFileAsync("backup.tvdb", stream);

// Download a database file
await client.DownloadFileAsync("backup.tvdb", "local-copy.tvdb");

// Delete a file from the server
await client.DeleteFileAsync("old-backup.tvdb");

CSV Import

Import nodes and edges from CSV data:

// Import nodes
var csv = "name,age\nAlice,30\nBob,25";
var result = await client.ImportCsvAsync(csv, "Person",
[
    new() { Name = "name" },
    new() { Name = "age", Type = "integer" }
]);
Console.WriteLine($"{result.NodesCreated} nodes created");

// Import edges
var edgeCsv = "from,to,since\nAlice,Bob,2020";
var edgeResult = await client.ImportCsvEdgesAsync(edgeCsv, "KNOWS",
    source: new() { Label = "Person", Column = "from", Property = "name" },
    target: new() { Label = "Person", Column = "to", Property = "name" },
    columns: [new() { Name = "since", Type = "integer" }]);
Console.WriteLine($"{edgeResult.EdgesCreated} edges created");

Schema and Aliases

// Get database schema
var schema = await client.GetSchemaAsync();

// Manage aliases
var aliases = await client.ListAliasesAsync();
await client.CreateAliasAsync("prod", "main-database");
await client.AlterAliasAsync("prod", "new-database");
await client.DropAliasAsync("prod");

User Management

var users = await client.ListUsersAsync();
await client.CreateUserAsync("alice", "secret", role: "admin");
await client.UpdateUserAsync("alice", role: "reader");
await client.DeleteUserAsync("alice");

Health Checks

var health = await client.HealthAsync();
Console.WriteLine($"Status: {health.Status}");

bool ready = await client.ReadyAsync();

Database Hotswap

Replace a live database with zero downtime using upload → unload → load:

var dbName = "analytics";
var newFile = "analytics-v2.tvdb";

// 1. Upload the new .tvdb file to the server's data directory
await using var stream = File.OpenRead(newFile);
await client.UploadFileAsync(newFile, stream);

// 2. Unload the old database (persists unsaved changes, frees memory)
await client.UnloadDatabaseAsync(dbName);

// 3. Load the new file under the same database name
await client.LoadDatabaseAsync(dbName, newFile);

Both UnloadDatabaseAsync and LoadDatabaseAsync run as async server tasks with optional progress reporting:

var progress = new Progress<TaskInfo>(t =>
    Console.WriteLine($"{t.Status}: {t.ProgressPercent}%"));

await client.UnloadDatabaseAsync("analytics", progress);
await client.LoadDatabaseAsync("analytics", "analytics-v2.tvdb", progress);

For alias-based routing, point an alias at the new database instead of reusing the name:

await client.LoadDatabaseAsync("analytics-v2", "analytics-v2.tvdb");
await client.AlterAliasAsync("prod", "analytics-v2");
await client.UnloadDatabaseAsync("analytics-v1");

Configuration

Property Default Description
ApiKey null API key for authentication
AllowUntrustedCertificate false Accept self-signed TLS certificates
Timeout 100s HTTP request timeout
FileTransferTimeout infinite Timeout for file upload/download

Documentation

Full documentation at truespar.com/traverse/docs

License

Copyright 2025-2026 Truespar. All rights reserved.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.7.0 90 5/15/2026
0.6.1 89 5/15/2026
0.6.0 109 3/7/2026
0.5.0 103 3/4/2026

See https://truespar.com/traverse/docs for full release notes.