Skip to content

GraphService ​

Core graph CRUD operations.

Transport

All methods are available via:

  • gRPC on port 7080 — native high-performance API
  • REST/JSON on port 7081 — HTTP/JSON transcoding via embedded structured-proxy

Methods ​

CreateNode ​

Create a new node with the given labels and properties.

HTTP: POST /v1/graph/nodes

Request: CreateNodeRequest

FieldTypeDescription
labelsstring[]—
propertiesmap<string, PropertyValue>—
operationOperationRefThe client operation this creation carries out: the node is created at most once however the call is retried, and a retry of a creation that already took effect creates nothing and is refused with FAILED_PRECONDITION, reason OPERATION_SETTLED, naming its outcome. Absent creates unbound. On an entry of CreateNodesBatchRequest it is refused with INVALID_ARGUMENT: the batch names its operation.

Response: Node

FieldTypeDescription
node_iduint64Raw 64-bit node identifier. Preserved for Neo4j v4 driver compatibility and direct internal addressing. New client code SHOULD prefer element_id.
labelsstring[]—
propertiesmap<string, PropertyValue>—
element_idstringCanonical opaque identifier: 13-character Crockford base32 encoding of node_id (bijective). Stable across schema changes, restarts, replication. Use this as the primary node reference in application code.
versionuint64The version of this node: the HLC timestamp of the commit that last wrote it. This is the value a conditional write is stated against (CommitTransactionRequest.expect), and it is the same number a write receipt returns as commit_ts, so a read and a later write speak of one thing rather than two. Zero means the server did not resolve a version for this node, not that the node is at version zero: a node that exists always has the commit that wrote it.

CreateNodesBatch ​

Create N nodes in a single transaction. Server batches secondary index updates (HNSW graph builds, full-text posting list appends, B-tree entries) so a bulk load of M nodes carrying vector or text properties costs one index write per index, not M. The whole batch is atomic: either every node is created or none are. Created nodes are returned in input order.

HTTP: POST /v1/graph/nodes:batch

Request: CreateNodesBatchRequest

FieldTypeDescription
nodesCreateNodeRequest[]Nodes to create, in caller-defined order. Each entry has the same semantics as a single CreateNodeRequest. Server returns the created nodes in the same order via CreateNodesBatchResponse.nodes. An empty list is a valid no-op and returns an empty response.
operationOperationRefThe client operation the whole batch carries out: the batch takes effect at most once however the call is retried; see CreateNodeRequest.operation.

Response: CreateNodesBatchResponse

FieldTypeDescription
nodesNode[]Created nodes, in the same order as CreateNodesBatchRequest.nodes. Length matches the request's nodes length on success.

GetNode ​

Get a node by its ID.

HTTP: GET /v1/graph/nodes/{node_id}

Request: GetNodeRequest

FieldTypeDescription
node_iduint64—

Response: Node

FieldTypeDescription
node_iduint64Raw 64-bit node identifier. Preserved for Neo4j v4 driver compatibility and direct internal addressing. New client code SHOULD prefer element_id.
labelsstring[]—
propertiesmap<string, PropertyValue>—
element_idstringCanonical opaque identifier: 13-character Crockford base32 encoding of node_id (bijective). Stable across schema changes, restarts, replication. Use this as the primary node reference in application code.
versionuint64The version of this node: the HLC timestamp of the commit that last wrote it. This is the value a conditional write is stated against (CommitTransactionRequest.expect), and it is the same number a write receipt returns as commit_ts, so a read and a later write speak of one thing rather than two. Zero means the server did not resolve a version for this node, not that the node is at version zero: a node that exists always has the commit that wrote it.

CreateEdge ​

Create an edge between two nodes.

HTTP: POST /v1/graph/edges

Request: CreateEdgeRequest

FieldTypeDescription
edge_typestring—
source_node_iduint64—
target_node_iduint64—
propertiesmap<string, PropertyValue>—
operationOperationRefThe client operation this creation carries out: the edge is created at most once however the call is retried; see CreateNodeRequest.operation.

Response: Edge

FieldTypeDescription
edge_iduint64—
edge_typestring—
source_node_iduint64—
target_node_iduint64—
propertiesmap<string, PropertyValue>—
element_idstringCanonical opaque identifier for the edge endpoints (concatenated source and target element_ids in canonical order). Edges in CoordiNode are typed property bags between two nodes, not first-class entities — this field exists for parity with Neo4j relationships, not as a stable handle.

Traverse ​

Traverse edges from a starting node.

HTTP: POST /v1/graph/traverse

Request: TraverseRequest

FieldTypeDescription
start_node_iduint64—
edge_typestring—
directionTraversalDirectionOUTBOUND, INBOUND, or BOTH.
max_depthuint32—
paginationPaginationRequest—

Response: TraverseResponse

FieldTypeDescription
nodesNode[]—
edgesEdge[]—
paginationPaginationResponse—

Types ​

CreateEdgeRequest ​

FieldTypeDescription
edge_typestring—
source_node_iduint64—
target_node_iduint64—
propertiesmap<string, PropertyValue>—
operationOperationRefThe client operation this creation carries out: the edge is created at most once however the call is retried; see CreateNodeRequest.operation.

CreateNodeRequest ​

FieldTypeDescription
labelsstring[]—
propertiesmap<string, PropertyValue>—
operationOperationRefThe client operation this creation carries out: the node is created at most once however the call is retried, and a retry of a creation that already took effect creates nothing and is refused with FAILED_PRECONDITION, reason OPERATION_SETTLED, naming its outcome. Absent creates unbound. On an entry of CreateNodesBatchRequest it is refused with INVALID_ARGUMENT: the batch names its operation.

CreateNodesBatchRequest ​

Bulk-create N nodes in one transaction. Same shape as N back-to-back CreateNode calls, but processed under a single server-side lock acquisition with deferred secondary-index commit at the end of the batch — primary win for vector-heavy bulk loads (HNSW write lock is taken once per batch, not once per node).

FieldTypeDescription
nodesCreateNodeRequest[]Nodes to create, in caller-defined order. Each entry has the same semantics as a single CreateNodeRequest. Server returns the created nodes in the same order via CreateNodesBatchResponse.nodes. An empty list is a valid no-op and returns an empty response.
operationOperationRefThe client operation the whole batch carries out: the batch takes effect at most once however the call is retried; see CreateNodeRequest.operation.

CreateNodesBatchResponse ​

FieldTypeDescription
nodesNode[]Created nodes, in the same order as CreateNodesBatchRequest.nodes. Length matches the request's nodes length on success.

GetNodeRequest ​

FieldTypeDescription
node_iduint64—

OperationRef ​

A reference to one client operation: what a client persists before sending a write and sends again with every retry of it, on any connection and to any member.

FieldTypeDescription
issuerbytesThe logical client: 16 bytes the client chooses once and keeps across its restarts (a random value, or a digest of a stable application identity). Independent clients use different issuers; a connection, session or server is not an issuer.
incarnationuint64The issuer's incarnation the number belongs to, from EnrollIssuerResponse.
sequenceuint64The operation's number within the incarnation, allocated by the client: starting at EnrollIssuerResponse.next_sequence, each new write takes the next number, and a retry of a write keeps its number. Numbers are an identity, not an execution order: writes with different numbers may run concurrently and complete in any order.
deploymentbytesThe deployment that enrolled the incarnation, 16 bytes, from EnrollIssuerResponse.deployment. A server of another deployment refuses the reference with INVALID_ARGUMENT, reason FOREIGN_OPERATION, rather than admit it as a new operation.

TraverseRequest ​

FieldTypeDescription
start_node_iduint64—
edge_typestring—
directionTraversalDirectionOUTBOUND, INBOUND, or BOTH.
max_depthuint32—
paginationPaginationRequest—

TraverseResponse ​

FieldTypeDescription
nodesNode[]—
edgesEdge[]—
paginationPaginationResponse—

Enums ​

TraversalDirection ​

ValueNumberDescription
TRAVERSAL_DIRECTION_UNSPECIFIED0—
TRAVERSAL_DIRECTION_OUTBOUND1—
TRAVERSAL_DIRECTION_INBOUND2—
TRAVERSAL_DIRECTION_BOTH3—