Go HTTP Client
Manage Traverse databases, queries, and imports from Go over HTTP.
Install
Copy the go/http package into your project. The client is in a private repository and is not published on pkg.go.dev.
cp -r traverse/go/http ./internal/traverse
Note: Standard library only — zero external dependencies. Requires Go 1.22+.
Connect
import traversehttp "your/module/internal/traverse"
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
})