Mutation API Reference
This API provides mutation operations for edges.
Note: Authentication is not yet implemented. The
Authorizationheader is reserved for future use.
For conceptual understanding, see Mutation.
1. Edge Mutation
Section titled “1. Edge Mutation”Mutate edges between source nodes and target nodes.
Endpoint
Section titled “Endpoint”POST /graph/v3/databases/{database}/tables/{table}/edgesParameters
Section titled “Parameters”| Location | Parameter | Required | Description |
|---|---|---|---|
| Header | Authorization | Optional | Authentication key (reserved for future use) |
| Path | database | Required | Target database name |
| Path | table | Required | Target table name |
| Query | lock | Optional (default: true) | Whether to acquire lock during mutation |
| Body | mutations | Required | List of mutation items |
Request Body
Section titled “Request Body”EdgeBulkMutationRequest - Payload containing mutation items
Response Type
Section titled “Response Type”EdgeMutationResponse - Payload containing mutation results
Request Example
Section titled “Request Example”| Parameter | Value |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/edgescurl -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" } } } ] }'Response Example
Section titled “Response Example”{ "results": [ { "source": "source1", "target": "target1", "status": "CREATED", "count": 1 } ]}2. Edge Mutation (Sync)
Section titled “2. Edge Mutation (Sync)”Mutate edges synchronously. This endpoint waits for the mutation to complete before returning a response.
Endpoint
Section titled “Endpoint”POST /graph/v3/databases/{database}/tables/{table}/edges/syncParameters
Section titled “Parameters”| Location | Parameter | Required | Description |
|---|---|---|---|
| Header | Authorization | Optional | Authentication key (reserved for future use) |
| Path | database | Required | Target database name |
| Path | table | Required | Target table name |
| Query | lock | Optional (default: true) | Whether to acquire lock during mutation |
| Body | mutations | Required | List of mutation items |
Request Body
Section titled “Request Body”EdgeBulkMutationRequest - Payload containing mutation items
Response Type
Section titled “Response Type”EdgeMutationResponse - Payload containing mutation results
Request Example
Section titled “Request Example”| Parameter | Value |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/edges/synccurl -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" } } } ] }'Response Example
Section titled “Response Example”{ "results": [ { "source": "source1", "target": "target1", "status": "UPDATED", "count": 1 } ]}3. Multi-Edge Mutation
Section titled “3. Multi-Edge Mutation”Mutate multi-edges identified by edge IDs.
Endpoint
Section titled “Endpoint”POST /graph/v3/databases/{database}/tables/{table}/multi-edgesParameters
Section titled “Parameters”| Location | Parameter | Required | Description |
|---|---|---|---|
| Header | Authorization | Optional | Authentication key (reserved for future use) |
| Path | database | Required | Target database name |
| Path | table | Required | Target table name |
| Query | lock | Optional (default: true) | Whether to acquire lock during mutation |
| Body | mutations | Required | List of mutation items |
Request Body
Section titled “Request Body”MultiEdgeBulkMutationRequest - Payload containing mutation items
Response Type
Section titled “Response Type”MultiEdgeMutationResponse - Payload containing mutation results
Request Example
Section titled “Request Example”| Parameter | Value |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/multi-edgescurl -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" } } } ] }'Response Example
Section titled “Response Example”{ "results": [ { "id": "edge1", "status": "CREATED", "count": 1 } ]}4. Multi-Edge Mutation (Sync)
Section titled “4. Multi-Edge Mutation (Sync)”Mutate multi-edges synchronously. This endpoint waits for the mutation to complete before returning a response.
Endpoint
Section titled “Endpoint”POST /graph/v3/databases/{database}/tables/{table}/multi-edges/syncParameters
Section titled “Parameters”| Location | Parameter | Required | Description |
|---|---|---|---|
| Header | Authorization | Optional | Authentication key (reserved for future use) |
| Path | database | Required | Target database name |
| Path | table | Required | Target table name |
| Query | lock | Optional (default: true) | Whether to acquire lock during mutation |
| Body | mutations | Required | List of mutation items |
Request Body
Section titled “Request Body”MultiEdgeBulkMutationRequest - Payload containing mutation items
Response Type
Section titled “Response Type”MultiEdgeMutationResponse - Payload containing mutation results
Request Example
Section titled “Request Example”| Parameter | Value |
|---|---|
| Authorization | YOUR_API_KEY |
| database | your_database |
| table | your_table |
| lock | true |
# POST /graph/v3/databases/your_database/tables/your_table/multi-edges/synccurl -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": {} } } ] }'Response Example
Section titled “Response Example”{ "results": [ { "id": "edge1", "status": "DELETED", "count": 1 } ]}Event Types
Section titled “Event Types”The type field in mutation items specifies the operation to perform:
| Type | Description |
|---|---|
INSERT | Create a new edge or update an existing edge with a new version |
UPDATE | Update properties of an existing edge |
DELETE | Delete an edge (marks it as deleted) |
Lock Parameter
Section titled “Lock Parameter”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.
Data Model
Section titled “Data Model”EdgeBulkMutationRequest
Section titled “EdgeBulkMutationRequest”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 )}MultiEdgeBulkMutationRequest
Section titled “MultiEdgeBulkMutationRequest”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 )}EdgeMutationResponse
Section titled “EdgeMutationResponse”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 )}MultiEdgeMutationResponse
Section titled “MultiEdgeMutationResponse”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)MultiEdge
Section titled “MultiEdge”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)