Python HTTP Client

Manage Traverse databases, queries, and imports from Python over HTTP.

Install

pip install traverse-http

Note: Requires Python 3.10+ and the requests library (installed automatically).

Connect

from traverse_http import TraverseHttpClient

client = TraverseHttpClient("http://localhost:7691")

# With API key authentication
client = TraverseHttpClient(
    "http://localhost:7691",
    api_key="tvs_your_api_key",
)

Context Manager

with TraverseHttpClient("http://localhost:7691", api_key="tvs_...") as client:
    health = client.health()
    print(health.version)

Health Check

health = client.health()
print(health.status)       # "ok"
print(health.version)      # server version
print(health.uptime_secs)  # seconds since start

# Quick readiness probe (returns bool, never raises)
if client.ready():
    print("Server is ready")

List Databases

databases = client.list_databases()
for db in databases:
    print(db.name, db.default)

Create & Drop Database

client.create_database("mydb")
client.drop_database("mydb")

Run a Query

result = client.query(
    "MATCH (n:Person) WHERE n.age > $min_age RETURN n.name, n.age",
    parameters={"min_age": 25},
    database="mydb",
)
for row in result.rows:
    print(row)

print(result.columns)     # ["n.name", "n.age"]
print(result.time_ms)     # query time in milliseconds

Import Cypher

result = client.import_cypher(
    "CREATE (a:Person {name: 'Alice'});\nCREATE (b:Person {name: 'Bob'});",
    database="mydb",
)
print(result.executed, "of", result.total_statements, "statements")

Schema

schema = client.get_schema(database="mydb")
print(schema.labels)              # ["Person", "Movie"]
print(schema.relationship_types)  # ["KNOWS", "ACTED_IN"]
print(schema.indexes)             # list of IndexInfo

Aliases

# Create an alias
client.create_alias("production", "mydb")

# List aliases
for alias in client.list_aliases():
    print(alias.alias, "->", alias.database)

# Update and drop
client.alter_alias("production", "mydb_v2")
client.drop_alias("production")

File Upload

with open("backup.tvdb", "rb") as f:
    result = client.upload_file("backup.tvdb", f)
    print(result.size_bytes)

Save & Close

# Persist all databases to disk
client.save()

# Close the underlying HTTP session
client.close()

Constructor Options

client = TraverseHttpClient(
    "https://traverse.example.com",
    api_key="tvs_...",
    timeout=30.0,                       # API request timeout (seconds)
    transfer_timeout=600.0,             # file upload/download timeout (seconds)
    allow_untrusted_certificate=True,   # skip TLS verification
)