Skip to content

Mutation API Reference

This API provides mutation operations for edges.

Note: Authentication is not yet implemented. The Authorization header is reserved for future use.

For conceptual understanding, see Mutation.

Mutate edges between source nodes and target nodes.

POST /graph/v3/databases/{database}/tables/{table}/edges
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathdatabaseRequiredTarget database name
PathtableRequiredTarget table name
QuerylockOptional (default: true)Whether to acquire lock during mutation
BodymutationsRequiredList of mutation items

EdgeBulkMutationRequest - Payload containing mutation items

EdgeMutationResponse - Payload containing mutation results

ParameterValue
AuthorizationYOUR_API_KEY
databaseyour_database
tableyour_table
locktrue
Terminal window
# POST /graph/v3/databases/your_database/tables/your_table/edges
curl -X POST \
"http://ab.example.com/graph/v3/databases/your_database/tables/your_table/edges?lock=true" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mutations": [
{
"type": "INSERT",
"edge": {
"version": 1,
"source": "source1",
"target": "target1",
"properties": {
"weight": 0.8,
"type": "FOLLOWS"
}
}
}
]
}'
{
"results": [
{
"source": "source1",
"target": "target1",
"status": "CREATED",
"count": 1
}
]
}

Mutate edges synchronously. This endpoint waits for the mutation to complete before returning a response.

POST /graph/v3/databases/{database}/tables/{table}/edges/sync
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathdatabaseRequiredTarget database name
PathtableRequiredTarget table name
QuerylockOptional (default: true)Whether to acquire lock during mutation
BodymutationsRequiredList of mutation items

EdgeBulkMutationRequest - Payload containing mutation items

EdgeMutationResponse - Payload containing mutation results

ParameterValue
AuthorizationYOUR_API_KEY
databaseyour_database
tableyour_table
locktrue
Terminal window
# POST /graph/v3/databases/your_database/tables/your_table/edges/sync
curl -X POST \
"http://ab.example.com/graph/v3/databases/your_database/tables/your_table/edges/sync?lock=true" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mutations": [
{
"type": "UPDATE",
"edge": {
"version": 2,
"source": "source1",
"target": "target1",
"properties": {
"weight": 0.9,
"type": "FOLLOWS"
}
}
}
]
}'
{
"results": [
{
"source": "source1",
"target": "target1",
"status": "UPDATED",
"count": 1
}
]
}

Mutate multi-edges identified by edge IDs.

POST /graph/v3/databases/{database}/tables/{table}/multi-edges
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathdatabaseRequiredTarget database name
PathtableRequiredTarget table name
QuerylockOptional (default: true)Whether to acquire lock during mutation
BodymutationsRequiredList of mutation items

MultiEdgeBulkMutationRequest - Payload containing mutation items

MultiEdgeMutationResponse - Payload containing mutation results

ParameterValue
AuthorizationYOUR_API_KEY
databaseyour_database
tableyour_table
locktrue
Terminal window
# POST /graph/v3/databases/your_database/tables/your_table/multi-edges
curl -X POST \
"http://ab.example.com/graph/v3/databases/your_database/tables/your_table/multi-edges?lock=true" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mutations": [
{
"type": "INSERT",
"edge": {
"version": 1,
"id": "edge1",
"source": "source1",
"target": "target1",
"properties": {
"weight": 0.8,
"type": "FOLLOWS"
}
}
}
]
}'
{
"results": [
{
"id": "edge1",
"status": "CREATED",
"count": 1
}
]
}

Mutate multi-edges synchronously. This endpoint waits for the mutation to complete before returning a response.

POST /graph/v3/databases/{database}/tables/{table}/multi-edges/sync
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathdatabaseRequiredTarget database name
PathtableRequiredTarget table name
QuerylockOptional (default: true)Whether to acquire lock during mutation
BodymutationsRequiredList of mutation items

MultiEdgeBulkMutationRequest - Payload containing mutation items

MultiEdgeMutationResponse - Payload containing mutation results

ParameterValue
AuthorizationYOUR_API_KEY
databaseyour_database
tableyour_table
locktrue
Terminal window
# POST /graph/v3/databases/your_database/tables/your_table/multi-edges/sync
curl -X POST \
"http://ab.example.com/graph/v3/databases/your_database/tables/your_table/multi-edges/sync?lock=true" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mutations": [
{
"type": "DELETE",
"edge": {
"version": 3,
"id": "edge1",
"source": "source1",
"target": "target1",
"properties": {}
}
}
]
}'
{
"results": [
{
"id": "edge1",
"status": "DELETED",
"count": 1
}
]
}

The type field in mutation items specifies the operation to perform:

TypeDescription
INSERTCreate a new edge or update an existing edge with a new version
UPDATEUpdate properties of an existing edge
DELETEDelete an edge (marks it as deleted)

The lock parameter controls whether to acquire a lock during mutation:

  • true (default): Acquires a lock to prevent concurrent modifications. Ensures data consistency but may have higher latency.
  • false: Skips locking. Faster but may lead to race conditions if multiple mutations target the same edge simultaneously.

Note: It is recommended to use lock=true in production environments to ensure data consistency.

Edge mutation request payload.

data class EdgeBulkMutationRequest(
val mutations: List<MutationItem>, // List of mutation items
) {
data class MutationItem(
val type: EventType, // Event type (INSERT, UPDATE, DELETE)
val edge: Edge, // Edge data
)
}

Multi-edge mutation request payload.

data class MultiEdgeBulkMutationRequest(
val mutations: List<MutationItem>, // List of mutation items
) {
data class MutationItem(
val type: EventType, // Event type (INSERT, UPDATE, DELETE)
val edge: MultiEdge, // Multi-edge data
)
}

Edge mutation response payload.

data class EdgeMutationResponse(
val results: List<Item>, // List of mutation results
) {
data class Item(
val source: Any, // Source node ID
val target: Any, // Target node ID
val status: String, // Mutation status (e.g., CREATED, UPDATED, DELETED)
val count: Int, // Number of edges affected
)
}

Multi-edge mutation response payload.

data class MultiEdgeMutationResponse(
val results: List<Item>, // List of mutation results
) {
data class Item(
val id: Any, // Edge ID
val status: String, // Mutation status (e.g., CREATED, UPDATED, DELETED)
val count: Int, // Number of edges affected
)
}

Individual edge information for mutation.

data class Edge(
val version: Long, // Edge version
val source: Any, // Source node ID
val target: Any, // Target node ID
val properties: Map<String, Any?>, // Edge properties
)

Individual multi-edge information for mutation.

data class MultiEdge(
val version: Long, // Edge version
val id: Any, // Edge ID
val source: Any? = null, // Source node ID (optional)
val target: Any? = null, // Target node ID (optional)
val properties: Map<String, Any?>, // Edge properties
)