Go HTTP Client
Manage Traverse databases, queries, and imports from Go over HTTP.
Install
Download the Go SDK and add it as a local module:
# Download the SDK
curl -LO https://api.truespar.com/api/versions/traverse-sdk-go/latest/download
tar xzf traverse-sdk-go-*.tar.gz
# Add to your project
go mod edit -require truespar.com/traverse-go/http@v0.0.0
go mod edit -replace truespar.com/traverse-go/http=./traverse-sdk-go-0.6.7/http
Note: Standard library only — zero external dependencies. Requires Go 1.22+.
Connect
import traversehttp "truespar.com/traverse-go/http"
client := traversehttp.NewClient("http://localhost:7691", nil)
defer client.Close()
// With API key authentication
client := traversehttp.NewClient("http://localhost:7691", &traversehttp.Options{
ApiKey: "tvs_your_api_key",
})
Health Check
health, err := client.Health()
if err != nil {
log.Fatal(err)
}
fmt.Println(health.Status) // "ok"
fmt.Println(health.Version) // server version
fmt.Println(health.UptimeSecs) // seconds since start
// Quick readiness probe (returns bool, never returns error)
if client.Ready() {
fmt.Println("Server is ready")
}
List Databases
databases, err := client.ListDatabases()
if err != nil {
log.Fatal(err)
}
for _, db := range databases {
fmt.Println(db.Name, db.Default)
}
Create & Drop Database
err := client.CreateDatabase("mydb")
err = client.DropDatabase("mydb")
Run a Query
result, err := client.Query(
"MATCH (n:Person) WHERE n.age > $min_age RETURN n.name, n.age",
map[string]any{"min_age": 25},
"mydb",
)
if err != nil {
log.Fatal(err)
}
for _, row := range result.Rows {
fmt.Println(row)
}
fmt.Println(result.Columns) // [n.name n.age]
fmt.Println(result.TimeMs) // query time in milliseconds
Import Cypher
result, err := client.ImportCypher(
"CREATE (a:Person {name: 'Alice'});\nCREATE (b:Person {name: 'Bob'});",
"mydb",
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%d of %d statements\n", result.Executed, result.TotalStatements)
Schema
schema, err := client.GetSchema("mydb")
if err != nil {
log.Fatal(err)
}
fmt.Println(schema.Labels)
fmt.Println(schema.RelationshipTypes)
fmt.Println(schema.Indexes)
Aliases
// Create an alias
err := client.CreateAlias("production", "mydb")
// List aliases
aliases, err := client.ListAliases()
for _, a := range aliases {
fmt.Printf("%s -> %s\n", a.Alias, a.Database)
}
// Update and drop
err = client.AlterAlias("production", "mydb_v2")
err = client.DropAlias("production")
File Upload
data, err := os.ReadFile("backup.tvdb")
if err != nil {
log.Fatal(err)
}
result, err := client.UploadFile("backup.tvdb", data)
fmt.Println(result.SizeBytes)
Save & Close
// Persist all databases to disk
err := client.Save()
// Release resources
client.Close()
Constructor Options
import "time"
client := traversehttp.NewClient("https://traverse.example.com", &traversehttp.Options{
ApiKey: "tvs_...",
Timeout: 30 * time.Second, // API request timeout (default: 100s)
TransferTimeout: 10 * time.Minute, // file upload/download timeout (default: 1h)
AllowUntrustedCertificate: true, // skip TLS verification
})