Create a new Neo4j graph database project from a hierarchical JSON schema.
⚠️ GRAPH SCHEMA FORMAT — READ BEFORE CREATING:
Graph schemas define nodes (entities) and relationships, NOT flat database tables.
Each field is a dict with "type" and optional "required": true (defaults to false).
SCHEMA STRUCTURE:
{
"nodes": {
"EntityName": {
"description": "What this entity represents",
"flat_labels": ["AdditionalLabel"],
"schema": {
"field_name": {"type": "string", "required": true},
"other_field": {"type": "integer"}
}
}
},
"relationships": {
"RELATIONSHIP_TYPE": {
"from": "EntityName",
"to": "OtherEntity",
"cardinality": "MANY_TO_MANY",
"data_schema": {
"field_name": {"type": "date"}
}
}
}
}
FIELD TYPES: string, integer, float, boolean, date, json
CARDINALITY OPTIONS: ONE_TO_ONE, ONE_TO_MANY, MANY_TO_ONE, MANY_TO_MANY
HIERARCHICAL NODES: nest an entity inside its parent entity (beside "description", "flat_labels"
and "schema") to create a type hierarchy; the child inherits the parent's labels:
"Animal": {"description": "...", "schema": {...}, "Dog": {"description": "...", "schema": {...}}}
RULES:
1. "nodes" key is REQUIRED — must contain at least one entity
2. Each entity needs "description" and "schema" with field definitions
3. Each field is {"type": "...", "required": true/false} — required defaults to false
4. Relationship "from"/"to" must reference defined node names
5. Relationship types should be UPPER_SNAKE_CASE
6. Entity names should be PascalCase
7. Automatic fields (id, created_at, updated_at) are NOT needed
WORKFLOW:
1. get_graph_template_schemas FIRST to see valid examples
2. create_graph_project with a cluster_id from list_clusters
3. Poll get_job_status with the returned job_id (2-5 minutes) While RationalBloks is being updated, the call is refused with 'RationalBloks is being updated': call it again in a few minutes.