Documentation
Code Examples
Code Examples Reference
Copy-paste-ready snippets for common operations.
REST API — Full Workflow
bash — full REST workflow
BASE=http://localhost:8080
### 1. Register schema
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CALL db.registerNodeType(\"CARD\",\"string\") YIELD node_type_id RETURN node_type_id","parameters":{}}'
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CALL db.registerNodeType(\"MERCHANT\",\"string\") YIELD node_type_id RETURN node_type_id","parameters":{}}'
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CALL db.registerEdgeType({name:\"TRANSACTS_AT\",from_node_type:\"CARD\",to_node_type:\"MERCHANT\"}) YIELD edge_type_id RETURN edge_type_id","parameters":{}}'
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CALL db.finalizeSchema() YIELD schema_version RETURN schema_version","parameters":{}}'
### 2. Create nodes
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CREATE (c:CARD {external_id:$id}) RETURN c.external_id","parameters":{"id":"card-001"}}'
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"CREATE (m:MERCHANT {external_id:$id}) RETURN m.external_id","parameters":{"id":"merchant-42"}}'
### 3. Create relationship
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"MATCH (c:CARD {external_id:$cid}),(m:MERCHANT {external_id:$mid}) CREATE (c)-[:TRANSACTS_AT {amount:$amt}]->(m) RETURN true","parameters":{"cid":"card-001","mid":"merchant-42","amt":49.99}}'
### 4. Query the graph
curl -sS -X POST $BASE/cypher -H 'Content-Type: application/json' \
-d '{"query":"MATCH (c:CARD {external_id:$id})-[:TRANSACTS_AT]->(m:MERCHANT) RETURN m.external_id AS merchant","parameters":{"id":"card-001"}}'
Bolt — Python
python
from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("", ""))
def get_merchants_for_card(tx, card_id):
result = tx.run(
"MATCH (c:CARD {external_id: $id})-[:TRANSACTS_AT]->(m:MERCHANT) RETURN m.external_id AS merchant",
id=card_id
)
return [r["merchant"] for r in result]
with driver.session() as session:
merchants = session.execute_read(get_merchants_for_card, "card-001")
print(merchants)
driver.close()
Rust Client — Complete Scoring Loop
rust
use jetgraph_client::{
GraphClient, CreateEdgeRequest, VelocityQuery, FraudContextQuery, FlagRequest, prop,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let graph = GraphClient::connect("http://localhost:50051").await?;
let card_id = graph.lookup_node("CARD", "card-001").await?;
let merchant_id = graph.lookup_node("MERCHANT", "merchant-42").await?;
let txn_1h = graph.get_velocity_count(VelocityQuery {
node: card_id, edge_type: "TRANSACTS_AT".into(), window_secs: 3600,
}).await?.count;
let is_new = !graph.edge_exists(card_id, merchant_id, "TRANSACTS_AT").await?;
let ctx = graph.get_fraud_context(FraudContextQuery { node: card_id }).await?;
let mut risk: f32 = 0.0;
if is_new { risk += 0.15; }
if txn_1h > 30 { risk += 0.25; }
risk += 0.5 * ctx.max_neighbor_fraud_score;
graph.create_edge(CreateEdgeRequest {
edge_type_name: "TRANSACTS_AT".into(),
src: card_id, dst: merchant_id,
properties: vec![prop("risk", risk)],
}).await?;
println!("Risk score: {:.2}", risk);
Ok(())
}