From 1b722b2716c984d229fd0e44d6f8c99f55d427e1 Mon Sep 17 00:00:00 2001
From: Michael Graham <38390185+michaeldgraham@users.noreply.github.com>
Date: Wed, 30 Sep 2020 14:55:42 -0700
Subject: [PATCH 1/3] initial documentation comments for generated api

---
 src/augment/ast.js                            |    18 +-
 src/augment/fields.js                         |    11 +-
 src/augment/types/node/mutation.js            |    37 +-
 src/augment/types/node/query.js               |    13 +-
 src/augment/types/relationship/mutation.js    |    67 +-
 src/augment/types/relationship/query.js       |   115 +-
 .../types/relationship/relationship.js        |     3 +-
 src/augment/types/spatial.js                  |     2 +-
 src/augment/types/temporal.js                 |     2 +-
 src/augment/types/types.js                    |   148 +-
 test/unit/augmentSchemaTest.test.js           | 10142 ++++++++--------
 test/unit/configTest.test.js                  |     6 +
 12 files changed, 5612 insertions(+), 4952 deletions(-)

diff --git a/src/augment/ast.js b/src/augment/ast.js
index a61e23fa..8b08e05a 100644
--- a/src/augment/ast.js
+++ b/src/augment/ast.js
@@ -192,11 +192,19 @@ export const buildDirectiveDefinition = ({
   };
 };
 
-export const buildDescription = ({ value, block = false }) => ({
-  kind: Kind.STRING,
-  value,
-  block
-});
+export const buildDescription = ({ value, block = false, config = {} }) => {
+  // If boolean and not false, then default is to generate documentation
+  if (
+    typeof config.documentation !== 'boolean' ||
+    config.documentation !== false
+  ) {
+    return {
+      kind: Kind.STRING,
+      value,
+      block
+    };
+  }
+};
 
 export const buildSelectionSet = ({ selections = [] }) => {
   return {
diff --git a/src/augment/fields.js b/src/augment/fields.js
index bd9f630e..a2a83f15 100644
--- a/src/augment/fields.js
+++ b/src/augment/fields.js
@@ -6,7 +6,7 @@ import {
   OperationType
 } from './types/types';
 import { OrderingArgument, buildPropertyOrderingValues } from './input-values';
-import { buildField, buildName, buildNamedType } from './ast';
+import { buildField, buildName, buildNamedType, buildDescription } from './ast';
 
 /**
  * The name of the Neo4j system ID field
@@ -194,7 +194,8 @@ export const buildNeo4jSystemIDField = ({
   typeName,
   propertyOutputFields,
   nodeInputTypeMap,
-  config
+  config,
+  isRelationship = false
 }) => {
   const queryTypeNameLower = OperationType.QUERY.toLowerCase();
   if (shouldAugmentType(config, queryTypeNameLower, typeName)) {
@@ -207,10 +208,16 @@ export const buildNeo4jSystemIDField = ({
     const systemIDIndex = propertyOutputFields.findIndex(
       e => e.name.value === Neo4jSystemIDField
     );
+    let entityDescription = 'node';
+    if (isRelationship) entityDescription = 'relationship';
     const systemIDField = buildField({
       name: buildName({ name: neo4jInternalIDConfig.name }),
       type: buildNamedType({
         name: GraphQLString.name
+      }),
+      description: buildDescription({
+        value: `Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this ${entityDescription}.`,
+        config
       })
     });
     if (systemIDIndex >= 0) {
diff --git a/src/augment/types/node/mutation.js b/src/augment/types/node/mutation.js
index 3afee062..3a9fdbbd 100644
--- a/src/augment/types/node/mutation.js
+++ b/src/augment/types/node/mutation.js
@@ -3,7 +3,8 @@ import {
   buildField,
   buildName,
   buildNamedType,
-  buildInputValue
+  buildInputValue,
+  buildDescription
 } from '../../ast';
 import {
   DirectiveDefinition,
@@ -32,6 +33,9 @@ const NodeMutation = {
   MERGE: 'Merge'
 };
 
+const GRANDSTACK_DOCS = `https://grandstack.io/docs`;
+const GRANDSTACK_DOCS_SCHEMA_AUGMENTATION = `${GRANDSTACK_DOCS}/graphql-schema-generation-augmentation`;
+
 /**
  * Given the results of augmentNodeTypeFields, builds or augments
  * the AST definitions of the Mutation operation fields and any
@@ -84,7 +88,7 @@ export const augmentNodeMutationAPI = ({
  */
 const buildNodeMutationField = ({
   mutationType,
-  mutationAction,
+  mutationAction = '',
   primaryKey,
   typeName,
   propertyInputValues,
@@ -106,7 +110,7 @@ const buildNodeMutationField = ({
       name: typeName
     })
   ) {
-    const mutationField = {
+    const mutationConfig = {
       name: buildName({ name: mutationName }),
       args: buildNodeMutationArguments({
         operationName: mutationAction,
@@ -122,21 +126,38 @@ const buildNodeMutationField = ({
         config
       })
     };
+    let mutationField = undefined;
+    let mutationDescriptionUrl = '';
     if (mutationAction === NodeMutation.CREATE) {
-      mutationFields.push(buildField(mutationField));
+      mutationField = mutationConfig;
+      mutationDescriptionUrl =
+        '[creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes)';
     } else if (mutationAction === NodeMutation.UPDATE) {
-      if (primaryKey && mutationField.args.length > 1) {
-        mutationFields.push(buildField(mutationField));
+      if (primaryKey && mutationConfig.args.length > 1) {
+        mutationField = mutationConfig;
+        mutationDescriptionUrl =
+          '[updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property)';
       }
     } else if (mutationAction === NodeMutation.MERGE) {
       if (primaryKey) {
-        mutationFields.push(buildField(mutationField));
+        mutationField = mutationConfig;
+        mutationDescriptionUrl =
+          '[merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived)';
       }
     } else if (mutationAction === NodeMutation.DELETE) {
       if (primaryKey) {
-        mutationFields.push(buildField(mutationField));
+        mutationField = mutationConfig;
+        mutationDescriptionUrl =
+          '[deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node)';
       }
     }
+    if (mutationField) {
+      mutationField.description = buildDescription({
+        value: `[Generated mutation](${GRANDSTACK_DOCS_SCHEMA_AUGMENTATION}/#${mutationAction.toLowerCase()}) for ${mutationDescriptionUrl} a ${typeName} node.`,
+        config
+      });
+      mutationFields.push(buildField(mutationField));
+    }
     operationTypeMap[OperationType.MUTATION].fields = mutationFields;
   }
   return operationTypeMap;
diff --git a/src/augment/types/node/query.js b/src/augment/types/node/query.js
index e46d7c71..4499e00c 100644
--- a/src/augment/types/node/query.js
+++ b/src/augment/types/node/query.js
@@ -4,7 +4,8 @@ import {
   buildField,
   buildInputValue,
   buildName,
-  buildNamedType
+  buildNamedType,
+  buildDescription
 } from '../../ast';
 import {
   DirectiveDefinition,
@@ -18,8 +19,7 @@ import {
   getFieldDefinition,
   getTypeExtensionFieldDefinition,
   isNeo4jIDField,
-  Neo4jSystemIDField,
-  isListTypeField
+  Neo4jSystemIDField
 } from '../../fields';
 import {
   FilteringArgument,
@@ -40,6 +40,9 @@ const NodeQueryArgument = {
   ...FilteringArgument
 };
 
+const GRANDSTACK_DOCS = `https://grandstack.io/docs`;
+const GRANDSTACK_DOCS_GENERATED_QUERIES = `${GRANDSTACK_DOCS}/graphql-schema-generation-augmentation#generated-queries`;
+
 /**
  * Given the results of augmentNodeTypeFields, builds or augments
  * the AST definition of the Query operation field and any
@@ -190,6 +193,10 @@ const buildNodeQueryField = ({
         directives: buildNodeQueryDirectives({
           typeName,
           config
+        }),
+        description: buildDescription({
+          value: `[Generated query](${GRANDSTACK_DOCS_GENERATED_QUERIES}) for ${typeName} type nodes.`,
+          config
         })
       })
     );
diff --git a/src/augment/types/relationship/mutation.js b/src/augment/types/relationship/mutation.js
index dcf4afce..3336e3d7 100644
--- a/src/augment/types/relationship/mutation.js
+++ b/src/augment/types/relationship/mutation.js
@@ -1,5 +1,4 @@
 import { RelationshipDirectionField } from './relationship';
-import { buildNodeOutputFields } from './query';
 import { shouldAugmentRelationshipField } from '../../augment';
 import { OperationType } from '../../types/types';
 import {
@@ -23,7 +22,8 @@ import {
   buildNamedType,
   buildField,
   buildObjectType,
-  buildInputObjectType
+  buildInputObjectType,
+  buildDescription
 } from '../../ast';
 import { getPrimaryKey } from '../node/selection';
 import { isExternalTypeExtension } from '../../../federation';
@@ -40,6 +40,10 @@ const RelationshipMutation = {
   MERGE: 'Merge'
 };
 
+const GRANDSTACK_DOCS = `https://grandstack.io/docs`;
+const GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY = `${GRANDSTACK_DOCS}/graphql-relationship-types`;
+const GRANDSTACK_DOCS_SCHEMA_AUGMENTATION = `${GRANDSTACK_DOCS}/graphql-schema-generation-augmentation`;
+
 /**
  * Given the results of augmentRelationshipTypeFields, builds or
  * augments the AST definitions of the Mutation operation fields
@@ -242,7 +246,8 @@ const buildRelationshipMutationAPI = ({
       relationshipName,
       fromType,
       toType,
-      generatedTypeMap
+      generatedTypeMap,
+      config
     });
   }
   return [operationTypeMap, generatedTypeMap];
@@ -272,6 +277,28 @@ const buildRelationshipMutationField = ({
       propertyInputValues.length) ||
     mutationAction === RelationshipMutation.MERGE
   ) {
+    let cypherDocUrl = '';
+    let grandstackDocUrl = '';
+    if (mutationAction === RelationshipMutation.CREATE) {
+      cypherDocUrl =
+        '[creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships)';
+      grandstackDocUrl = '#add--remove-relationship';
+    }
+    if (mutationAction === RelationshipMutation.DELETE) {
+      cypherDocUrl =
+        '[deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only)';
+      grandstackDocUrl = '#add--remove-relationship';
+    }
+    if (mutationAction === RelationshipMutation.UPDATE) {
+      cypherDocUrl =
+        '[updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property)';
+      grandstackDocUrl = '#update-relationship';
+    }
+    if (mutationAction === RelationshipMutation.MERGE) {
+      cypherDocUrl =
+        '[merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships)';
+      grandstackDocUrl = '#merge-relationship';
+    }
     operationTypeMap[OperationType.MUTATION].fields.push(
       buildField({
         name: buildName({
@@ -293,6 +320,10 @@ const buildRelationshipMutationField = ({
           fromType,
           toType,
           config
+        }),
+        description: buildDescription({
+          value: `[Generated mutation](${GRANDSTACK_DOCS_SCHEMA_AUGMENTATION}/#${grandstackDocUrl.toLowerCase()}) for ${cypherDocUrl} the ${relationshipName} relationship.`,
+          config
         })
       })
     );
@@ -444,7 +475,8 @@ const buildRelationshipMutationOutputType = ({
   relationshipName,
   fromType,
   toType,
-  generatedTypeMap
+  generatedTypeMap,
+  config
 }) => {
   if (
     mutationAction === RelationshipMutation.CREATE ||
@@ -458,7 +490,32 @@ const buildRelationshipMutationOutputType = ({
       fromType,
       toType
     });
-    let fields = buildNodeOutputFields({ fromType, toType });
+    let fields = [
+      buildField({
+        name: buildName({
+          name: RelationshipDirectionField.FROM
+        }),
+        type: buildNamedType({
+          name: fromType
+        }),
+        description: buildDescription({
+          value: `Field for the ${fromType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is coming from.`,
+          config
+        })
+      }),
+      buildField({
+        name: buildName({
+          name: RelationshipDirectionField.TO
+        }),
+        type: buildNamedType({
+          name: toType
+        }),
+        description: buildDescription({
+          value: `Field for the ${toType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is going to.`,
+          config
+        })
+      })
+    ];
     if (
       mutationAction === RelationshipMutation.CREATE ||
       mutationAction === RelationshipMutation.UPDATE ||
diff --git a/src/augment/types/relationship/query.js b/src/augment/types/relationship/query.js
index 0482a401..5c7676dc 100644
--- a/src/augment/types/relationship/query.js
+++ b/src/augment/types/relationship/query.js
@@ -18,10 +18,14 @@ import {
   buildName,
   buildNamedType,
   buildObjectType,
-  buildInputValue
+  buildInputValue,
+  buildDescription
 } from '../../ast';
 import { isExternalTypeExtension } from '../../../federation';
 
+const GRANDSTACK_DOCS = `https://grandstack.io/docs`;
+const GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY = `${GRANDSTACK_DOCS}/graphql-relationship-types`;
+
 /**
  * An enum describing which arguments are implemented for
  * relationship type fields in the Query API
@@ -68,7 +72,7 @@ export const augmentRelationshipQueryAPI = ({
       typeExtensionDefinitionMap
     });
     if (isImplementedField) typeName = definingType;
-    const relatedType = decideRelatedType({
+    const [relatedType, relationDirection] = decideRelatedType({
       typeName,
       definition,
       fromType,
@@ -87,8 +91,10 @@ export const augmentRelationshipQueryAPI = ({
       generatedTypeMap,
       config,
       relationshipName,
+      relationDirection,
       fieldType,
-      propertyOutputFields
+      propertyOutputFields,
+      config
     });
     [
       fieldArguments,
@@ -167,7 +173,6 @@ const getTypeDefiningField = ({
  * for the given field of the given relationship type
  */
 const augmentRelationshipTypeFieldInput = ({
-  definition,
   field,
   typeName,
   relatedType,
@@ -295,8 +300,10 @@ const transformRelationshipTypeFieldOutput = ({
   typeDefinitionMap,
   generatedTypeMap,
   relationshipName,
+  relationDirection,
   fieldType,
-  propertyOutputFields
+  propertyOutputFields,
+  config
 }) => {
   let relationshipOutputName = `_${typeName}${fieldName[0].toUpperCase() +
     fieldName.substr(1)}`;
@@ -319,10 +326,12 @@ const transformRelationshipTypeFieldOutput = ({
     fieldArguments,
     relationshipOutputName,
     relationshipName,
+    relationDirection,
     relatedType,
     propertyOutputFields,
     typeDefinitionMap,
-    generatedTypeMap
+    generatedTypeMap,
+    config
   });
   return [fieldType, generatedTypeMap];
 };
@@ -376,41 +385,6 @@ export const buildRelationshipFilters = ({
   return filters;
 };
 
-/**
- * Builds the AST definitions for the incoming and outgoing node type
- * fields of the output object types generated for querying relationship
- * type fields
- */
-export const buildNodeOutputFields = ({
-  fromType,
-  toType,
-  args = [],
-  wrappers = {}
-}) => {
-  return [
-    buildField({
-      name: buildName({
-        name: RelationshipDirectionField.FROM
-      }),
-      args,
-      type: buildNamedType({
-        name: fromType,
-        wrappers
-      })
-    }),
-    buildField({
-      name: buildName({
-        name: RelationshipDirectionField.TO
-      }),
-      args,
-      type: buildNamedType({
-        name: toType,
-        wrappers
-      })
-    })
-  ];
-};
-
 /**
  * Builds the AST definitions for the object types generated
  * for querying relationship type fields on node types
@@ -424,9 +398,11 @@ const buildRelationshipFieldOutputTypes = ({
   relationshipOutputName,
   relationshipName,
   relatedType,
+  relationDirection,
   propertyOutputFields,
   typeDefinitionMap,
-  generatedTypeMap
+  generatedTypeMap,
+  config
 }) => {
   const relationTypeDirective = buildRelationDirective({
     relationshipName,
@@ -442,19 +418,50 @@ const buildRelationshipFieldOutputTypes = ({
       typeDefinitionMap
     });
     const reflexiveOutputName = `${relationshipOutputName}Directions`;
-    generatedTypeMap[reflexiveOutputName] = buildObjectType({
-      name: buildName({ name: reflexiveOutputName }),
-      fields: buildNodeOutputFields({
-        fromType: relationshipOutputName,
-        toType: relationshipOutputName,
+    const nodeOutputFields = [
+      buildField({
+        name: buildName({
+          name: RelationshipDirectionField.FROM
+        }),
         args: fieldArguments,
-        wrappers: {
-          [TypeWrappers.LIST_TYPE]: true
-        }
+        type: buildNamedType({
+          name: relationshipOutputName,
+          wrappers: {
+            [TypeWrappers.LIST_TYPE]: true
+          }
+        }),
+        description: buildDescription({
+          value: `Field for the ${fromType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is coming from.`,
+          config
+        })
       }),
+      buildField({
+        name: buildName({
+          name: RelationshipDirectionField.TO
+        }),
+        args: fieldArguments,
+        type: buildNamedType({
+          name: relationshipOutputName,
+          wrappers: {
+            [TypeWrappers.LIST_TYPE]: true
+          }
+        }),
+        description: buildDescription({
+          value: `Field for the ${toType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is going to.`,
+          config
+        })
+      })
+    ];
+    generatedTypeMap[reflexiveOutputName] = buildObjectType({
+      name: buildName({ name: reflexiveOutputName }),
+      fields: nodeOutputFields,
       directives: [relationTypeDirective]
     });
   }
+  let descriptionValue = `Field for the ${toType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is going to.`;
+  if (relationDirection === 'IN') {
+    descriptionValue = `Field for the ${fromType} node this ${relationshipName} [relationship](${GRANDSTACK_DOCS_RELATIONSHIP_TYPE_QUERY}) is coming from.`;
+  }
   generatedTypeMap[relationshipOutputName] = buildObjectType({
     name: buildName({ name: relationshipOutputName }),
     fields: [
@@ -463,6 +470,10 @@ const buildRelationshipFieldOutputTypes = ({
         name: buildName({ name: relatedType }),
         type: buildNamedType({
           name: relatedType
+        }),
+        description: buildDescription({
+          value: descriptionValue,
+          config
         })
       })
     ],
@@ -555,12 +566,14 @@ const buildNodeInputFields = ({ fromType, toType }) => {
  */
 const decideRelatedType = ({ typeName, fromType, toType }) => {
   let relatedType = toType;
+  let relationDirection = 'OUT';
   if (fromType !== toType) {
     // Interpret relationship direction
     if (typeName === toType) {
       // Is incoming relationship
       relatedType = fromType;
+      relationDirection = 'IN';
     }
   }
-  return relatedType;
+  return [relatedType, relationDirection];
 };
diff --git a/src/augment/types/relationship/relationship.js b/src/augment/types/relationship/relationship.js
index c5823420..979dfb12 100644
--- a/src/augment/types/relationship/relationship.js
+++ b/src/augment/types/relationship/relationship.js
@@ -246,7 +246,8 @@ const augmentRelationshipTypeFields = ({
     typeName,
     propertyOutputFields,
     nodeInputTypeMap: relationshipInputTypeMap,
-    config
+    config,
+    isRelationship: true
   });
   return [
     fromTypeName,
diff --git a/src/augment/types/spatial.js b/src/augment/types/spatial.js
index 2102be97..157375b7 100644
--- a/src/augment/types/spatial.js
+++ b/src/augment/types/spatial.js
@@ -71,7 +71,7 @@ export const augmentSpatialTypes = ({ typeMap, config = {} }) => {
   return buildNeo4jTypes({
     typeMap,
     neo4jTypes: SpatialType,
-    config: config.spatial
+    config
   });
 };
 
diff --git a/src/augment/types/temporal.js b/src/augment/types/temporal.js
index e2eff7c6..34635929 100644
--- a/src/augment/types/temporal.js
+++ b/src/augment/types/temporal.js
@@ -69,7 +69,7 @@ export const augmentTemporalTypes = ({ typeMap, config = {} }) => {
   return buildNeo4jTypes({
     typeMap,
     neo4jTypes: TemporalType,
-    config: config.temporal
+    config
   });
 };
 
diff --git a/src/augment/types/types.js b/src/augment/types/types.js
index 4a754c2b..446cb01d 100644
--- a/src/augment/types/types.js
+++ b/src/augment/types/types.js
@@ -21,7 +21,8 @@ import {
   buildObjectType,
   buildInputObjectType,
   buildInputValue,
-  buildField
+  buildField,
+  buildDescription
 } from '../ast';
 import {
   TemporalType,
@@ -35,7 +36,8 @@ import {
   isNeo4jTypeField,
   unwrapNamedType,
   getFieldDefinition,
-  isTemporalField
+  isTemporalField,
+  isSpatialField
 } from '../fields';
 import { augmentNodeType, augmentNodeTypeFields } from './node/node';
 import { RelationshipDirectionField } from '../types/relationship/relationship';
@@ -94,6 +96,9 @@ export const Neo4jDataType = {
   }
 };
 
+const CYPHER_MANUAL_CURRENT_FUNCTIONS = `https://neo4j.com/docs/cypher-manual/current/functions`;
+const GRANDSTACK_DOCS = `https://grandstack.io/docs`;
+
 /**
  * A predicate function for identifying a Document AST resulting
  * from the parsing of SDL type definitions
@@ -409,42 +414,42 @@ export const buildNeo4jTypes = ({
 }) => {
   Object.values(neo4jTypes).forEach(typeName => {
     const typeNameLower = typeName.toLowerCase();
-    if (config[typeNameLower] === true) {
-      const fields = buildNeo4jTypeFields({ typeName });
-      let inputFields = [];
-      let outputFields = [];
-      fields.forEach(([fieldName, fieldType]) => {
-        const fieldNameLower = fieldName.toLowerCase();
-        const fieldConfig = {
-          name: buildName({ name: fieldNameLower }),
-          type: buildNamedType({
-            name: fieldType
-          })
-        };
-        inputFields.push(buildInputValue(fieldConfig));
-        outputFields.push(buildField(fieldConfig));
+    if (
+      config.temporal[typeNameLower] === true ||
+      config.spatial[typeNameLower] === true
+    ) {
+      const [inputFields, outputFields] = buildNeo4jTypeFields({
+        typeName,
+        config
       });
-      const formattedFieldConfig = {
-        name: buildName({
-          name: Neo4jTypeFormatted.FORMATTED
-        }),
-        type: buildNamedType({
-          name: GraphQLString.name
-        })
-      };
-      if (isTemporalField({ type: typeName })) {
-        inputFields.push(buildInputValue(formattedFieldConfig));
-        outputFields.push(buildField(formattedFieldConfig));
+      // decide some categorical labels used in dynamically generated descriptions
+      let cypherCategory = 'Temporal';
+      let usingOutputDocUrl = `${GRANDSTACK_DOCS}/graphql-temporal-types-datetime#using-temporal-fields-in-queries`;
+      let usingInputDocUrl = `${GRANDSTACK_DOCS}/graphql-temporal-types-datetime/#temporal-query-arguments`;
+      if (isSpatialField({ type: typeName })) {
+        cypherCategory = 'Spatial';
+        usingOutputDocUrl = `${GRANDSTACK_DOCS}/graphql-spatial-types#using-point-in-queries`;
+        usingInputDocUrl = `${GRANDSTACK_DOCS}/graphql-spatial-types/#point-query-arguments`;
       }
-      const objectTypeName = `${Neo4jTypeName}${typeName}`;
-      const inputTypeName = `${objectTypeName}Input`;
-      typeMap[objectTypeName] = buildObjectType({
-        name: buildName({ name: objectTypeName }),
-        fields: outputFields
-      });
+      const neo4jTypeName = `${Neo4jTypeName}${typeName}`;
+      // input object type
+      const inputTypeName = `${neo4jTypeName}Input`;
       typeMap[inputTypeName] = buildInputObjectType({
         name: buildName({ name: inputTypeName }),
-        fields: inputFields
+        fields: inputFields,
+        description: buildDescription({
+          value: `Generated ${typeName} input object for Neo4j [${cypherCategory} field arguments](${usingInputDocUrl}).`,
+          config
+        })
+      });
+      // output object type
+      typeMap[neo4jTypeName] = buildObjectType({
+        name: buildName({ name: neo4jTypeName }),
+        fields: outputFields,
+        description: buildDescription({
+          value: `Generated ${typeName} object type for Neo4j [${cypherCategory} fields](${usingOutputDocUrl}).`,
+          config
+        })
       });
     }
   });
@@ -456,32 +461,89 @@ export const buildNeo4jTypes = ({
  * definitions used by a given Neo4j type, built into AST by
  * buildNeo4jTypes, then used in buildNeo4jType
  */
-const buildNeo4jTypeFields = ({ typeName = '' }) => {
-  let fields = [];
+const buildNeo4jTypeFields = ({ typeName = '', config }) => {
+  let fieldConfigs = [];
   if (typeName === TemporalType.DATE) {
-    fields = Object.entries(Neo4jDate);
+    fieldConfigs = Object.entries(Neo4jDate);
   } else if (typeName === TemporalType.TIME) {
-    fields = Object.entries(Neo4jTime);
+    fieldConfigs = Object.entries(Neo4jTime);
   } else if (typeName === TemporalType.LOCALTIME) {
-    fields = Object.entries({
+    fieldConfigs = Object.entries({
       ...Neo4jTime
     }).filter(([name]) => name !== Neo4jTimeField.TIMEZONE);
   } else if (typeName === TemporalType.DATETIME) {
-    fields = Object.entries({
+    fieldConfigs = Object.entries({
       ...Neo4jDate,
       ...Neo4jTime
     });
   } else if (typeName === TemporalType.LOCALDATETIME) {
-    fields = Object.entries({
+    fieldConfigs = Object.entries({
       ...Neo4jDate,
       ...Neo4jTime
     }).filter(([name]) => name !== Neo4jTimeField.TIMEZONE);
   } else if (typeName === SpatialType.POINT) {
-    fields = Object.entries({
+    fieldConfigs = Object.entries({
       ...Neo4jPoint
     });
   }
-  return fields;
+  fieldConfigs = fieldConfigs.map(([fieldName, fieldType]) => {
+    return {
+      name: buildName({ name: fieldName }),
+      type: buildNamedType({
+        name: fieldType
+      })
+    };
+  });
+  let inputFields = fieldConfigs.map(config => buildInputValue(config));
+  let outputFields = fieldConfigs.map(config => buildField(config));
+  [inputFields, outputFields] = augmentNeo4jTypeFields({
+    typeName,
+    inputFields,
+    outputFields,
+    config
+  });
+  return [inputFields, outputFields];
+};
+
+const augmentNeo4jTypeFields = ({
+  typeName = '',
+  inputFields = [],
+  outputFields = [],
+  config
+}) => {
+  let neo4jTypeName = 'Temporal';
+  let usingOutputDocUrl = `${GRANDSTACK_DOCS}/graphql-temporal-types-datetime#using-temporal-fields-in-queries`;
+  let usingInputDocUrl = `${GRANDSTACK_DOCS}/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations`;
+  if (isTemporalField({ type: typeName })) {
+    const typeNameLow = typeName.toLowerCase();
+    const name = buildName({ name: Neo4jTypeFormatted.FORMATTED });
+    const type = buildNamedType({ name: GraphQLString.name });
+    // input value definitions
+    const inputDescription = buildDescription({
+      value: `Creates a Neo4j [${neo4jTypeName}](${usingInputDocUrl}) ${typeName} value using a [String format](${CYPHER_MANUAL_CURRENT_FUNCTIONS}/temporal/${typeNameLow}/#functions-${typeNameLow}-create-string).`,
+      config
+    });
+    inputFields.push(
+      buildInputValue({
+        name,
+        type,
+        description: inputDescription
+      })
+    );
+    // output field definitions
+    const outputDescription = buildDescription({
+      value: `Outputs a Neo4j [${neo4jTypeName}](${usingOutputDocUrl}) ${typeName} value as a String type by using the [toString](${CYPHER_MANUAL_CURRENT_FUNCTIONS}/string/#functions-tostring) Cypher function.`,
+      config
+    });
+    outputFields.push(
+      buildField({
+        name,
+        type,
+        description: outputDescription
+      })
+    );
+  }
+  return [inputFields, outputFields];
 };
 
 /**
diff --git a/test/unit/augmentSchemaTest.test.js b/test/unit/augmentSchemaTest.test.js
index e4cd0383..860fd611 100644
--- a/test/unit/augmentSchemaTest.test.js
+++ b/test/unit/augmentSchemaTest.test.js
@@ -20,378 +20,373 @@ test.cb('Test augmented schema', t => {
   });
 
   const expectedSchema = /* GraphQL */ `
-    """
-    Directive definition
-    block
-    description
-    """
-    directive @cypher(statement: String) on FIELD_DEFINITION
+    type _AddMovieExtensionNodePayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @relation(
-      name: String
-      direction: _RelationDirections
-      from: String
-      to: String
-    ) on FIELD_DEFINITION | OBJECT
+    type _RemoveMovieExtensionNodePayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @additionalLabels(labels: [String]) on OBJECT
+    type _MergeMovieExtensionNodePayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @MutationMeta(
-      relationship: String
-      from: String
-      to: String
-    ) on FIELD_DEFINITION
+    type _AddMovieGenresPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @neo4j_ignore on FIELD_DEFINITION
+    type _RemoveMovieGenresPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @id on FIELD_DEFINITION
+    type _MergeMovieGenresPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
 
-    directive @unique on FIELD_DEFINITION
+    type _AddMovieActorsPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
 
-    directive @index on FIELD_DEFINITION
+    type _RemoveMovieActorsPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
 
-    directive @isAuthenticated on OBJECT | FIELD_DEFINITION
+    type _MergeMovieActorsPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
 
-    directive @hasRole(roles: [Role]) on OBJECT | FIELD_DEFINITION
+    type _AddMovieFilmedInPayload
+      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
+      "Field for the Movie node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
+    }
 
-    directive @hasScope(scopes: [String]) on OBJECT | FIELD_DEFINITION
+    type _RemoveMovieFilmedInPayload
+      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
+      "Field for the Movie node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
+    }
 
-    "Query type line description"
-    type QueryA {
-      """
-      Query field
-      block
-      description
-      """
-      MoviesByYear(
-        year: Int
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie]
-      MoviesByYears(
-        year: [Int]
-        released: [_Neo4jDateTimeInput]
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie]
-      MovieById(movieId: ID!, filter: _MovieFilter): Movie
-      MovieBy_Id(_id: String!, filter: _MovieFilter): Movie
-      GenresBySubstring(
-        substring: String
-        first: Int
-        offset: Int
-        orderBy: [_GenreOrdering]
-      ): [Genre]
-        @cypher(
-          statement: "MATCH (g:Genre) WHERE toLower(g.name) CONTAINS toLower($substring) RETURN g"
-        )
-      "Object type query field line description"
-      State(
-        first: Int
-        offset: Int
-        orderBy: [_StateOrdering]
-        filter: _StateFilter
-      ): [State]
-      User(
-        userId: ID
-        name: String
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_UserOrdering]
-        filter: _UserFilter
-      ): [User]
-      Books(
-        first: Int
-        offset: Int
-        orderBy: [_BookOrdering]
-        filter: _BookFilter
-      ): [Book]
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS currentUserId"
-        )
-      computedBoolean: Boolean @cypher(statement: "RETURN true")
-      computedFloat: Float @cypher(statement: "RETURN 3.14")
-      computedInt: Int @cypher(statement: "RETURN 1")
-      computedIntList: [Int]
-        @cypher(statement: "UNWIND [1, 2, 3] AS intList RETURN intList")
-      computedStringList: [String]
-        @cypher(
-          statement: "UNWIND ['hello', 'world'] AS stringList RETURN stringList"
-        )
-      computedTemporal: _Neo4jDateTime
-        @cypher(
-          statement: "WITH datetime() AS now RETURN { year: now.year, month: now.month , day: now.day , hour: now.hour , minute: now.minute , second: now.second , millisecond: now.millisecond , microsecond: now.microsecond , nanosecond: now.nanosecond , timezone: now.timezone , formatted: toString(now) }"
-        )
-      computedSpatial: _Neo4jPoint
+    type _MergeMovieFilmedInPayload
+      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
+      "Field for the Movie node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
+    }
+
+    type _MovieRatings @relation(name: "RATED", from: "User", to: "Movie") {
+      currentUserId(strArg: String): String
         @cypher(
-          statement: "WITH point({ x: 10, y: 20, z: 15 }) AS instance RETURN { x: instance.x, y: instance.y, z: instance.z, crs: instance.crs }"
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
         )
-      computedObjectWithCypherParams: currentUserId
-        @cypher(statement: "RETURN { userId: $cypherParams.currentUserId }")
-      customWithArguments(strArg: String, strInputArg: strInput): String
-        @cypher(statement: "RETURN $strInputArg.strArg")
-      CasedType(
-        first: Int
-        offset: Int
-        orderBy: [_CasedTypeOrdering]
-        filter: _CasedTypeFilter
-      ): [CasedType]
-      "Interface type query field line description"
-      Camera(
-        type: String
-        first: Int
-        orderBy: [_CameraOrdering]
-        filter: _CameraFilter
-        offset: Int
-      ): [Camera]
-      Person(
-        userId: ID
-        name: String
-        extensionScalar: String
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-        filter: _PersonFilter
-      ): [Person]
-      InterfaceNoScalars(
-        orderBy: _InterfaceNoScalarsOrdering
-        first: Int
-        offset: Int
-        filter: _InterfaceNoScalarsFilter
-      ): [InterfaceNoScalars]
-      CustomCameras(
-        first: Int
-        offset: Int
-        orderBy: [_CameraOrdering]
-      ): [Camera] @cypher(statement: "MATCH (c:Camera) RETURN c")
-      CustomCamera: Camera @cypher(statement: "MATCH (c:Camera) RETURN c")
-      Movie(
-        _id: String
-        movieId: ID
-        title: String
-        someprefix_title_with_underscores: String
-        year: Int
-        released: _Neo4jDateTimeInput
-        plot: String
-        poster: String
-        imdbRating: Float
-        avgStars: Float
-        location: _Neo4jPointInput
-        locations: [_Neo4jPointInput]
-        years: [Int]
-        titles: [String]
-        imdbRatings: [Float]
-        releases: [_Neo4jDateTimeInput]
-        booleans: [Boolean]
-        enums: [BookGenre]
-        extensionScalar: String
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie] @hasScope(scopes: ["Movie: Read", "read:movie"])
-      Genre(
-        _id: String
-        name: String
-        first: Int
-        offset: Int
-        orderBy: [_GenreOrdering]
-        filter: _GenreFilter
-      ): [Genre] @hasScope(scopes: ["Genre: Read", "read:genre"])
-      Actor(
-        userId: ID
-        name: String
-        extensionScalar: String
-        datetimes: [_Neo4jDateTimeInput]
-        strings: [String]
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_ActorOrdering]
-        filter: _ActorFilter
-      ): [Actor] @hasScope(scopes: ["Actor: Read", "read:actor"])
-      Book(
-        genre: BookGenre
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_BookOrdering]
-        filter: _BookFilter
-      ): [Book] @hasScope(scopes: ["Book: Read", "read:book"])
-      TemporalNode(
-        datetime: _Neo4jDateTimeInput
-        name: String
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        localdatetimes: [_Neo4jLocalDateTimeInput]
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_TemporalNodeOrdering]
-        filter: _TemporalNodeFilter
-      ): [TemporalNode]
-        @hasScope(scopes: ["TemporalNode: Read", "read:temporalnode"])
-      SpatialNode(
-        id: ID
-        point: _Neo4jPointInput
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_SpatialNodeOrdering]
-        filter: _SpatialNodeFilter
-      ): [SpatialNode]
-        @hasScope(scopes: ["SpatialNode: Read", "read:spatialnode"])
-      OldCamera(
-        type: String
-        id: ID
-        make: String
-        weight: Int
-        smell: String
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_OldCameraOrdering]
-        filter: _OldCameraFilter
-      ): [OldCamera] @hasScope(scopes: ["OldCamera: Read", "read:oldcamera"])
-      NewCamera(
-        type: String
-        id: ID
-        make: String
-        weight: Int
-        features: [String]
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_NewCameraOrdering]
-        filter: _NewCameraFilter
-      ): [NewCamera] @hasScope(scopes: ["NewCamera: Read", "read:newcamera"])
-      CameraMan(
-        userId: ID
-        name: String
-        extensionScalar: String
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_CameraManOrdering]
-        filter: _CameraManFilter
-      ): [CameraMan] @hasScope(scopes: ["CameraMan: Read", "read:cameraman"])
-      UniqueNode(
-        string: String
-        id: ID
-        anotherId: ID
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_UniqueNodeOrdering]
-        filter: _UniqueNodeFilter
-      ): [UniqueNode] @hasScope(scopes: ["UniqueNode: Read", "read:uniquenode"])
-      UniqueStringNode(
-        id: ID
-        uniqueString: String
-        _id: String
-        first: Int
-        offset: Int
-        orderBy: [_UniqueStringNodeOrdering]
-        filter: _UniqueStringNodeFilter
-      ): [UniqueStringNode]
-        @hasScope(scopes: ["UniqueStringNode: Read", "read:uniquestringnode"])
-    }
-
-    extend type QueryA {
-      MovieSearch(first: Int, offset: Int): [MovieSearch]
-      computedMovieSearch(first: Int, offset: Int): [MovieSearch]
-        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      User: User
     }
 
-    input _Neo4jDateTimeInput {
-      year: Int
-      month: Int
-      day: Int
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      timezone: String
-      formatted: String
+    input _MovieRatedFilter {
+      AND: [_MovieRatedFilter!]
+      OR: [_MovieRatedFilter!]
+      rating: Int
+      rating_not: Int
+      rating_in: [Int!]
+      rating_not_in: [Int!]
+      rating_lt: Int
+      rating_lte: Int
+      rating_gt: Int
+      rating_gte: Int
+      ratings: [Int!]
+      ratings_not: [Int!]
+      ratings_lt: [Int!]
+      ratings_lte: [Int!]
+      ratings_gt: [Int!]
+      ratings_gte: [Int!]
+      time: _Neo4jTimeInput
+      time_not: _Neo4jTimeInput
+      time_in: [_Neo4jTimeInput!]
+      time_not_in: [_Neo4jTimeInput!]
+      time_lt: _Neo4jTimeInput
+      time_lte: _Neo4jTimeInput
+      time_gt: _Neo4jTimeInput
+      time_gte: _Neo4jTimeInput
+      date: _Neo4jDateInput
+      date_not: _Neo4jDateInput
+      date_in: [_Neo4jDateInput!]
+      date_not_in: [_Neo4jDateInput!]
+      date_lt: _Neo4jDateInput
+      date_lte: _Neo4jDateInput
+      date_gt: _Neo4jDateInput
+      date_gte: _Neo4jDateInput
+      datetime: _Neo4jDateTimeInput
+      datetime_not: _Neo4jDateTimeInput
+      datetime_in: [_Neo4jDateTimeInput!]
+      datetime_not_in: [_Neo4jDateTimeInput!]
+      datetime_lt: _Neo4jDateTimeInput
+      datetime_lte: _Neo4jDateTimeInput
+      datetime_gt: _Neo4jDateTimeInput
+      datetime_gte: _Neo4jDateTimeInput
+      localtime: _Neo4jLocalTimeInput
+      localtime_not: _Neo4jLocalTimeInput
+      localtime_in: [_Neo4jLocalTimeInput!]
+      localtime_not_in: [_Neo4jLocalTimeInput!]
+      localtime_lt: _Neo4jLocalTimeInput
+      localtime_lte: _Neo4jLocalTimeInput
+      localtime_gt: _Neo4jLocalTimeInput
+      localtime_gte: _Neo4jLocalTimeInput
+      localdatetime: _Neo4jLocalDateTimeInput
+      localdatetime_not: _Neo4jLocalDateTimeInput
+      localdatetime_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_lt: _Neo4jLocalDateTimeInput
+      localdatetime_lte: _Neo4jLocalDateTimeInput
+      localdatetime_gt: _Neo4jLocalDateTimeInput
+      localdatetime_gte: _Neo4jLocalDateTimeInput
+      datetimes: [_Neo4jDateTimeInput!]
+      datetimes_not: [_Neo4jDateTimeInput!]
+      datetimes_lt: [_Neo4jDateTimeInput!]
+      datetimes_lte: [_Neo4jDateTimeInput!]
+      datetimes_gt: [_Neo4jDateTimeInput!]
+      datetimes_gte: [_Neo4jDateTimeInput!]
+      location: _Neo4jPointInput
+      location_not: _Neo4jPointInput
+      location_distance: _Neo4jPointDistanceFilter
+      location_distance_lt: _Neo4jPointDistanceFilter
+      location_distance_lte: _Neo4jPointDistanceFilter
+      location_distance_gt: _Neo4jPointDistanceFilter
+      location_distance_gte: _Neo4jPointDistanceFilter
+      User: _UserFilter
     }
 
-    enum _MovieOrdering {
-      _id_asc
-      _id_desc
-      movieId_asc
-      movieId_desc
-      title_asc
-      title_desc
-      someprefix_title_with_underscores_asc
-      someprefix_title_with_underscores_desc
-      year_asc
-      year_desc
-      released_asc
-      released_desc
-      plot_asc
-      plot_desc
-      poster_asc
-      poster_desc
-      imdbRating_asc
-      imdbRating_desc
-      degree_asc
-      degree_desc
-      avgStars_asc
-      avgStars_desc
-      scaleRating_asc
-      scaleRating_desc
-      scaleRatingFloat_asc
-      scaleRatingFloat_desc
+    enum _RatedOrdering {
       currentUserId_asc
       currentUserId_desc
-      extensionScalar_asc
-      extensionScalar_desc
+      rating_asc
+      rating_desc
+      time_asc
+      time_desc
+      date_asc
+      date_desc
+      datetime_asc
+      datetime_desc
+      localtime_asc
+      localtime_desc
+      localdatetime_asc
+      localdatetime_desc
+      _id_asc
+      _id_desc
     }
 
-    input _MovieFilter {
-      AND: [_MovieFilter!]
-      OR: [_MovieFilter!]
-      movieId: ID
-      movieId_not: ID
-      movieId_in: [ID!]
-      movieId_not_in: [ID!]
-      movieId_contains: ID
-      movieId_not_contains: ID
-      movieId_starts_with: ID
-      movieId_not_starts_with: ID
-      movieId_ends_with: ID
-      movieId_not_ends_with: ID
-      title: String
-      title_not: String
-      title_in: [String!]
-      title_not_in: [String!]
-      title_contains: String
-      title_not_contains: String
-      title_starts_with: String
-      title_not_starts_with: String
-      title_ends_with: String
-      title_not_ends_with: String
-      someprefix_title_with_underscores: String
-      someprefix_title_with_underscores_not: String
-      someprefix_title_with_underscores_in: [String!]
-      someprefix_title_with_underscores_not_in: [String!]
-      someprefix_title_with_underscores_contains: String
-      someprefix_title_with_underscores_not_contains: String
-      someprefix_title_with_underscores_starts_with: String
-      someprefix_title_with_underscores_not_starts_with: String
-      someprefix_title_with_underscores_ends_with: String
-      someprefix_title_with_underscores_not_ends_with: String
+    input _RatedInput {
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTimeInput
+      date: _Neo4jDateInput
+      datetime: _Neo4jDateTimeInput
+      localtime: _Neo4jLocalTimeInput
+      localdatetime: _Neo4jLocalDateTimeInput
+      datetimes: [_Neo4jDateTimeInput]
+      location: _Neo4jPointInput
+    }
+
+    type _AddMovieRatingsPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _RemoveMovieRatingsPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
+
+    type _UpdateMovieRatingsPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _MergeMovieRatingsPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    input _MovieInput {
+      movieId: ID!
+    }
+
+    enum _MovieOrdering {
+      _id_asc
+      _id_desc
+      movieId_asc
+      movieId_desc
+      title_asc
+      title_desc
+      someprefix_title_with_underscores_asc
+      someprefix_title_with_underscores_desc
+      year_asc
+      year_desc
+      released_asc
+      released_desc
+      plot_asc
+      plot_desc
+      poster_asc
+      poster_desc
+      imdbRating_asc
+      imdbRating_desc
+      degree_asc
+      degree_desc
+      avgStars_asc
+      avgStars_desc
+      scaleRating_asc
+      scaleRating_desc
+      scaleRatingFloat_asc
+      scaleRatingFloat_desc
+      currentUserId_asc
+      currentUserId_desc
+      extensionScalar_asc
+      extensionScalar_desc
+    }
+
+    input _MovieFilter {
+      AND: [_MovieFilter!]
+      OR: [_MovieFilter!]
+      movieId: ID
+      movieId_not: ID
+      movieId_in: [ID!]
+      movieId_not_in: [ID!]
+      movieId_contains: ID
+      movieId_not_contains: ID
+      movieId_starts_with: ID
+      movieId_not_starts_with: ID
+      movieId_ends_with: ID
+      movieId_not_ends_with: ID
+      title: String
+      title_not: String
+      title_in: [String!]
+      title_not_in: [String!]
+      title_contains: String
+      title_not_contains: String
+      title_starts_with: String
+      title_not_starts_with: String
+      title_ends_with: String
+      title_not_ends_with: String
+      someprefix_title_with_underscores: String
+      someprefix_title_with_underscores_not: String
+      someprefix_title_with_underscores_in: [String!]
+      someprefix_title_with_underscores_not_in: [String!]
+      someprefix_title_with_underscores_contains: String
+      someprefix_title_with_underscores_not_contains: String
+      someprefix_title_with_underscores_starts_with: String
+      someprefix_title_with_underscores_not_starts_with: String
+      someprefix_title_with_underscores_ends_with: String
+      someprefix_title_with_underscores_not_ends_with: String
       year: Int
       year_not: Int
       year_in: [Int!]
@@ -544,185 +539,249 @@ test.cb('Test augmented schema', t => {
       extensionNode_every: _GenreFilter
     }
 
-    input _GenreFilter {
-      AND: [_GenreFilter!]
-      OR: [_GenreFilter!]
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
-      interfacedRelationshipType: _GenreInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_not: _GenreInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_in: [_GenreInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_not_in: [_GenreInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_some: _GenreInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_none: _GenreInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_single: _GenreInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_every: _GenreInterfacedRelationshipTypeFilter
-    }
-
-    input _GenreInterfacedRelationshipTypeFilter {
-      AND: [_GenreInterfacedRelationshipTypeFilter!]
-      OR: [_GenreInterfacedRelationshipTypeFilter!]
-      string: String
-      string_not: String
-      string_in: [String!]
-      string_not_in: [String!]
-      string_contains: String
-      string_not_contains: String
-      string_starts_with: String
-      string_not_starts_with: String
-      string_ends_with: String
-      string_not_ends_with: String
-      boolean: Boolean
-      boolean_not: Boolean
-      Person: _PersonFilter
-    }
-
-    input _InterfacedRelationshipTypeInput {
-      string: String!
-      boolean: Boolean
-    }
-
-    type _AddGenreInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
-    }
-
-    type _RemoveGenreInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-    }
-
-    type _UpdateGenreInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
-    }
-
-    type _MergeGenreInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
+    "Object type line description"
+    type Movie
+      @additionalLabels(
+        labels: ["u_<%= $cypherParams.userId %>", "newMovieLabel"]
       ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
-    }
-
-    input _ActorFilter {
-      AND: [_ActorFilter!]
-      OR: [_ActorFilter!]
-      userId: ID
-      userId_not: ID
-      userId_in: [ID!]
-      userId_not_in: [ID!]
-      userId_contains: ID
-      userId_not_contains: ID
-      userId_starts_with: ID
-      userId_not_starts_with: ID
-      userId_ends_with: ID
-      userId_not_ends_with: ID
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
-      movies: _MovieFilter
-      movies_not: _MovieFilter
-      movies_in: [_MovieFilter!]
-      movies_not_in: [_MovieFilter!]
-      movies_some: _MovieFilter
-      movies_none: _MovieFilter
-      movies_single: _MovieFilter
-      movies_every: _MovieFilter
-      knows: _PersonFilter
-      knows_not: _PersonFilter
-      knows_in: [_PersonFilter!]
-      knows_not_in: [_PersonFilter!]
-      knows_some: _PersonFilter
-      knows_none: _PersonFilter
-      knows_single: _PersonFilter
-      knows_every: _PersonFilter
-      extensionScalar: String
-      extensionScalar_not: String
-      extensionScalar_in: [String!]
-      extensionScalar_not_in: [String!]
-      extensionScalar_contains: String
-      extensionScalar_not_contains: String
-      extensionScalar_starts_with: String
-      extensionScalar_not_starts_with: String
-      extensionScalar_ends_with: String
-      extensionScalar_not_ends_with: String
-      datetimes: [_Neo4jDateTimeInput!]
-      datetimes_not: [_Neo4jDateTimeInput!]
-      datetimes_lt: [_Neo4jDateTimeInput!]
-      datetimes_lte: [_Neo4jDateTimeInput!]
-      datetimes_gt: [_Neo4jDateTimeInput!]
-      datetimes_gte: [_Neo4jDateTimeInput!]
-      strings: [String!]
-      strings_not: [String!]
-      strings_contains: [String!]
-      strings_not_contains: [String!]
-      strings_starts_with: [String!]
-      strings_not_starts_with: [String!]
-      strings_ends_with: [String!]
-      strings_not_ends_with: [String!]
-      interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_not_in: [_PersonInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_some: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_none: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_single: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_every: _PersonInterfacedRelationshipTypeFilter
-      reflexiveInterfacedRelationshipType: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_not: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
-      reflexiveInterfacedRelationshipType_not_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
-      reflexiveInterfacedRelationshipType_some: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-    }
-
-    input _StateFilter {
-      AND: [_StateFilter!]
-      OR: [_StateFilter!]
+      "Field line description"
+      movieId: ID! @id
+      """
+      Field
+      block
+      description
+      """
+      title: String @isAuthenticated
+      someprefix_title_with_underscores: String
+      year: Int
+      released: _Neo4jDateTime
+      plot: String
+      poster: String
+      imdbRating: Float
+      "@relation field line description"
+      genres(
+        first: Int
+        offset: Int
+        orderBy: [_GenreOrdering]
+        filter: _GenreFilter
+      ): [Genre] @relation(name: "IN_GENRE", direction: "OUT")
+      similar(
+        first: Int = 3
+        offset: Int = 0
+        orderBy: [_MovieOrdering]
+      ): [Movie]
+        @cypher(
+          statement: "WITH {this} AS this MATCH (this)--(:Genre)--(o:Movie) RETURN o"
+        )
+      mostSimilar: Movie @cypher(statement: "WITH {this} AS this RETURN this")
+      degree: Int
+        @cypher(statement: "WITH {this} AS this RETURN SIZE((this)--())")
+      actors(
+        first: Int = 3
+        offset: Int = 0
+        name: String
+        names: [String]
+        strings: [String]
+        datetimes: [_Neo4jDateTimeInput]
+        orderBy: [_ActorOrdering]
+        filter: _ActorFilter
+      ): [Actor] @relation(name: "ACTED_IN", direction: "IN")
+      avgStars: Float
+      filmedIn(filter: _StateFilter): State
+        @relation(name: "FILMED_IN", direction: "OUT")
+      location: _Neo4jPoint
+      locations: [_Neo4jPoint]
+      scaleRating(scale: Int = 3): Float
+        @cypher(statement: "WITH $this AS this RETURN $scale * this.imdbRating")
+      scaleRatingFloat(scale: Float = 1.5): Float
+        @cypher(statement: "WITH $this AS this RETURN $scale * this.imdbRating")
+      actorMovies(first: Int, offset: Int, orderBy: [_MovieOrdering]): [Movie]
+        @cypher(
+          statement: "MATCH (this)-[:ACTED_IN*2]-(other:Movie) RETURN other"
+        )
+      "@relation type field line description"
+      ratings(
+        rating: Int
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        datetime: _Neo4jDateTimeInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        location: _Neo4jPointInput
+        ratings: [Int]
+        datetimes: [_Neo4jDateTimeInput]
+        first: Int
+        offset: Int
+        orderBy: [_RatedOrdering]
+        filter: _MovieRatedFilter
+      ): [_MovieRatings]
+      years: [Int]
+      titles: [String]
+      imdbRatings: [Float]
+      "Temporal type field line description"
+      releases: [_Neo4jDateTime]
+      booleans: [Boolean]
+      enums: [BookGenre]
+      "Ignored field line description"
+      customField: String @neo4j_ignore
+    }
+
+    type _AddGenreMoviesPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
+
+    type _RemoveGenreMoviesPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
+
+    type _MergeGenreMoviesPayload
+      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
+      "Field for the Movie node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Movie
+      "Field for the Genre node this IN_GENRE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
+
+    type _GenreInterfacedRelationshipType
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      Person: Person
+    }
+
+    enum _InterfacedRelationshipTypeOrdering {
+      string_asc
+      string_desc
+      boolean_asc
+      boolean_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _InterfacedRelationshipTypeInput {
+      string: String!
+      boolean: Boolean
+    }
+
+    type _AddGenreInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _RemoveGenreInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+    }
+
+    type _UpdateGenreInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _MergeGenreInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    input _GenreInput {
+      name: String!
+    }
+
+    type Genre {
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
+      name: String
+      movies(
+        first: Int = 3
+        offset: Int = 0
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie] @relation(name: "IN_GENRE", direction: "IN")
+      highestRatedMovie: Movie
+        @cypher(
+          statement: "MATCH (m:Movie)-[:IN_GENRE]->(this) RETURN m ORDER BY m.imdbRating DESC LIMIT 1"
+        )
+      interfacedRelationshipType(
+        first: Int
+        offset: Int
+        orderBy: [_InterfacedRelationshipTypeOrdering]
+        filter: _GenreInterfacedRelationshipTypeFilter
+      ): [_GenreInterfacedRelationshipType]
+    }
+
+    input _StateInput {
+      name: String!
+    }
+
+    enum _StateOrdering {
+      name_asc
+      name_desc
+      id_asc
+      id_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _StateFilter {
+      AND: [_StateFilter!]
+      OR: [_StateFilter!]
       name: String
       name_not: String
       name_in: [String!]
@@ -745,553 +804,199 @@ test.cb('Test augmented schema', t => {
       id_not_ends_with: ID
     }
 
-    input _MovieRatedFilter {
-      AND: [_MovieRatedFilter!]
-      OR: [_MovieRatedFilter!]
-      rating: Int
-      rating_not: Int
-      rating_in: [Int!]
-      rating_not_in: [Int!]
-      rating_lt: Int
-      rating_lte: Int
-      rating_gt: Int
-      rating_gte: Int
-      ratings: [Int!]
-      ratings_not: [Int!]
-      ratings_lt: [Int!]
-      ratings_lte: [Int!]
-      ratings_gt: [Int!]
-      ratings_gte: [Int!]
-      time: _Neo4jTimeInput
-      time_not: _Neo4jTimeInput
-      time_in: [_Neo4jTimeInput!]
-      time_not_in: [_Neo4jTimeInput!]
-      time_lt: _Neo4jTimeInput
-      time_lte: _Neo4jTimeInput
-      time_gt: _Neo4jTimeInput
-      time_gte: _Neo4jTimeInput
-      date: _Neo4jDateInput
-      date_not: _Neo4jDateInput
-      date_in: [_Neo4jDateInput!]
-      date_not_in: [_Neo4jDateInput!]
-      date_lt: _Neo4jDateInput
-      date_lte: _Neo4jDateInput
-      date_gt: _Neo4jDateInput
-      date_gte: _Neo4jDateInput
-      datetime: _Neo4jDateTimeInput
-      datetime_not: _Neo4jDateTimeInput
-      datetime_in: [_Neo4jDateTimeInput!]
-      datetime_not_in: [_Neo4jDateTimeInput!]
-      datetime_lt: _Neo4jDateTimeInput
-      datetime_lte: _Neo4jDateTimeInput
-      datetime_gt: _Neo4jDateTimeInput
-      datetime_gte: _Neo4jDateTimeInput
-      localtime: _Neo4jLocalTimeInput
-      localtime_not: _Neo4jLocalTimeInput
-      localtime_in: [_Neo4jLocalTimeInput!]
-      localtime_not_in: [_Neo4jLocalTimeInput!]
-      localtime_lt: _Neo4jLocalTimeInput
-      localtime_lte: _Neo4jLocalTimeInput
-      localtime_gt: _Neo4jLocalTimeInput
-      localtime_gte: _Neo4jLocalTimeInput
-      localdatetime: _Neo4jLocalDateTimeInput
-      localdatetime_not: _Neo4jLocalDateTimeInput
-      localdatetime_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_lt: _Neo4jLocalDateTimeInput
-      localdatetime_lte: _Neo4jLocalDateTimeInput
-      localdatetime_gt: _Neo4jLocalDateTimeInput
-      localdatetime_gte: _Neo4jLocalDateTimeInput
-      datetimes: [_Neo4jDateTimeInput!]
-      datetimes_not: [_Neo4jDateTimeInput!]
-      datetimes_lt: [_Neo4jDateTimeInput!]
-      datetimes_lte: [_Neo4jDateTimeInput!]
-      datetimes_gt: [_Neo4jDateTimeInput!]
-      datetimes_gte: [_Neo4jDateTimeInput!]
-      location: _Neo4jPointInput
-      location_not: _Neo4jPointInput
-      location_distance: _Neo4jPointDistanceFilter
-      location_distance_lt: _Neo4jPointDistanceFilter
-      location_distance_lte: _Neo4jPointDistanceFilter
-      location_distance_gt: _Neo4jPointDistanceFilter
-      location_distance_gte: _Neo4jPointDistanceFilter
-      User: _UserFilter
+    type State {
+      customField: String @neo4j_ignore
+      name: String! @index
+      id: ID
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
-    input _UserFilter {
-      AND: [_UserFilter!]
-      OR: [_UserFilter!]
-      userId: ID
-      userId_not: ID
-      userId_in: [ID!]
-      userId_not_in: [ID!]
-      userId_contains: ID
-      userId_not_contains: ID
-      userId_starts_with: ID
-      userId_not_starts_with: ID
-      userId_ends_with: ID
-      userId_not_ends_with: ID
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
-      interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_not_in: [_PersonInterfacedRelationshipTypeFilter!]
-      interfacedRelationshipType_some: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_none: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_single: _PersonInterfacedRelationshipTypeFilter
-      interfacedRelationshipType_every: _PersonInterfacedRelationshipTypeFilter
-      reflexiveInterfacedRelationshipType: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_not: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
-      reflexiveInterfacedRelationshipType_not_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
-      reflexiveInterfacedRelationshipType_some: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      rated: _UserRatedFilter
-      rated_not: _UserRatedFilter
-      rated_in: [_UserRatedFilter!]
-      rated_not_in: [_UserRatedFilter!]
-      rated_some: _UserRatedFilter
-      rated_none: _UserRatedFilter
-      rated_single: _UserRatedFilter
-      rated_every: _UserRatedFilter
-      friends: _FriendOfDirectionsFilter
-      friends_not: _FriendOfDirectionsFilter
-      friends_in: [_FriendOfDirectionsFilter!]
-      friends_not_in: [_FriendOfDirectionsFilter!]
-      friends_some: _FriendOfDirectionsFilter
-      friends_none: _FriendOfDirectionsFilter
-      friends_single: _FriendOfDirectionsFilter
-      friends_every: _FriendOfDirectionsFilter
-      favorites: _MovieFilter
-      favorites_not: _MovieFilter
-      favorites_in: [_MovieFilter!]
-      favorites_not_in: [_MovieFilter!]
-      favorites_some: _MovieFilter
-      favorites_none: _MovieFilter
-      favorites_single: _MovieFilter
-      favorites_every: _MovieFilter
-      extensionScalar: String
-      extensionScalar_not: String
-      extensionScalar_in: [String!]
-      extensionScalar_not_in: [String!]
-      extensionScalar_contains: String
-      extensionScalar_not_contains: String
-      extensionScalar_starts_with: String
-      extensionScalar_not_starts_with: String
-      extensionScalar_ends_with: String
-      extensionScalar_not_ends_with: String
+    type _PersonInterfacedRelationshipType
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      Genre: Genre
     }
 
-    input _UserRatedFilter {
-      AND: [_UserRatedFilter!]
-      OR: [_UserRatedFilter!]
-      rating: Int
-      rating_not: Int
-      rating_in: [Int!]
-      rating_not_in: [Int!]
-      rating_lt: Int
-      rating_lte: Int
-      rating_gt: Int
-      rating_gte: Int
-      ratings: [Int!]
-      ratings_not: [Int!]
-      ratings_lt: [Int!]
-      ratings_lte: [Int!]
-      ratings_gt: [Int!]
-      ratings_gte: [Int!]
-      time: _Neo4jTimeInput
-      time_not: _Neo4jTimeInput
-      time_in: [_Neo4jTimeInput!]
-      time_not_in: [_Neo4jTimeInput!]
-      time_lt: _Neo4jTimeInput
-      time_lte: _Neo4jTimeInput
-      time_gt: _Neo4jTimeInput
-      time_gte: _Neo4jTimeInput
-      date: _Neo4jDateInput
-      date_not: _Neo4jDateInput
-      date_in: [_Neo4jDateInput!]
-      date_not_in: [_Neo4jDateInput!]
-      date_lt: _Neo4jDateInput
-      date_lte: _Neo4jDateInput
-      date_gt: _Neo4jDateInput
-      date_gte: _Neo4jDateInput
-      datetime: _Neo4jDateTimeInput
-      datetime_not: _Neo4jDateTimeInput
-      datetime_in: [_Neo4jDateTimeInput!]
-      datetime_not_in: [_Neo4jDateTimeInput!]
-      datetime_lt: _Neo4jDateTimeInput
-      datetime_lte: _Neo4jDateTimeInput
-      datetime_gt: _Neo4jDateTimeInput
-      datetime_gte: _Neo4jDateTimeInput
-      localtime: _Neo4jLocalTimeInput
-      localtime_not: _Neo4jLocalTimeInput
-      localtime_in: [_Neo4jLocalTimeInput!]
-      localtime_not_in: [_Neo4jLocalTimeInput!]
-      localtime_lt: _Neo4jLocalTimeInput
-      localtime_lte: _Neo4jLocalTimeInput
-      localtime_gt: _Neo4jLocalTimeInput
-      localtime_gte: _Neo4jLocalTimeInput
-      localdatetime: _Neo4jLocalDateTimeInput
-      localdatetime_not: _Neo4jLocalDateTimeInput
-      localdatetime_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_lt: _Neo4jLocalDateTimeInput
-      localdatetime_lte: _Neo4jLocalDateTimeInput
-      localdatetime_gt: _Neo4jLocalDateTimeInput
-      localdatetime_gte: _Neo4jLocalDateTimeInput
-      datetimes: [_Neo4jDateTimeInput!]
-      datetimes_not: [_Neo4jDateTimeInput!]
-      datetimes_lt: [_Neo4jDateTimeInput!]
-      datetimes_lte: [_Neo4jDateTimeInput!]
-      datetimes_gt: [_Neo4jDateTimeInput!]
-      datetimes_gte: [_Neo4jDateTimeInput!]
-      location: _Neo4jPointInput
-      location_not: _Neo4jPointInput
-      location_distance: _Neo4jPointDistanceFilter
-      location_distance_lt: _Neo4jPointDistanceFilter
-      location_distance_lte: _Neo4jPointDistanceFilter
-      location_distance_gt: _Neo4jPointDistanceFilter
-      location_distance_gte: _Neo4jPointDistanceFilter
-      Movie: _MovieFilter
-    }
-
-    input _FriendOfDirectionsFilter {
-      from: _FriendOfFilter
-      to: _FriendOfFilter
+    type _AddPersonInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    input _FriendOfFilter {
-      AND: [_FriendOfFilter!]
-      OR: [_FriendOfFilter!]
-      since: Int
-      since_not: Int
-      since_in: [Int!]
-      since_not_in: [Int!]
-      since_lt: Int
-      since_lte: Int
-      since_gt: Int
-      since_gte: Int
-      time: _Neo4jTimeInput
-      time_not: _Neo4jTimeInput
-      time_in: [_Neo4jTimeInput!]
-      time_not_in: [_Neo4jTimeInput!]
-      time_lt: _Neo4jTimeInput
-      time_lte: _Neo4jTimeInput
-      time_gt: _Neo4jTimeInput
-      time_gte: _Neo4jTimeInput
-      date: _Neo4jDateInput
-      date_not: _Neo4jDateInput
-      date_in: [_Neo4jDateInput!]
-      date_not_in: [_Neo4jDateInput!]
-      date_lt: _Neo4jDateInput
-      date_lte: _Neo4jDateInput
-      date_gt: _Neo4jDateInput
-      date_gte: _Neo4jDateInput
-      datetime: _Neo4jDateTimeInput
-      datetime_not: _Neo4jDateTimeInput
-      datetime_in: [_Neo4jDateTimeInput!]
-      datetime_not_in: [_Neo4jDateTimeInput!]
-      datetime_lt: _Neo4jDateTimeInput
-      datetime_lte: _Neo4jDateTimeInput
-      datetime_gt: _Neo4jDateTimeInput
-      datetime_gte: _Neo4jDateTimeInput
-      ratings: [String!]
-      ratings_not: [String!]
-      ratings_contains: [String!]
-      ratings_not_contains: [String!]
-      ratings_starts_with: [String!]
-      ratings_not_starts_with: [String!]
-      ratings_ends_with: [String!]
-      ratings_not_ends_with: [String!]
-      datetimes: [_Neo4jDateTimeInput!]
-      datetimes_not: [_Neo4jDateTimeInput!]
-      datetimes_lt: [_Neo4jDateTimeInput!]
-      datetimes_lte: [_Neo4jDateTimeInput!]
-      datetimes_gt: [_Neo4jDateTimeInput!]
-      datetimes_gte: [_Neo4jDateTimeInput!]
-      localtime: _Neo4jLocalTimeInput
-      localtime_not: _Neo4jLocalTimeInput
-      localtime_in: [_Neo4jLocalTimeInput!]
-      localtime_not_in: [_Neo4jLocalTimeInput!]
-      localtime_lt: _Neo4jLocalTimeInput
-      localtime_lte: _Neo4jLocalTimeInput
-      localtime_gt: _Neo4jLocalTimeInput
-      localtime_gte: _Neo4jLocalTimeInput
-      localdatetime: _Neo4jLocalDateTimeInput
-      localdatetime_not: _Neo4jLocalDateTimeInput
-      localdatetime_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
-      localdatetime_lt: _Neo4jLocalDateTimeInput
-      localdatetime_lte: _Neo4jLocalDateTimeInput
-      localdatetime_gt: _Neo4jLocalDateTimeInput
-      localdatetime_gte: _Neo4jLocalDateTimeInput
-      location: _Neo4jPointInput
-      location_not: _Neo4jPointInput
-      location_distance: _Neo4jPointDistanceFilter
-      location_distance_lt: _Neo4jPointDistanceFilter
-      location_distance_lte: _Neo4jPointDistanceFilter
-      location_distance_gt: _Neo4jPointDistanceFilter
-      location_distance_gte: _Neo4jPointDistanceFilter
-      User: _UserFilter
+    type _RemovePersonInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
     }
 
-    input _InterfaceNoScalarsFilter {
-      AND: [_InterfaceNoScalarsFilter!]
-      OR: [_InterfaceNoScalarsFilter!]
-      movies: _MovieFilter
-      movies_not: _MovieFilter
-      movies_in: [_MovieFilter!]
-      movies_not_in: [_MovieFilter!]
-      movies_some: _MovieFilter
-      movies_none: _MovieFilter
-      movies_single: _MovieFilter
-      movies_every: _MovieFilter
+    type _UpdatePersonInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    "Object type line description"
-    type Movie
-      @additionalLabels(
-        labels: ["u_<%= $cypherParams.userId %>", "newMovieLabel"]
+    type _MergePersonInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
-      "Field line description"
-      movieId: ID! @id
-      """
-      Field
-      block
-      description
-      """
-      title: String @isAuthenticated
-      someprefix_title_with_underscores: String
-      year: Int
-      released: _Neo4jDateTime
-      plot: String
-      poster: String
-      imdbRating: Float
-      "@relation field line description"
-      genres(
-        first: Int
-        offset: Int
-        orderBy: [_GenreOrdering]
-        filter: _GenreFilter
-      ): [Genre] @relation(name: "IN_GENRE", direction: "OUT")
-      similar(
-        first: Int = 3
-        offset: Int = 0
-        orderBy: [_MovieOrdering]
-      ): [Movie]
-        @cypher(
-          statement: "WITH {this} AS this MATCH (this)--(:Genre)--(o:Movie) RETURN o"
-        )
-      mostSimilar: Movie @cypher(statement: "WITH {this} AS this RETURN this")
-      degree: Int
-        @cypher(statement: "WITH {this} AS this RETURN SIZE((this)--())")
-      actors(
-        first: Int = 3
-        offset: Int = 0
-        name: String
-        names: [String]
-        strings: [String]
-        datetimes: [_Neo4jDateTimeInput]
-        orderBy: [_ActorOrdering]
-        filter: _ActorFilter
-      ): [Actor] @relation(name: "ACTED_IN", direction: "IN")
-      avgStars: Float
-      filmedIn(filter: _StateFilter): State
-        @relation(name: "FILMED_IN", direction: "OUT")
-      location: _Neo4jPoint
-      locations: [_Neo4jPoint]
-      scaleRating(scale: Int = 3): Float
-        @cypher(statement: "WITH $this AS this RETURN $scale * this.imdbRating")
-      scaleRatingFloat(scale: Float = 1.5): Float
-        @cypher(statement: "WITH $this AS this RETURN $scale * this.imdbRating")
-      actorMovies(first: Int, offset: Int, orderBy: [_MovieOrdering]): [Movie]
-        @cypher(
-          statement: "MATCH (this)-[:ACTED_IN*2]-(other:Movie) RETURN other"
-        )
-      "@relation type field line description"
-      ratings(
-        rating: Int
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        datetime: _Neo4jDateTimeInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        location: _Neo4jPointInput
-        ratings: [Int]
-        datetimes: [_Neo4jDateTimeInput]
-        first: Int
-        offset: Int
-        orderBy: [_RatedOrdering]
-        filter: _MovieRatedFilter
-      ): [_MovieRatings]
-      years: [Int]
-      titles: [String]
-      imdbRatings: [Float]
-      "Temporal type field line description"
-      releases: [_Neo4jDateTime]
-      booleans: [Boolean]
-      enums: [BookGenre]
-      "Ignored field line description"
-      customField: String @neo4j_ignore
     }
 
-    extend type Movie @hasRole(roles: [admin]) {
-      currentUserId(strArg: String): String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      "Object type extension field line description"
-      interfaceNoScalars(
-        orderBy: _InterfaceNoScalarsOrdering
+    type _PersonReflexiveInterfacedRelationshipTypeDirections
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from(
         first: Int
         offset: Int
-        filter: _InterfaceNoScalarsFilter
-      ): [InterfaceNoScalars]
-        @relation(name: "INTERFACE_NO_SCALARS", direction: OUT)
-      extensionScalar: String
-      extensionNode(
+        orderBy: [_ReflexiveInterfacedRelationshipTypeOrdering]
+        filter: _ReflexiveInterfacedRelationshipTypeFilter
+      ): [_PersonReflexiveInterfacedRelationshipType]
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to(
         first: Int
         offset: Int
-        orderBy: [_GenreOrdering]
-        filter: _GenreFilter
-      ): [Genre] @relation(name: "IN_GENRE", direction: "OUT")
+        orderBy: [_ReflexiveInterfacedRelationshipTypeOrdering]
+        filter: _ReflexiveInterfacedRelationshipTypeFilter
+      ): [_PersonReflexiveInterfacedRelationshipType]
     }
 
-    type _Neo4jDateTime {
-      year: Int
-      month: Int
-      day: Int
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      timezone: String
-      formatted: String
-    }
-
-    """
-    Custom ordering enum type
-    block description
-    """
-    enum _GenreOrdering {
-      name_desc
-      name_asc
-    }
-
-    type Genre {
-      _id: String
-      name: String
-      movies(
-        first: Int = 3
-        offset: Int = 0
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie] @relation(name: "IN_GENRE", direction: "IN")
-      highestRatedMovie: Movie
-        @cypher(
-          statement: "MATCH (m:Movie)-[:IN_GENRE]->(this) RETURN m ORDER BY m.imdbRating DESC LIMIT 1"
-        )
-      interfacedRelationshipType(
-        first: Int
-        offset: Int
-        orderBy: [_InterfacedRelationshipTypeOrdering]
-        filter: _GenreInterfacedRelationshipTypeFilter
-      ): [_GenreInterfacedRelationshipType]
-    }
-
-    type _GenreInterfacedRelationshipType
+    type _PersonReflexiveInterfacedRelationshipType
       @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
-        to: "Genre"
+        to: "Person"
       ) {
-      string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       Person: Person
     }
 
-    enum _InterfacedRelationshipTypeOrdering {
-      string_asc
-      string_desc
+    input _ReflexiveInterfacedRelationshipTypeDirectionsFilter {
+      from: _ReflexiveInterfacedRelationshipTypeFilter
+      to: _ReflexiveInterfacedRelationshipTypeFilter
+    }
+
+    enum _ReflexiveInterfacedRelationshipTypeOrdering {
       boolean_asc
       boolean_desc
       _id_asc
       _id_desc
     }
 
-    input _GenreInterfacedRelationshipTypeFilter {
-      AND: [_GenreInterfacedRelationshipTypeFilter!]
-      OR: [_GenreInterfacedRelationshipTypeFilter!]
-      string: String
-      string_not: String
-      string_in: [String!]
-      string_not_in: [String!]
-      string_contains: String
-      string_not_contains: String
-      string_starts_with: String
-      string_not_starts_with: String
-      string_ends_with: String
-      string_not_ends_with: String
+    input _ReflexiveInterfacedRelationshipTypeInput {
       boolean: Boolean
-      boolean_not: Boolean
-      Person: _PersonFilter
     }
 
-    enum _ActorOrdering {
-      userId_asc
-      userId_desc
-      name_asc
-      name_desc
-      extensionScalar_asc
-      extensionScalar_desc
-      _id_asc
-      _id_desc
+    type _AddPersonReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    type Actor {
-      userId: ID!
-      name: String
-      movies(
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie] @relation(name: "ACTED_IN", direction: "OUT")
-      knows(
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-        filter: _PersonFilter
-      ): [Person] @relation(name: "KNOWS", direction: "OUT")
-      extensionScalar: String
-      datetimes: [_Neo4jDateTime]
-      strings: [String]
-      interfacedRelationshipType(
-        first: Int
-        offset: Int
-        orderBy: [_InterfacedRelationshipTypeOrdering]
-        filter: _PersonInterfacedRelationshipTypeFilter
-      ): [_PersonInterfacedRelationshipType]
-      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
+    type _RemovePersonReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+    }
+
+    type _UpdatePersonReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    extend type Actor implements Person
+    type _MergePersonReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    input _PersonInput {
+      userId: ID!
+    }
 
     """
     Interface type
@@ -1324,27 +1029,73 @@ test.cb('Test augmented schema', t => {
       to: Genre!
     }
 
-    extend interface Person {
-      extensionScalar: String
-    }
-
-    type State {
-      customField: String @neo4j_ignore
-      name: String! @index
-      id: ID
-      _id: String
+    "Enum type line description"
+    enum _PersonOrdering {
+      "Enum value line description"
+      userId_asc
+      """
+      Enum value
+      block
+      description
+      """
+      userId_desc
+      name_asc
+      name_desc
     }
 
-    type _PersonInterfacedRelationshipType
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      string: String!
-      boolean: Boolean
-      _id: String
-      Genre: Genre
+    """
+    Custom filtering input type
+    block description
+    """
+    input _PersonFilter {
+      AND: [_PersonFilter!]
+      OR: [_PersonFilter!]
+      userId: ID
+      userId_not: ID
+      userId_in: [ID!]
+      userId_not_in: [ID!]
+      userId_contains: ID
+      userId_not_contains: ID
+      userId_starts_with: ID
+      userId_not_starts_with: ID
+      userId_ends_with: ID
+      userId_not_ends_with: ID
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
+      interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_not_in: [_PersonInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_some: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_none: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_single: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_every: _PersonInterfacedRelationshipTypeFilter
+      reflexiveInterfacedRelationshipType: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_not: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
+      reflexiveInterfacedRelationshipType_not_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
+      reflexiveInterfacedRelationshipType_some: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      extensionScalar: String
+      extensionScalar_not: String
+      extensionScalar_in: [String!]
+      extensionScalar_not_in: [String!]
+      extensionScalar_contains: String
+      extensionScalar_not_contains: String
+      extensionScalar_starts_with: String
+      extensionScalar_not_starts_with: String
+      extensionScalar_ends_with: String
+      extensionScalar_not_ends_with: String
     }
 
     input _PersonInterfacedRelationshipTypeFilter {
@@ -1365,454 +1116,238 @@ test.cb('Test augmented schema', t => {
       Genre: _GenreFilter
     }
 
-    type _MovieRatings @relation(name: "RATED", from: "User", to: "Movie") {
-      currentUserId(strArg: String): String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-      User: User
-    }
-
-    type _Neo4jTime {
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      timezone: String
-      formatted: String
-    }
-
-    input _Neo4jTimeInput {
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      timezone: String
-      formatted: String
-    }
-
-    type _Neo4jDate {
-      year: Int
-      month: Int
-      day: Int
-      formatted: String
+    input _GenreFilter {
+      AND: [_GenreFilter!]
+      OR: [_GenreFilter!]
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
+      interfacedRelationshipType: _GenreInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_not: _GenreInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_in: [_GenreInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_not_in: [_GenreInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_some: _GenreInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_none: _GenreInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_single: _GenreInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_every: _GenreInterfacedRelationshipTypeFilter
     }
 
-    input _Neo4jDateInput {
-      year: Int
-      month: Int
-      day: Int
-      formatted: String
+    input _GenreInterfacedRelationshipTypeFilter {
+      AND: [_GenreInterfacedRelationshipTypeFilter!]
+      OR: [_GenreInterfacedRelationshipTypeFilter!]
+      string: String
+      string_not: String
+      string_in: [String!]
+      string_not_in: [String!]
+      string_contains: String
+      string_not_contains: String
+      string_starts_with: String
+      string_not_starts_with: String
+      string_ends_with: String
+      string_not_ends_with: String
+      boolean: Boolean
+      boolean_not: Boolean
+      Person: _PersonFilter
     }
 
-    type _Neo4jLocalTime {
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      formatted: String
+    input _ReflexiveInterfacedRelationshipTypeFilter {
+      AND: [_ReflexiveInterfacedRelationshipTypeFilter!]
+      OR: [_ReflexiveInterfacedRelationshipTypeFilter!]
+      boolean: Boolean
+      boolean_not: Boolean
+      Person: _PersonFilter
     }
 
-    input _Neo4jLocalTimeInput {
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      formatted: String
+    type _AddActorMoviesPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
     }
 
-    type _Neo4jLocalDateTime {
-      year: Int
-      month: Int
-      day: Int
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      formatted: String
+    type _RemoveActorMoviesPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
     }
 
-    input _Neo4jLocalDateTimeInput {
-      year: Int
-      month: Int
-      day: Int
-      hour: Int
-      minute: Int
-      second: Int
-      millisecond: Int
-      microsecond: Int
-      nanosecond: Int
-      formatted: String
+    type _MergeActorMoviesPayload
+      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
+      "Field for the Actor node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Movie node this ACTED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
     }
 
-    type User implements Person {
-      userId: ID!
-      name: String
-      interfacedRelationshipType(
-        first: Int
-        offset: Int
-        orderBy: [_InterfacedRelationshipTypeOrdering]
-        filter: _PersonInterfacedRelationshipTypeFilter
-      ): [_PersonInterfacedRelationshipType]
-      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
-      currentUserId(strArg: String = "Neo4j", strInputArg: strInput): String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rated(
-        rating: Int
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        datetime: _Neo4jDateTimeInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        location: _Neo4jPointInput
-        first: Int
-        offset: Int
-        orderBy: [_RatedOrdering]
-        filter: _UserRatedFilter
-      ): [_UserRated]
-      friends: _UserFriendsDirections
-      favorites(
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie] @relation(name: "FAVORITED", direction: "OUT")
-      movieSearch(first: Int, offset: Int): [MovieSearch]
-      computedMovieSearch(first: Int, offset: Int): [MovieSearch]
-        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
-      extensionScalar: String
-      _id: String
+    type _AddActorKnowsPayload
+      @relation(name: "KNOWS", from: "Actor", to: "Person") {
+      "Field for the Actor node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Person node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
     }
 
-    "Input object type line description"
-    input strInput {
-      "Input field line description"
-      strArg: String
+    type _RemoveActorKnowsPayload
+      @relation(name: "KNOWS", from: "Actor", to: "Person") {
+      "Field for the Actor node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Person node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
     }
 
-    extend input strInput {
-      extensionArg: String
+    type _MergeActorKnowsPayload
+      @relation(name: "KNOWS", from: "Actor", to: "Person") {
+      "Field for the Actor node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Actor
+      "Field for the Person node this KNOWS [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
     }
 
-    type _AddUserInterfacedRelationshipTypePayload
+    type _AddActorInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _RemoveUserInterfacedRelationshipTypePayload
+    type _RemoveActorInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
     }
 
-    type _UpdateUserInterfacedRelationshipTypePayload
+    type _UpdateActorInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _MergeUserInterfacedRelationshipTypePayload
+    type _MergeActorInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _AddUserReflexiveInterfacedRelationshipTypePayload
+    type _AddActorReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _RemoveUserReflexiveInterfacedRelationshipTypePayload
+    type _RemoveActorReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
     }
 
-    type _UpdateUserReflexiveInterfacedRelationshipTypePayload
+    type _UpdateActorReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _MergeUserReflexiveInterfacedRelationshipTypePayload
+    type _MergeActorReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _UserRated @relation(name: "RATED", from: "User", to: "Movie") {
-      currentUserId(strArg: String): String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-      Movie: Movie
+    input _ActorInput {
+      userId: ID!
     }
 
-    type _UserFriendsDirections
-      @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      from(
-        since: Int
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        datetime: _Neo4jDateTimeInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        location: _Neo4jPointInput
-        ratings: [String]
-        datetimes: [_Neo4jDateTimeInput]
-        first: Int
-        offset: Int
-        orderBy: [_FriendOfOrdering]
-        filter: _FriendOfFilter
-      ): [_UserFriends]
-      to(
-        since: Int
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        datetime: _Neo4jDateTimeInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        location: _Neo4jPointInput
-        ratings: [String]
-        datetimes: [_Neo4jDateTimeInput]
-        first: Int
-        offset: Int
-        orderBy: [_FriendOfOrdering]
-        filter: _FriendOfFilter
-      ): [_UserFriends]
+    enum _ActorOrdering {
+      userId_asc
+      userId_desc
+      name_asc
+      name_desc
+      extensionScalar_asc
+      extensionScalar_desc
+      _id_asc
+      _id_desc
     }
 
-    type _UserFriends @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      since: Int
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      ratings: [String]
-      datetimes: [_Neo4jDateTime]
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      location: _Neo4jPoint
-      _id: String
-      User: User
-    }
-
-    enum _InterfaceNoScalarsOrdering {
-      movies_asc
-    }
-
-    interface InterfaceNoScalars {
-      movies(
-        first: Int
-        offset: Int
-        orderBy: [_MovieOrdering]
-        filter: _MovieFilter
-      ): [Movie] @relation(name: "MOVIES", direction: OUT)
-    }
-
-    enum _StateOrdering {
-      name_asc
-      name_desc
-      id_asc
-      id_desc
-      _id_asc
-      _id_desc
-    }
-
-    enum _UserOrdering {
-      userId_asc
-      userId_desc
-      name_asc
-      name_desc
-      currentUserId_asc
-      currentUserId_desc
-      extensionScalar_asc
-      extensionScalar_desc
-      _id_asc
-      _id_desc
-    }
-
-    enum _BookOrdering {
-      genre_asc
-      genre_desc
-      _id_asc
-      _id_desc
-    }
-
-    input _BookFilter {
-      AND: [_BookFilter!]
-      OR: [_BookFilter!]
-      genre: BookGenre
-      genre_not: BookGenre
-      genre_in: [BookGenre!]
-      genre_not_in: [BookGenre!]
-    }
-
-    enum BookGenre {
-      Mystery
-      Science
-    }
-
-    extend enum BookGenre {
-      Math
-    }
-
-    type Book {
-      genre: BookGenre
-      _id: String
-    }
-
-    type NodeTypeMutationTest {
-      NodeTypeMutationTest: BookGenre
-    }
-
-    input _NodeTypeMutationTestInput {
-      NodeTypeMutationTest: BookGenre!
-    }
-
-    type currentUserId {
-      userId: String
-      _id: String
-    }
-
-    enum _CasedTypeOrdering {
-      name_asc
-      name_desc
-      _id_asc
-      _id_desc
-    }
-
-    input _CasedTypeFilter {
-      AND: [_CasedTypeFilter!]
-      OR: [_CasedTypeFilter!]
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
-      state: _StateFilter
-      state_not: _StateFilter
-      state_in: [_StateFilter!]
-      state_not_in: [_StateFilter!]
-    }
-
-    type CasedType {
-      name: String
-      state(filter: _StateFilter): State
-        @relation(name: "FILMED_IN", direction: "OUT")
-      _id: String
-    }
-
-    "Enum type line description"
-    enum _PersonOrdering {
-      "Enum value line description"
-      userId_asc
-      """
-      Enum value
-      block
-      description
-      """
-      userId_desc
-      name_asc
-      name_desc
-    }
-
-    """
-    Custom filtering input type
-    block description
-    """
-    input _PersonFilter {
-      AND: [_PersonFilter!]
-      OR: [_PersonFilter!]
+    input _ActorFilter {
+      AND: [_ActorFilter!]
+      OR: [_ActorFilter!]
       userId: ID
       userId_not: ID
       userId_in: [ID!]
@@ -1833,6 +1368,46 @@ test.cb('Test augmented schema', t => {
       name_not_starts_with: String
       name_ends_with: String
       name_not_ends_with: String
+      movies: _MovieFilter
+      movies_not: _MovieFilter
+      movies_in: [_MovieFilter!]
+      movies_not_in: [_MovieFilter!]
+      movies_some: _MovieFilter
+      movies_none: _MovieFilter
+      movies_single: _MovieFilter
+      movies_every: _MovieFilter
+      knows: _PersonFilter
+      knows_not: _PersonFilter
+      knows_in: [_PersonFilter!]
+      knows_not_in: [_PersonFilter!]
+      knows_some: _PersonFilter
+      knows_none: _PersonFilter
+      knows_single: _PersonFilter
+      knows_every: _PersonFilter
+      extensionScalar: String
+      extensionScalar_not: String
+      extensionScalar_in: [String!]
+      extensionScalar_not_in: [String!]
+      extensionScalar_contains: String
+      extensionScalar_not_contains: String
+      extensionScalar_starts_with: String
+      extensionScalar_not_starts_with: String
+      extensionScalar_ends_with: String
+      extensionScalar_not_ends_with: String
+      datetimes: [_Neo4jDateTimeInput!]
+      datetimes_not: [_Neo4jDateTimeInput!]
+      datetimes_lt: [_Neo4jDateTimeInput!]
+      datetimes_lte: [_Neo4jDateTimeInput!]
+      datetimes_gt: [_Neo4jDateTimeInput!]
+      datetimes_gte: [_Neo4jDateTimeInput!]
+      strings: [String!]
+      strings_not: [String!]
+      strings_contains: [String!]
+      strings_not_contains: [String!]
+      strings_starts_with: [String!]
+      strings_not_starts_with: [String!]
+      strings_ends_with: [String!]
+      strings_not_ends_with: [String!]
       interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
       interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
       interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
@@ -1849,80 +1424,191 @@ test.cb('Test augmented schema', t => {
       reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
       reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
       reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
-      extensionScalar: String
-      extensionScalar_not: String
-      extensionScalar_in: [String!]
-      extensionScalar_not_in: [String!]
-      extensionScalar_contains: String
-      extensionScalar_not_contains: String
-      extensionScalar_starts_with: String
-      extensionScalar_not_starts_with: String
-      extensionScalar_ends_with: String
-      extensionScalar_not_ends_with: String
     }
 
-    type _AddTemporalNodeTemporalNodesPayload
-      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
-      from: TemporalNode
-      to: TemporalNode
+    type Actor {
+      userId: ID!
+      name: String
+      movies(
+        first: Int
+        offset: Int
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie] @relation(name: "ACTED_IN", direction: "OUT")
+      knows(
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+        filter: _PersonFilter
+      ): [Person] @relation(name: "KNOWS", direction: "OUT")
+      extensionScalar: String
+      datetimes: [_Neo4jDateTime]
+      strings: [String]
+      interfacedRelationshipType(
+        first: Int
+        offset: Int
+        orderBy: [_InterfacedRelationshipTypeOrdering]
+        filter: _PersonInterfacedRelationshipTypeFilter
+      ): [_PersonInterfacedRelationshipType]
+      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
-    type _RemoveTemporalNodeTemporalNodesPayload
-      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
-      from: TemporalNode
-      to: TemporalNode
+    type _AddUserInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    type _MergeTemporalNodeTemporalNodesPayload
-      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
-      from: TemporalNode
-      to: TemporalNode
+    type _RemoveUserInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
     }
 
-    input _TemporalNodeInput {
-      name: String!
+    type _UpdateUserInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    enum _TemporalNodeOrdering {
-      datetime_asc
-      datetime_desc
-      name_asc
-      name_desc
-      time_asc
-      time_desc
-      date_asc
-      date_desc
-      localtime_asc
-      localtime_desc
-      localdatetime_asc
-      localdatetime_desc
-      computedTimestamp_asc
-      computedTimestamp_desc
-      _id_asc
-      _id_desc
+    type _MergeUserInterfacedRelationshipTypePayload
+      @relation(
+        name: "INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Genre"
+      ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Genre
+      string: String!
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    input _TemporalNodeFilter {
-      AND: [_TemporalNodeFilter!]
-      OR: [_TemporalNodeFilter!]
-      datetime: _Neo4jDateTimeInput
-      datetime_not: _Neo4jDateTimeInput
-      datetime_in: [_Neo4jDateTimeInput!]
-      datetime_not_in: [_Neo4jDateTimeInput!]
-      datetime_lt: _Neo4jDateTimeInput
-      datetime_lte: _Neo4jDateTimeInput
-      datetime_gt: _Neo4jDateTimeInput
-      datetime_gte: _Neo4jDateTimeInput
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
+    type _AddUserReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _RemoveUserReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+    }
+
+    type _UpdateUserReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _MergeUserReflexiveInterfacedRelationshipTypePayload
+      @relation(
+        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+        from: "Person"
+        to: "Person"
+      ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+      boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _UserRated @relation(name: "RATED", from: "User", to: "Movie") {
+      currentUserId(strArg: String): String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      Movie: Movie
+    }
+
+    input _UserRatedFilter {
+      AND: [_UserRatedFilter!]
+      OR: [_UserRatedFilter!]
+      rating: Int
+      rating_not: Int
+      rating_in: [Int!]
+      rating_not_in: [Int!]
+      rating_lt: Int
+      rating_lte: Int
+      rating_gt: Int
+      rating_gte: Int
+      ratings: [Int!]
+      ratings_not: [Int!]
+      ratings_lt: [Int!]
+      ratings_lte: [Int!]
+      ratings_gt: [Int!]
+      ratings_gte: [Int!]
       time: _Neo4jTimeInput
       time_not: _Neo4jTimeInput
       time_in: [_Neo4jTimeInput!]
@@ -1939,6 +1625,14 @@ test.cb('Test augmented schema', t => {
       date_lte: _Neo4jDateInput
       date_gt: _Neo4jDateInput
       date_gte: _Neo4jDateInput
+      datetime: _Neo4jDateTimeInput
+      datetime_not: _Neo4jDateTimeInput
+      datetime_in: [_Neo4jDateTimeInput!]
+      datetime_not_in: [_Neo4jDateTimeInput!]
+      datetime_lt: _Neo4jDateTimeInput
+      datetime_lte: _Neo4jDateTimeInput
+      datetime_gt: _Neo4jDateTimeInput
+      datetime_gte: _Neo4jDateTimeInput
       localtime: _Neo4jLocalTimeInput
       localtime_not: _Neo4jLocalTimeInput
       localtime_in: [_Neo4jLocalTimeInput!]
@@ -1955,437 +1649,407 @@ test.cb('Test augmented schema', t => {
       localdatetime_lte: _Neo4jLocalDateTimeInput
       localdatetime_gt: _Neo4jLocalDateTimeInput
       localdatetime_gte: _Neo4jLocalDateTimeInput
-      localdatetimes: [_Neo4jLocalDateTimeInput!]
-      localdatetimes_not: [_Neo4jLocalDateTimeInput!]
-      localdatetimes_lt: [_Neo4jLocalDateTimeInput!]
-      localdatetimes_lte: [_Neo4jLocalDateTimeInput!]
-      localdatetimes_gt: [_Neo4jLocalDateTimeInput!]
-      localdatetimes_gte: [_Neo4jLocalDateTimeInput!]
-      temporalNodes: _TemporalNodeFilter
-      temporalNodes_not: _TemporalNodeFilter
-      temporalNodes_in: [_TemporalNodeFilter!]
-      temporalNodes_not_in: [_TemporalNodeFilter!]
-      temporalNodes_some: _TemporalNodeFilter
-      temporalNodes_none: _TemporalNodeFilter
-      temporalNodes_single: _TemporalNodeFilter
-      temporalNodes_every: _TemporalNodeFilter
+      datetimes: [_Neo4jDateTimeInput!]
+      datetimes_not: [_Neo4jDateTimeInput!]
+      datetimes_lt: [_Neo4jDateTimeInput!]
+      datetimes_lte: [_Neo4jDateTimeInput!]
+      datetimes_gt: [_Neo4jDateTimeInput!]
+      datetimes_gte: [_Neo4jDateTimeInput!]
+      location: _Neo4jPointInput
+      location_not: _Neo4jPointInput
+      location_distance: _Neo4jPointDistanceFilter
+      location_distance_lt: _Neo4jPointDistanceFilter
+      location_distance_lte: _Neo4jPointDistanceFilter
+      location_distance_gt: _Neo4jPointDistanceFilter
+      location_distance_gte: _Neo4jPointDistanceFilter
+      Movie: _MovieFilter
     }
 
-    type TemporalNode {
-      datetime: _Neo4jDateTime
-      name: String
+    type _AddUserRatedPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
       time: _Neo4jTime
       date: _Neo4jDate
+      datetime: _Neo4jDateTime
       localtime: _Neo4jLocalTime
       localdatetime: _Neo4jLocalDateTime
-      localdatetimes: [_Neo4jLocalDateTime]
-      computedTimestamp: String
-        @cypher(statement: "RETURN toString(datetime())")
-      temporalNodes(
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        datetime: _Neo4jDateTimeInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        first: Int
-        offset: Int
-        orderBy: [_TemporalNodeOrdering]
-        filter: _TemporalNodeFilter
-      ): [TemporalNode] @relation(name: "TEMPORAL", direction: OUT)
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    enum _SpatialNodeOrdering {
-      id_asc
-      id_desc
-      _id_asc
-      _id_desc
+    type _RemoveUserRatedPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
     }
 
-    type SpatialNode {
-      id: ID!
-      point: _Neo4jPoint
-      spatialNodes(
-        point: _Neo4jPointInput
-        first: Int
-        offset: Int
-        orderBy: [_SpatialNodeOrdering]
-        filter: _SpatialNodeFilter
-      ): [SpatialNode] @relation(name: "SPATIAL", direction: OUT)
+    type _UpdateUserRatedPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    enum _CameraOrdering {
-      id_asc
-      id_desc
-      type_asc
-      type_desc
-      make_asc
-      make_desc
-      weight_asc
-      weight_desc
-    }
-
-    input _CameraFilter {
-      AND: [_CameraFilter!]
-      OR: [_CameraFilter!]
-      id: ID
-      id_not: ID
-      id_in: [ID!]
-      id_not_in: [ID!]
-      id_contains: ID
-      id_not_contains: ID
-      id_starts_with: ID
-      id_not_starts_with: ID
-      id_ends_with: ID
-      id_not_ends_with: ID
-      type: String
-      type_not: String
-      type_in: [String!]
-      type_not_in: [String!]
-      type_contains: String
-      type_not_contains: String
-      type_starts_with: String
-      type_not_starts_with: String
-      type_ends_with: String
-      type_not_ends_with: String
-      make: String
-      make_not: String
-      make_in: [String!]
-      make_not_in: [String!]
-      make_contains: String
-      make_not_contains: String
-      make_starts_with: String
-      make_not_starts_with: String
-      make_ends_with: String
-      make_not_ends_with: String
-      weight: Int
-      weight_not: Int
-      weight_in: [Int!]
-      weight_not_in: [Int!]
-      weight_lt: Int
-      weight_lte: Int
-      weight_gt: Int
-      weight_gte: Int
-      operators: _PersonFilter
-      operators_not: _PersonFilter
-      operators_in: [_PersonFilter!]
-      operators_not_in: [_PersonFilter!]
-      operators_some: _PersonFilter
-      operators_none: _PersonFilter
-      operators_single: _PersonFilter
-      operators_every: _PersonFilter
+    type _MergeUserRatedPayload
+      @relation(name: "RATED", from: "User", to: "Movie") {
+      "Field for the User node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this RATED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      rating: Int
+      ratings: [Int]
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      datetimes: [_Neo4jDateTime]
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
     }
 
-    interface Camera {
-      type: String
-      id: ID! @unique
-      make: String
-      weight: Int
-      operators(
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-        filter: _PersonFilter
-      ): [Person] @relation(name: "cameras", direction: IN)
-      computedOperators(
-        name: String
+    type _UserFriendsDirections
+      @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from(
+        since: Int
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        datetime: _Neo4jDateTimeInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        location: _Neo4jPointInput
+        ratings: [String]
+        datetimes: [_Neo4jDateTimeInput]
         first: Int
         offset: Int
-        orderBy: [_PersonOrdering]
-      ): [Person]
-        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
-      reflexiveInterfaceRelationship(
+        orderBy: [_FriendOfOrdering]
+        filter: _FriendOfFilter
+      ): [_UserFriends]
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to(
+        since: Int
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        datetime: _Neo4jDateTimeInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        location: _Neo4jPointInput
+        ratings: [String]
+        datetimes: [_Neo4jDateTimeInput]
         first: Int
         offset: Int
-        orderBy: [_CameraOrdering]
-        filter: _CameraFilter
-      ): [Camera]
-        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
-    }
-
-    enum _OldCameraOrdering {
-      type_asc
-      type_desc
-      id_asc
-      id_desc
-      make_asc
-      make_desc
-      weight_asc
-      weight_desc
-      smell_asc
-      smell_desc
-      _id_asc
-      _id_desc
-    }
-
-    input _OldCameraFilter {
-      AND: [_OldCameraFilter!]
-      OR: [_OldCameraFilter!]
-      type: String
-      type_not: String
-      type_in: [String!]
-      type_not_in: [String!]
-      type_contains: String
-      type_not_contains: String
-      type_starts_with: String
-      type_not_starts_with: String
-      type_ends_with: String
-      type_not_ends_with: String
-      id: ID
-      id_not: ID
-      id_in: [ID!]
-      id_not_in: [ID!]
-      id_contains: ID
-      id_not_contains: ID
-      id_starts_with: ID
-      id_not_starts_with: ID
-      id_ends_with: ID
-      id_not_ends_with: ID
-      make: String
-      make_not: String
-      make_in: [String!]
-      make_not_in: [String!]
-      make_contains: String
-      make_not_contains: String
-      make_starts_with: String
-      make_not_starts_with: String
-      make_ends_with: String
-      make_not_ends_with: String
-      weight: Int
-      weight_not: Int
-      weight_in: [Int!]
-      weight_not_in: [Int!]
-      weight_lt: Int
-      weight_lte: Int
-      weight_gt: Int
-      weight_gte: Int
-      smell: String
-      smell_not: String
-      smell_in: [String!]
-      smell_not_in: [String!]
-      smell_contains: String
-      smell_not_contains: String
-      smell_starts_with: String
-      smell_not_starts_with: String
-      smell_ends_with: String
-      smell_not_ends_with: String
-      operators: _PersonFilter
-      operators_not: _PersonFilter
-      operators_in: [_PersonFilter!]
-      operators_not_in: [_PersonFilter!]
-      operators_some: _PersonFilter
-      operators_none: _PersonFilter
-      operators_single: _PersonFilter
-      operators_every: _PersonFilter
-      reflexiveInterfaceRelationship: _CameraFilter
-      reflexiveInterfaceRelationship_not: _CameraFilter
-      reflexiveInterfaceRelationship_in: [_CameraFilter!]
-      reflexiveInterfaceRelationship_not_in: [_CameraFilter!]
-      reflexiveInterfaceRelationship_some: _CameraFilter
-      reflexiveInterfaceRelationship_none: _CameraFilter
-      reflexiveInterfaceRelationship_single: _CameraFilter
-      reflexiveInterfaceRelationship_every: _CameraFilter
+        orderBy: [_FriendOfOrdering]
+        filter: _FriendOfFilter
+      ): [_UserFriends]
     }
 
-    type OldCamera implements Camera {
-      type: String
-      id: ID! @unique
-      make: String
-      weight: Int
-      smell: String
-      operators(
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-        filter: _PersonFilter
-      ): [Person] @relation(name: "cameras", direction: IN)
-      computedOperators(
-        name: String
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-      ): [Person]
-        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
-      reflexiveInterfaceRelationship(
-        first: Int
-        offset: Int
-        orderBy: [_CameraOrdering]
-        filter: _CameraFilter
-      ): [Camera]
-        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
+    type _UserFriends @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      since: Int
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      ratings: [String]
+      datetimes: [_Neo4jDateTime]
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      User: User
     }
 
-    enum _NewCameraOrdering {
-      type_asc
-      type_desc
-      id_asc
-      id_desc
-      make_asc
-      make_desc
-      weight_asc
-      weight_desc
-      _id_asc
-      _id_desc
+    input _FriendOfDirectionsFilter {
+      from: _FriendOfFilter
+      to: _FriendOfFilter
     }
 
-    input _NewCameraFilter {
-      AND: [_NewCameraFilter!]
-      OR: [_NewCameraFilter!]
-      type: String
-      type_not: String
-      type_in: [String!]
-      type_not_in: [String!]
-      type_contains: String
-      type_not_contains: String
-      type_starts_with: String
-      type_not_starts_with: String
-      type_ends_with: String
-      type_not_ends_with: String
-      id: ID
-      id_not: ID
-      id_in: [ID!]
-      id_not_in: [ID!]
-      id_contains: ID
-      id_not_contains: ID
-      id_starts_with: ID
-      id_not_starts_with: ID
-      id_ends_with: ID
-      id_not_ends_with: ID
-      make: String
-      make_not: String
-      make_in: [String!]
-      make_not_in: [String!]
-      make_contains: String
-      make_not_contains: String
-      make_starts_with: String
-      make_not_starts_with: String
-      make_ends_with: String
-      make_not_ends_with: String
-      weight: Int
-      weight_not: Int
-      weight_in: [Int!]
-      weight_not_in: [Int!]
-      weight_lt: Int
-      weight_lte: Int
-      weight_gt: Int
-      weight_gte: Int
-      features: [String!]
-      features_not: [String!]
-      features_contains: [String!]
-      features_not_contains: [String!]
-      features_starts_with: [String!]
-      features_not_starts_with: [String!]
-      features_ends_with: [String!]
-      features_not_ends_with: [String!]
-      operators: _PersonFilter
-      operators_not: _PersonFilter
-      operators_in: [_PersonFilter!]
-      operators_not_in: [_PersonFilter!]
-      operators_some: _PersonFilter
-      operators_none: _PersonFilter
-      operators_single: _PersonFilter
-      operators_every: _PersonFilter
-      reflexiveInterfaceRelationship: _CameraFilter
-      reflexiveInterfaceRelationship_not: _CameraFilter
-      reflexiveInterfaceRelationship_in: [_CameraFilter!]
-      reflexiveInterfaceRelationship_not_in: [_CameraFilter!]
-      reflexiveInterfaceRelationship_some: _CameraFilter
-      reflexiveInterfaceRelationship_none: _CameraFilter
-      reflexiveInterfaceRelationship_single: _CameraFilter
-      reflexiveInterfaceRelationship_every: _CameraFilter
+    input _FriendOfFilter {
+      AND: [_FriendOfFilter!]
+      OR: [_FriendOfFilter!]
+      since: Int
+      since_not: Int
+      since_in: [Int!]
+      since_not_in: [Int!]
+      since_lt: Int
+      since_lte: Int
+      since_gt: Int
+      since_gte: Int
+      time: _Neo4jTimeInput
+      time_not: _Neo4jTimeInput
+      time_in: [_Neo4jTimeInput!]
+      time_not_in: [_Neo4jTimeInput!]
+      time_lt: _Neo4jTimeInput
+      time_lte: _Neo4jTimeInput
+      time_gt: _Neo4jTimeInput
+      time_gte: _Neo4jTimeInput
+      date: _Neo4jDateInput
+      date_not: _Neo4jDateInput
+      date_in: [_Neo4jDateInput!]
+      date_not_in: [_Neo4jDateInput!]
+      date_lt: _Neo4jDateInput
+      date_lte: _Neo4jDateInput
+      date_gt: _Neo4jDateInput
+      date_gte: _Neo4jDateInput
+      datetime: _Neo4jDateTimeInput
+      datetime_not: _Neo4jDateTimeInput
+      datetime_in: [_Neo4jDateTimeInput!]
+      datetime_not_in: [_Neo4jDateTimeInput!]
+      datetime_lt: _Neo4jDateTimeInput
+      datetime_lte: _Neo4jDateTimeInput
+      datetime_gt: _Neo4jDateTimeInput
+      datetime_gte: _Neo4jDateTimeInput
+      ratings: [String!]
+      ratings_not: [String!]
+      ratings_contains: [String!]
+      ratings_not_contains: [String!]
+      ratings_starts_with: [String!]
+      ratings_not_starts_with: [String!]
+      ratings_ends_with: [String!]
+      ratings_not_ends_with: [String!]
+      datetimes: [_Neo4jDateTimeInput!]
+      datetimes_not: [_Neo4jDateTimeInput!]
+      datetimes_lt: [_Neo4jDateTimeInput!]
+      datetimes_lte: [_Neo4jDateTimeInput!]
+      datetimes_gt: [_Neo4jDateTimeInput!]
+      datetimes_gte: [_Neo4jDateTimeInput!]
+      localtime: _Neo4jLocalTimeInput
+      localtime_not: _Neo4jLocalTimeInput
+      localtime_in: [_Neo4jLocalTimeInput!]
+      localtime_not_in: [_Neo4jLocalTimeInput!]
+      localtime_lt: _Neo4jLocalTimeInput
+      localtime_lte: _Neo4jLocalTimeInput
+      localtime_gt: _Neo4jLocalTimeInput
+      localtime_gte: _Neo4jLocalTimeInput
+      localdatetime: _Neo4jLocalDateTimeInput
+      localdatetime_not: _Neo4jLocalDateTimeInput
+      localdatetime_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_lt: _Neo4jLocalDateTimeInput
+      localdatetime_lte: _Neo4jLocalDateTimeInput
+      localdatetime_gt: _Neo4jLocalDateTimeInput
+      localdatetime_gte: _Neo4jLocalDateTimeInput
+      location: _Neo4jPointInput
+      location_not: _Neo4jPointInput
+      location_distance: _Neo4jPointDistanceFilter
+      location_distance_lt: _Neo4jPointDistanceFilter
+      location_distance_lte: _Neo4jPointDistanceFilter
+      location_distance_gt: _Neo4jPointDistanceFilter
+      location_distance_gte: _Neo4jPointDistanceFilter
+      User: _UserFilter
     }
 
-    type NewCamera implements Camera {
-      type: String
-      id: ID! @unique
-      make: String
-      weight: Int
-      features: [String]
-      operators(
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-        filter: _PersonFilter
-      ): [Person] @relation(name: "cameras", direction: IN)
-      computedOperators(
-        name: String
-        first: Int
-        offset: Int
-        orderBy: [_PersonOrdering]
-      ): [Person]
-        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
-      reflexiveInterfaceRelationship(
-        first: Int
-        offset: Int
-        orderBy: [_CameraOrdering]
-        filter: _CameraFilter
-      ): [Camera]
-        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
+    enum _FriendOfOrdering {
+      currentUserId_asc
+      currentUserId_desc
+      since_asc
+      since_desc
+      time_asc
+      time_desc
+      date_asc
+      date_desc
+      datetime_asc
+      datetime_desc
+      localtime_asc
+      localtime_desc
+      localdatetime_asc
+      localdatetime_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _FriendOfInput {
+      since: Int
+      time: _Neo4jTimeInput
+      date: _Neo4jDateInput
+      datetime: _Neo4jDateTimeInput
+      ratings: [String]
+      datetimes: [_Neo4jDateTimeInput]
+      localtime: _Neo4jLocalTimeInput
+      localdatetime: _Neo4jLocalDateTimeInput
+      location: _Neo4jPointInput
+    }
+
+    type _AddUserFriendsPayload
+      @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: User
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      since: Int
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      ratings: [String]
+      datetimes: [_Neo4jDateTime]
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    enum _CameraManOrdering {
-      userId_asc
-      userId_desc
-      name_asc
-      name_desc
-      extensionScalar_asc
-      extensionScalar_desc
-      _id_asc
-      _id_desc
+    type _RemoveUserFriendsPayload
+      @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: User
     }
 
-    input _CameraManFilter {
-      AND: [_CameraManFilter!]
-      OR: [_CameraManFilter!]
-      userId: ID
-      userId_not: ID
-      userId_in: [ID!]
-      userId_not_in: [ID!]
-      userId_contains: ID
-      userId_not_contains: ID
-      userId_starts_with: ID
-      userId_not_starts_with: ID
-      userId_ends_with: ID
-      userId_not_ends_with: ID
-      name: String
-      name_not: String
-      name_in: [String!]
-      name_not_in: [String!]
-      name_contains: String
-      name_not_contains: String
-      name_starts_with: String
-      name_not_starts_with: String
-      name_ends_with: String
-      name_not_ends_with: String
-      favoriteCamera: _CameraFilter
-      favoriteCamera_not: _CameraFilter
-      favoriteCamera_in: [_CameraFilter!]
-      favoriteCamera_not_in: [_CameraFilter!]
-      cameras: _CameraFilter
-      cameras_not: _CameraFilter
-      cameras_in: [_CameraFilter!]
-      cameras_not_in: [_CameraFilter!]
-      cameras_some: _CameraFilter
-      cameras_none: _CameraFilter
-      cameras_single: _CameraFilter
-      cameras_every: _CameraFilter
-      cameraBuddy: _PersonFilter
-      cameraBuddy_not: _PersonFilter
-      cameraBuddy_in: [_PersonFilter!]
-      cameraBuddy_not_in: [_PersonFilter!]
-      extensionScalar: String
-      extensionScalar_not: String
-      extensionScalar_in: [String!]
-      extensionScalar_not_in: [String!]
-      extensionScalar_contains: String
-      extensionScalar_not_contains: String
-      extensionScalar_starts_with: String
-      extensionScalar_not_starts_with: String
-      extensionScalar_ends_with: String
-      extensionScalar_not_ends_with: String
+    type _UpdateUserFriendsPayload
+      @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: User
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      since: Int
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      ratings: [String]
+      datetimes: [_Neo4jDateTime]
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _MergeUserFriendsPayload
+      @relation(name: "FRIEND_OF", from: "User", to: "User") {
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the User node this FRIEND_OF [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: User
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      since: Int
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      ratings: [String]
+      datetimes: [_Neo4jDateTime]
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      location: _Neo4jPoint
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
+      _id: String
+    }
+
+    type _AddUserFavoritesPayload
+      @relation(name: "FAVORITED", from: "User", to: "Movie") {
+      "Field for the User node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
+
+    type _RemoveUserFavoritesPayload
+      @relation(name: "FAVORITED", from: "User", to: "Movie") {
+      "Field for the User node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
+
+    type _MergeUserFavoritesPayload
+      @relation(name: "FAVORITED", from: "User", to: "Movie") {
+      "Field for the User node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: User
+      "Field for the Movie node this FAVORITED [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Movie
+    }
+
+    input _UserInput {
+      userId: ID!
+    }
+
+    enum _UserOrdering {
+      userId_asc
+      userId_desc
+      name_asc
+      name_desc
+      currentUserId_asc
+      currentUserId_desc
+      extensionScalar_asc
+      extensionScalar_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _UserFilter {
+      AND: [_UserFilter!]
+      OR: [_UserFilter!]
+      userId: ID
+      userId_not: ID
+      userId_in: [ID!]
+      userId_not_in: [ID!]
+      userId_contains: ID
+      userId_not_contains: ID
+      userId_starts_with: ID
+      userId_not_starts_with: ID
+      userId_ends_with: ID
+      userId_not_ends_with: ID
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
       interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
       interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
       interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
@@ -2402,2240 +2066,107 @@ test.cb('Test augmented schema', t => {
       reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
       reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
       reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      rated: _UserRatedFilter
+      rated_not: _UserRatedFilter
+      rated_in: [_UserRatedFilter!]
+      rated_not_in: [_UserRatedFilter!]
+      rated_some: _UserRatedFilter
+      rated_none: _UserRatedFilter
+      rated_single: _UserRatedFilter
+      rated_every: _UserRatedFilter
+      friends: _FriendOfDirectionsFilter
+      friends_not: _FriendOfDirectionsFilter
+      friends_in: [_FriendOfDirectionsFilter!]
+      friends_not_in: [_FriendOfDirectionsFilter!]
+      friends_some: _FriendOfDirectionsFilter
+      friends_none: _FriendOfDirectionsFilter
+      friends_single: _FriendOfDirectionsFilter
+      friends_every: _FriendOfDirectionsFilter
+      favorites: _MovieFilter
+      favorites_not: _MovieFilter
+      favorites_in: [_MovieFilter!]
+      favorites_not_in: [_MovieFilter!]
+      favorites_some: _MovieFilter
+      favorites_none: _MovieFilter
+      favorites_single: _MovieFilter
+      favorites_every: _MovieFilter
+      extensionScalar: String
+      extensionScalar_not: String
+      extensionScalar_in: [String!]
+      extensionScalar_not_in: [String!]
+      extensionScalar_contains: String
+      extensionScalar_not_contains: String
+      extensionScalar_starts_with: String
+      extensionScalar_not_starts_with: String
+      extensionScalar_ends_with: String
+      extensionScalar_not_ends_with: String
     }
 
-    """
-    Union type
-    block description
-    """
-    union MovieSearch = Movie | Genre | Book
-
-    extend union MovieSearch = Actor | OldCamera
-
-    type CameraMan implements Person {
+    type User implements Person {
       userId: ID!
       name: String
-      favoriteCamera(filter: _CameraFilter): Camera
-        @relation(name: "favoriteCamera", direction: "OUT")
-      heaviestCamera(
+      interfacedRelationshipType(
         first: Int
         offset: Int
-        orderBy: [_CameraOrdering]
-      ): [Camera]
+        orderBy: [_InterfacedRelationshipTypeOrdering]
+        filter: _PersonInterfacedRelationshipTypeFilter
+      ): [_PersonInterfacedRelationshipType]
+      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
+      currentUserId(strArg: String = "Neo4j", strInputArg: strInput): String
         @cypher(
-          statement: "MATCH (c: Camera)--(this) RETURN c ORDER BY c.weight DESC LIMIT 1"
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
         )
-      cameras(
+      rated(
+        rating: Int
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        datetime: _Neo4jDateTimeInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        location: _Neo4jPointInput
         first: Int
         offset: Int
-        orderBy: [_CameraOrdering]
-        filter: _CameraFilter
-      ): [Camera!]! @relation(name: "cameras", direction: "OUT")
-      cameraBuddy(filter: _PersonFilter): Person
-        @relation(name: "cameraBuddy", direction: "OUT")
-      extensionScalar: String
-      interfacedRelationshipType(
+        orderBy: [_RatedOrdering]
+        filter: _UserRatedFilter
+      ): [_UserRated]
+      friends: _UserFriendsDirections
+      favorites(
         first: Int
         offset: Int
-        orderBy: [_InterfacedRelationshipTypeOrdering]
-        filter: _PersonInterfacedRelationshipTypeFilter
-      ): [_PersonInterfacedRelationshipType]
-      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie] @relation(name: "FAVORITED", direction: "OUT")
+      movieSearch(first: Int, offset: Int): [MovieSearch]
+      computedMovieSearch(first: Int, offset: Int): [MovieSearch]
+        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
+      extensionScalar: String
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
     }
 
-    input _SpatialNodeFilter {
-      AND: [_SpatialNodeFilter!]
-      OR: [_SpatialNodeFilter!]
-      id: ID
-      id_not: ID
-      id_in: [ID!]
-      id_not_in: [ID!]
-      id_contains: ID
-      id_not_contains: ID
-      id_starts_with: ID
-      id_not_starts_with: ID
-      id_ends_with: ID
-      id_not_ends_with: ID
-      point: _Neo4jPointInput
-      point_not: _Neo4jPointInput
-      point_distance: _Neo4jPointDistanceFilter
-      point_distance_lt: _Neo4jPointDistanceFilter
-      point_distance_lte: _Neo4jPointDistanceFilter
-      point_distance_gt: _Neo4jPointDistanceFilter
-      point_distance_gte: _Neo4jPointDistanceFilter
-      spatialNodes: _SpatialNodeFilter
-      spatialNodes_not: _SpatialNodeFilter
-      spatialNodes_in: [_SpatialNodeFilter!]
-      spatialNodes_not_in: [_SpatialNodeFilter!]
-      spatialNodes_some: _SpatialNodeFilter
-      spatialNodes_none: _SpatialNodeFilter
-      spatialNodes_single: _SpatialNodeFilter
-      spatialNodes_every: _SpatialNodeFilter
-    }
-
-    "Mutation  type line description"
-    type Mutation {
-      "Mutation  field line description"
+    type FriendOf @relation {
+      from: User
       currentUserId: String
-        @cypher(statement: "RETURN $cypherParams.currentUserId")
-      """
-      Mutation  field
-      block
-      description
-      """
-      computedObjectWithCypherParams: currentUserId
-        @cypher(statement: "RETURN { userId: $cypherParams.currentUserId }")
-      computedTemporal: _Neo4jDateTime
-        @cypher(
-          statement: "WITH datetime() AS now RETURN { year: now.year, month: now.month , day: now.day , hour: now.hour , minute: now.minute , second: now.second , millisecond: now.millisecond , microsecond: now.microsecond , nanosecond: now.nanosecond , timezone: now.timezone , formatted: toString(now) }"
-        )
-      computedSpatial: _Neo4jPoint
         @cypher(
-          statement: "WITH point({ x: 10, y: 20, z: 15 }) AS instance RETURN { x: instance.x, y: instance.y, z: instance.z, crs: instance.crs }"
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
         )
-      computedStringList: [String]
-        @cypher(
-          statement: "UNWIND ['hello', 'world'] AS stringList RETURN stringList"
-        )
-      customWithArguments(
-        """
-        Mutation field argument
-        block description
-        """
-        strArg: String
-        strInputArg: strInput
-      ): String @cypher(statement: "RETURN $strInputArg.strArg")
-      testPublish: Boolean @neo4j_ignore
-      computedMovieSearch: [MovieSearch]
-        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
-      customCreateNode(
-        integer: Int
-        datetime: _Neo4jDateTimeInput
-        integers: [Int]
-        datetimes: [_Neo4jDateTimeInput]
-        point: _Neo4jPointInput
-        points: [_Neo4jPointInput]
-      ): Boolean
+      since: Int
+      time: _Neo4jTime
+      date: _Neo4jDate
+      datetime: _Neo4jDateTime
+      ratings: [String]
+      datetimes: [_Neo4jDateTime]
+      localtime: _Neo4jLocalTime
+      localdatetime: _Neo4jLocalDateTime
+      location: _Neo4jPoint
+      to: User
+    }
+
+    type Rated @relation {
+      from: User
+      currentUserId(strArg: String): String
         @cypher(
-          statement: "CREATE (n:Node { integer: $integer, datetime: datetime($datetime), point: point($point), integers: $integers, datetimes: [value IN $datetimes | datetime(value)], points: [value IN $points | point(value)] }) RETURN TRUE"
-        )
-      AddMovieExtensionNode(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _AddMovieExtensionNodePayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Create"
-            "create:movie"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveMovieExtensionNode(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _RemoveMovieExtensionNodePayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Delete"
-            "delete:movie"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      MergeMovieExtensionNode(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _MergeMovieExtensionNodePayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
-        )
-      AddMovieGenres(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _AddMovieGenresPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Create"
-            "create:movie"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveMovieGenres(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _RemoveMovieGenresPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Delete"
-            "delete:movie"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      MergeMovieGenres(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _MergeMovieGenresPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
-        )
-      AddMovieActors(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _AddMovieActorsPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: [
-            "Actor: Create"
-            "create:actor"
-            "Movie: Create"
-            "create:movie"
-          ]
-        )
-      RemoveMovieActors(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _RemoveMovieActorsPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: [
-            "Actor: Delete"
-            "delete:actor"
-            "Movie: Delete"
-            "delete:movie"
-          ]
-        )
-      MergeMovieActors(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _MergeMovieActorsPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: ["Actor: Merge", "merge:actor", "Movie: Merge", "merge:movie"]
-        )
-      AddMovieFilmedIn(
-        from: _MovieInput!
-        to: _StateInput!
-      ): _AddMovieFilmedInPayload
-        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
-        @hasScope(
-          scopes: [
-            "Movie: Create"
-            "create:movie"
-            "State: Create"
-            "create:state"
-          ]
-        )
-      RemoveMovieFilmedIn(
-        from: _MovieInput!
-        to: _StateInput!
-      ): _RemoveMovieFilmedInPayload
-        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
-        @hasScope(
-          scopes: [
-            "Movie: Delete"
-            "delete:movie"
-            "State: Delete"
-            "delete:state"
-          ]
-        )
-      MergeMovieFilmedIn(
-        from: _MovieInput!
-        to: _StateInput!
-      ): _MergeMovieFilmedInPayload
-        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
-        @hasScope(
-          scopes: ["Movie: Merge", "merge:movie", "State: Merge", "merge:state"]
-        )
-      AddMovieRatings(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _AddMovieRatingsPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Create"
-            "create:user"
-            "Movie: Create"
-            "create:movie"
-          ]
-        )
-      RemoveMovieRatings(
-        from: _UserInput!
-        to: _MovieInput!
-      ): _RemoveMovieRatingsPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Delete"
-            "delete:user"
-            "Movie: Delete"
-            "delete:movie"
-          ]
-        )
-      UpdateMovieRatings(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _UpdateMovieRatingsPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Update"
-            "update:user"
-            "Movie: Update"
-            "update:movie"
-          ]
-        )
-      MergeMovieRatings(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _MergeMovieRatingsPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
-        )
-      CreateMovie(
-        movieId: ID
-        title: String
-        someprefix_title_with_underscores: String
-        year: Int
-        released: _Neo4jDateTimeInput
-        plot: String
-        poster: String
-        imdbRating: Float
-        avgStars: Float
-        location: _Neo4jPointInput
-        locations: [_Neo4jPointInput]
-        years: [Int]
-        titles: [String]
-        imdbRatings: [Float]
-        releases: [_Neo4jDateTimeInput]
-        booleans: [Boolean]
-        enums: [BookGenre]
-        extensionScalar: String
-      ): Movie @hasScope(scopes: ["Movie: Create", "create:movie"])
-      UpdateMovie(
-        movieId: ID!
-        title: String
-        someprefix_title_with_underscores: String
-        year: Int
-        released: _Neo4jDateTimeInput
-        plot: String
-        poster: String
-        imdbRating: Float
-        avgStars: Float
-        location: _Neo4jPointInput
-        locations: [_Neo4jPointInput]
-        years: [Int]
-        titles: [String]
-        imdbRatings: [Float]
-        releases: [_Neo4jDateTimeInput]
-        booleans: [Boolean]
-        enums: [BookGenre]
-        extensionScalar: String
-      ): Movie @hasScope(scopes: ["Movie: Update", "update:movie"])
-      DeleteMovie(movieId: ID!): Movie
-        @hasScope(scopes: ["Movie: Delete", "delete:movie"])
-      MergeMovie(
-        movieId: ID!
-        title: String
-        someprefix_title_with_underscores: String
-        year: Int
-        released: _Neo4jDateTimeInput
-        plot: String
-        poster: String
-        imdbRating: Float
-        avgStars: Float
-        location: _Neo4jPointInput
-        locations: [_Neo4jPointInput]
-        years: [Int]
-        titles: [String]
-        imdbRatings: [Float]
-        releases: [_Neo4jDateTimeInput]
-        booleans: [Boolean]
-        enums: [BookGenre]
-        extensionScalar: String
-      ): Movie @hasScope(scopes: ["Movie: Merge", "merge:movie"])
-      AddGenreMovies(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _AddGenreMoviesPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Create"
-            "create:movie"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveGenreMovies(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _RemoveGenreMoviesPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: [
-            "Movie: Delete"
-            "delete:movie"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      MergeGenreMovies(
-        from: _MovieInput!
-        to: _GenreInput!
-      ): _MergeGenreMoviesPayload
-        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
-        @hasScope(
-          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
-        )
-      AddGenreInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _AddGenreInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveGenreInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-      ): _RemoveGenreInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      UpdateGenreInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _UpdateGenreInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Genre: Update"
-            "update:genre"
-          ]
-        )
-      MergeGenreInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _MergeGenreInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Genre: Merge"
-            "merge:genre"
-          ]
-        )
-      CreateGenre(name: String): Genre
-        @hasScope(scopes: ["Genre: Create", "create:genre"])
-      DeleteGenre(name: String!): Genre
-        @hasScope(scopes: ["Genre: Delete", "delete:genre"])
-      MergeGenre(name: String!): Genre
-        @hasScope(scopes: ["Genre: Merge", "merge:genre"])
-      CreateState(name: String!, id: ID): State
-        @hasScope(scopes: ["State: Create", "create:state"])
-      UpdateState(name: String!, id: ID): State
-        @hasScope(scopes: ["State: Update", "update:state"])
-      DeleteState(name: String!): State
-        @hasScope(scopes: ["State: Delete", "delete:state"])
-      MergeState(name: String!, id: ID): State
-        @hasScope(scopes: ["State: Merge", "merge:state"])
-      AddPersonInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _AddPersonInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemovePersonInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-      ): _RemovePersonInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      UpdatePersonInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _UpdatePersonInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Genre: Update"
-            "update:genre"
-          ]
-        )
-      MergePersonInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _MergePersonInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Genre: Merge"
-            "merge:genre"
-          ]
-        )
-      AddPersonReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _AddPersonReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemovePersonReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-      ): _RemovePersonReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      UpdatePersonReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _UpdatePersonReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Person: Update"
-            "update:person"
-          ]
-        )
-      MergePersonReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _MergePersonReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      AddActorMovies(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _AddActorMoviesPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: [
-            "Actor: Create"
-            "create:actor"
-            "Movie: Create"
-            "create:movie"
-          ]
-        )
-      RemoveActorMovies(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _RemoveActorMoviesPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: [
-            "Actor: Delete"
-            "delete:actor"
-            "Movie: Delete"
-            "delete:movie"
-          ]
-        )
-      MergeActorMovies(
-        from: _ActorInput!
-        to: _MovieInput!
-      ): _MergeActorMoviesPayload
-        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
-        @hasScope(
-          scopes: ["Actor: Merge", "merge:actor", "Movie: Merge", "merge:movie"]
-        )
-      AddActorKnows(
-        from: _ActorInput!
-        to: _PersonInput!
-      ): _AddActorKnowsPayload
-        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
-        @hasScope(
-          scopes: [
-            "Actor: Create"
-            "create:actor"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemoveActorKnows(
-        from: _ActorInput!
-        to: _PersonInput!
-      ): _RemoveActorKnowsPayload
-        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
-        @hasScope(
-          scopes: [
-            "Actor: Delete"
-            "delete:actor"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      MergeActorKnows(
-        from: _ActorInput!
-        to: _PersonInput!
-      ): _MergeActorKnowsPayload
-        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
-        @hasScope(
-          scopes: [
-            "Actor: Merge"
-            "merge:actor"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      AddActorInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _AddActorInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveActorInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-      ): _RemoveActorInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      UpdateActorInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _UpdateActorInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Genre: Update"
-            "update:genre"
-          ]
-        )
-      MergeActorInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _MergeActorInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Genre: Merge"
-            "merge:genre"
-          ]
-        )
-      AddActorReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _AddActorReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemoveActorReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-      ): _RemoveActorReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      UpdateActorReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _UpdateActorReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Person: Update"
-            "update:person"
-          ]
-        )
-      MergeActorReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _MergeActorReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      CreateActor(
-        userId: ID
-        name: String
-        extensionScalar: String
-        datetimes: [_Neo4jDateTimeInput]
-        strings: [String]
-      ): Actor @hasScope(scopes: ["Actor: Create", "create:actor"])
-      UpdateActor(
-        userId: ID!
-        name: String
-        extensionScalar: String
-        datetimes: [_Neo4jDateTimeInput]
-        strings: [String]
-      ): Actor @hasScope(scopes: ["Actor: Update", "update:actor"])
-      DeleteActor(userId: ID!): Actor
-        @hasScope(scopes: ["Actor: Delete", "delete:actor"])
-      MergeActor(
-        userId: ID!
-        name: String
-        extensionScalar: String
-        datetimes: [_Neo4jDateTimeInput]
-        strings: [String]
-      ): Actor @hasScope(scopes: ["Actor: Merge", "merge:actor"])
-      AddUserInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _AddUserInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveUserInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-      ): _RemoveUserInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      UpdateUserInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _UpdateUserInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Genre: Update"
-            "update:genre"
-          ]
-        )
-      MergeUserInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _MergeUserInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Genre: Merge"
-            "merge:genre"
-          ]
-        )
-      AddUserReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _AddUserReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemoveUserReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-      ): _RemoveUserReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      UpdateUserReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _UpdateUserReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Person: Update"
-            "update:person"
-          ]
-        )
-      MergeUserReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _MergeUserReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      AddUserRated(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _AddUserRatedPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Create"
-            "create:user"
-            "Movie: Create"
-            "create:movie"
-          ]
-        )
-      RemoveUserRated(
-        from: _UserInput!
-        to: _MovieInput!
-      ): _RemoveUserRatedPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Delete"
-            "delete:user"
-            "Movie: Delete"
-            "delete:movie"
-          ]
-        )
-      UpdateUserRated(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _UpdateUserRatedPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Update"
-            "update:user"
-            "Movie: Update"
-            "update:movie"
-          ]
-        )
-      MergeUserRated(
-        from: _UserInput!
-        to: _MovieInput!
-        data: _RatedInput!
-      ): _MergeUserRatedPayload
-        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
-        )
-      AddUserFriends(
-        from: _UserInput!
-        to: _UserInput!
-        data: _FriendOfInput!
-      ): _AddUserFriendsPayload
-        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
-        @hasScope(
-          scopes: ["User: Create", "create:user", "User: Create", "create:user"]
-        )
-      RemoveUserFriends(
-        from: _UserInput!
-        to: _UserInput!
-      ): _RemoveUserFriendsPayload
-        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
-        @hasScope(
-          scopes: ["User: Delete", "delete:user", "User: Delete", "delete:user"]
-        )
-      UpdateUserFriends(
-        from: _UserInput!
-        to: _UserInput!
-        data: _FriendOfInput!
-      ): _UpdateUserFriendsPayload
-        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
-        @hasScope(
-          scopes: ["User: Update", "update:user", "User: Update", "update:user"]
-        )
-      MergeUserFriends(
-        from: _UserInput!
-        to: _UserInput!
-        data: _FriendOfInput!
-      ): _MergeUserFriendsPayload
-        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
-        @hasScope(
-          scopes: ["User: Merge", "merge:user", "User: Merge", "merge:user"]
-        )
-      AddUserFavorites(
-        from: _UserInput!
-        to: _MovieInput!
-      ): _AddUserFavoritesPayload
-        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Create"
-            "create:user"
-            "Movie: Create"
-            "create:movie"
-          ]
-        )
-      RemoveUserFavorites(
-        from: _UserInput!
-        to: _MovieInput!
-      ): _RemoveUserFavoritesPayload
-        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: [
-            "User: Delete"
-            "delete:user"
-            "Movie: Delete"
-            "delete:movie"
-          ]
-        )
-      MergeUserFavorites(
-        from: _UserInput!
-        to: _MovieInput!
-      ): _MergeUserFavoritesPayload
-        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
-        @hasScope(
-          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
-        )
-      CreateUser(userId: ID, name: String, extensionScalar: String): User
-        @hasScope(scopes: ["User: Create", "create:user"])
-      UpdateUser(userId: ID!, name: String, extensionScalar: String): User
-        @hasScope(scopes: ["User: Update", "update:user"])
-      DeleteUser(userId: ID!): User
-        @hasScope(scopes: ["User: Delete", "delete:user"])
-      MergeUser(userId: ID!, name: String, extensionScalar: String): User
-        @hasScope(scopes: ["User: Merge", "merge:user"])
-      CreateBook(genre: BookGenre): Book
-        @hasScope(scopes: ["Book: Create", "create:book"])
-      DeleteBook(genre: BookGenre!): Book
-        @hasScope(scopes: ["Book: Delete", "delete:book"])
-      MergeBook(genre: BookGenre!): Book
-        @hasScope(scopes: ["Book: Merge", "merge:book"])
-      CreateNodeTypeMutationTest(
-        NodeTypeMutationTest: BookGenre
-      ): NodeTypeMutationTest
-        @hasScope(
-          scopes: [
-            "NodeTypeMutationTest: Create"
-            "create:nodetypemutationtest"
-          ]
-        )
-      DeleteNodeTypeMutationTest(
-        NodeTypeMutationTest: BookGenre!
-      ): NodeTypeMutationTest
-        @hasScope(
-          scopes: [
-            "NodeTypeMutationTest: Delete"
-            "delete:nodetypemutationtest"
-          ]
-        )
-      MergeNodeTypeMutationTest(
-        NodeTypeMutationTest: BookGenre!
-      ): NodeTypeMutationTest
-        @hasScope(
-          scopes: ["NodeTypeMutationTest: Merge", "merge:nodetypemutationtest"]
-        )
-      CreatecurrentUserId(userId: String): currentUserId
-        @hasScope(scopes: ["currentUserId: Create", "create:currentuserid"])
-      DeletecurrentUserId(userId: String!): currentUserId
-        @hasScope(scopes: ["currentUserId: Delete", "delete:currentuserid"])
-      MergecurrentUserId(userId: String!): currentUserId
-        @hasScope(scopes: ["currentUserId: Merge", "merge:currentuserid"])
-      AddTemporalNodeTemporalNodes(
-        from: _TemporalNodeInput!
-        to: _TemporalNodeInput!
-      ): _AddTemporalNodeTemporalNodesPayload
-        @MutationMeta(
-          relationship: "TEMPORAL"
-          from: "TemporalNode"
-          to: "TemporalNode"
-        )
-        @hasScope(
-          scopes: [
-            "TemporalNode: Create"
-            "create:temporalnode"
-            "TemporalNode: Create"
-            "create:temporalnode"
-          ]
-        )
-      RemoveTemporalNodeTemporalNodes(
-        from: _TemporalNodeInput!
-        to: _TemporalNodeInput!
-      ): _RemoveTemporalNodeTemporalNodesPayload
-        @MutationMeta(
-          relationship: "TEMPORAL"
-          from: "TemporalNode"
-          to: "TemporalNode"
-        )
-        @hasScope(
-          scopes: [
-            "TemporalNode: Delete"
-            "delete:temporalnode"
-            "TemporalNode: Delete"
-            "delete:temporalnode"
-          ]
-        )
-      MergeTemporalNodeTemporalNodes(
-        from: _TemporalNodeInput!
-        to: _TemporalNodeInput!
-      ): _MergeTemporalNodeTemporalNodesPayload
-        @MutationMeta(
-          relationship: "TEMPORAL"
-          from: "TemporalNode"
-          to: "TemporalNode"
-        )
-        @hasScope(
-          scopes: [
-            "TemporalNode: Merge"
-            "merge:temporalnode"
-            "TemporalNode: Merge"
-            "merge:temporalnode"
-          ]
-        )
-      CreateTemporalNode(
-        datetime: _Neo4jDateTimeInput
-        name: String
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        localdatetimes: [_Neo4jLocalDateTimeInput]
-      ): TemporalNode
-        @hasScope(scopes: ["TemporalNode: Create", "create:temporalnode"])
-      UpdateTemporalNode(
-        datetime: _Neo4jDateTimeInput
-        name: String!
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        localdatetimes: [_Neo4jLocalDateTimeInput]
-      ): TemporalNode
-        @hasScope(scopes: ["TemporalNode: Update", "update:temporalnode"])
-      DeleteTemporalNode(name: String!): TemporalNode
-        @hasScope(scopes: ["TemporalNode: Delete", "delete:temporalnode"])
-      MergeTemporalNode(
-        datetime: _Neo4jDateTimeInput
-        name: String!
-        time: _Neo4jTimeInput
-        date: _Neo4jDateInput
-        localtime: _Neo4jLocalTimeInput
-        localdatetime: _Neo4jLocalDateTimeInput
-        localdatetimes: [_Neo4jLocalDateTimeInput]
-      ): TemporalNode
-        @hasScope(scopes: ["TemporalNode: Merge", "merge:temporalnode"])
-      AddSpatialNodeSpatialNodes(
-        from: _SpatialNodeInput!
-        to: _SpatialNodeInput!
-      ): _AddSpatialNodeSpatialNodesPayload
-        @MutationMeta(
-          relationship: "SPATIAL"
-          from: "SpatialNode"
-          to: "SpatialNode"
-        )
-        @hasScope(
-          scopes: [
-            "SpatialNode: Create"
-            "create:spatialnode"
-            "SpatialNode: Create"
-            "create:spatialnode"
-          ]
-        )
-      RemoveSpatialNodeSpatialNodes(
-        from: _SpatialNodeInput!
-        to: _SpatialNodeInput!
-      ): _RemoveSpatialNodeSpatialNodesPayload
-        @MutationMeta(
-          relationship: "SPATIAL"
-          from: "SpatialNode"
-          to: "SpatialNode"
-        )
-        @hasScope(
-          scopes: [
-            "SpatialNode: Delete"
-            "delete:spatialnode"
-            "SpatialNode: Delete"
-            "delete:spatialnode"
-          ]
-        )
-      MergeSpatialNodeSpatialNodes(
-        from: _SpatialNodeInput!
-        to: _SpatialNodeInput!
-      ): _MergeSpatialNodeSpatialNodesPayload
-        @MutationMeta(
-          relationship: "SPATIAL"
-          from: "SpatialNode"
-          to: "SpatialNode"
-        )
-        @hasScope(
-          scopes: [
-            "SpatialNode: Merge"
-            "merge:spatialnode"
-            "SpatialNode: Merge"
-            "merge:spatialnode"
-          ]
-        )
-      CreateSpatialNode(id: ID, point: _Neo4jPointInput): SpatialNode
-        @hasScope(scopes: ["SpatialNode: Create", "create:spatialnode"])
-      UpdateSpatialNode(id: ID!, point: _Neo4jPointInput): SpatialNode
-        @hasScope(scopes: ["SpatialNode: Update", "update:spatialnode"])
-      DeleteSpatialNode(id: ID!): SpatialNode
-        @hasScope(scopes: ["SpatialNode: Delete", "delete:spatialnode"])
-      MergeSpatialNode(id: ID!, point: _Neo4jPointInput): SpatialNode
-        @hasScope(scopes: ["SpatialNode: Merge", "merge:spatialnode"])
-      AddCasedTypeState(
-        from: _CasedTypeInput!
-        to: _StateInput!
-      ): _AddCasedTypeStatePayload
-        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
-        @hasScope(
-          scopes: [
-            "CasedType: Create"
-            "create:casedtype"
-            "State: Create"
-            "create:state"
-          ]
-        )
-      RemoveCasedTypeState(
-        from: _CasedTypeInput!
-        to: _StateInput!
-      ): _RemoveCasedTypeStatePayload
-        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
-        @hasScope(
-          scopes: [
-            "CasedType: Delete"
-            "delete:casedtype"
-            "State: Delete"
-            "delete:state"
-          ]
-        )
-      MergeCasedTypeState(
-        from: _CasedTypeInput!
-        to: _StateInput!
-      ): _MergeCasedTypeStatePayload
-        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
-        @hasScope(
-          scopes: [
-            "CasedType: Merge"
-            "merge:casedtype"
-            "State: Merge"
-            "merge:state"
-          ]
-        )
-      CreateCasedType(name: String): CasedType
-        @hasScope(scopes: ["CasedType: Create", "create:casedtype"])
-      DeleteCasedType(name: String!): CasedType
-        @hasScope(scopes: ["CasedType: Delete", "delete:casedtype"])
-      MergeCasedType(name: String!): CasedType
-        @hasScope(scopes: ["CasedType: Merge", "merge:casedtype"])
-      AddCameraOperators(
-        from: _PersonInput!
-        to: _CameraInput!
-      ): _AddCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveCameraOperators(
-        from: _PersonInput!
-        to: _CameraInput!
-      ): _RemoveCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeCameraOperators(
-        from: _PersonInput!
-        to: _CameraInput!
-      ): _MergeCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      AddCameraReflexiveInterfaceRelationship(
-        from: _CameraInput!
-        to: _CameraInput!
-      ): _AddCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "Camera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "Camera: Create"
-            "create:camera"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveCameraReflexiveInterfaceRelationship(
-        from: _CameraInput!
-        to: _CameraInput!
-      ): _RemoveCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "Camera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "Camera: Delete"
-            "delete:camera"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeCameraReflexiveInterfaceRelationship(
-        from: _CameraInput!
-        to: _CameraInput!
-      ): _MergeCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "Camera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "Camera: Merge"
-            "merge:camera"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      AddOldCameraOperators(
-        from: _PersonInput!
-        to: _OldCameraInput!
-      ): _AddOldCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "OldCamera: Create"
-            "create:oldcamera"
-          ]
-        )
-      RemoveOldCameraOperators(
-        from: _PersonInput!
-        to: _OldCameraInput!
-      ): _RemoveOldCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "OldCamera: Delete"
-            "delete:oldcamera"
-          ]
-        )
-      MergeOldCameraOperators(
-        from: _PersonInput!
-        to: _OldCameraInput!
-      ): _MergeOldCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "OldCamera: Merge"
-            "merge:oldcamera"
-          ]
-        )
-      AddOldCameraReflexiveInterfaceRelationship(
-        from: _OldCameraInput!
-        to: _CameraInput!
-      ): _AddOldCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "OldCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "OldCamera: Create"
-            "create:oldcamera"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveOldCameraReflexiveInterfaceRelationship(
-        from: _OldCameraInput!
-        to: _CameraInput!
-      ): _RemoveOldCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "OldCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "OldCamera: Delete"
-            "delete:oldcamera"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeOldCameraReflexiveInterfaceRelationship(
-        from: _OldCameraInput!
-        to: _CameraInput!
-      ): _MergeOldCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "OldCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "OldCamera: Merge"
-            "merge:oldcamera"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      CreateOldCamera(
-        type: String
-        id: ID
-        make: String
-        weight: Int
-        smell: String
-      ): OldCamera @hasScope(scopes: ["OldCamera: Create", "create:oldcamera"])
-      UpdateOldCamera(
-        type: String
-        id: ID!
-        make: String
-        weight: Int
-        smell: String
-      ): OldCamera @hasScope(scopes: ["OldCamera: Update", "update:oldcamera"])
-      DeleteOldCamera(id: ID!): OldCamera
-        @hasScope(scopes: ["OldCamera: Delete", "delete:oldcamera"])
-      MergeOldCamera(
-        type: String
-        id: ID!
-        make: String
-        weight: Int
-        smell: String
-      ): OldCamera @hasScope(scopes: ["OldCamera: Merge", "merge:oldcamera"])
-      AddNewCameraOperators(
-        from: _PersonInput!
-        to: _NewCameraInput!
-      ): _AddNewCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "NewCamera: Create"
-            "create:newcamera"
-          ]
-        )
-      RemoveNewCameraOperators(
-        from: _PersonInput!
-        to: _NewCameraInput!
-      ): _RemoveNewCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "NewCamera: Delete"
-            "delete:newcamera"
-          ]
-        )
-      MergeNewCameraOperators(
-        from: _PersonInput!
-        to: _NewCameraInput!
-      ): _MergeNewCameraOperatorsPayload
-        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "NewCamera: Merge"
-            "merge:newcamera"
-          ]
-        )
-      AddNewCameraReflexiveInterfaceRelationship(
-        from: _NewCameraInput!
-        to: _CameraInput!
-      ): _AddNewCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "NewCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "NewCamera: Create"
-            "create:newcamera"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveNewCameraReflexiveInterfaceRelationship(
-        from: _NewCameraInput!
-        to: _CameraInput!
-      ): _RemoveNewCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "NewCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "NewCamera: Delete"
-            "delete:newcamera"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeNewCameraReflexiveInterfaceRelationship(
-        from: _NewCameraInput!
-        to: _CameraInput!
-      ): _MergeNewCameraReflexiveInterfaceRelationshipPayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-          from: "NewCamera"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "NewCamera: Merge"
-            "merge:newcamera"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      CreateNewCamera(
-        type: String
-        id: ID
-        make: String
-        weight: Int
-        features: [String]
-      ): NewCamera @hasScope(scopes: ["NewCamera: Create", "create:newcamera"])
-      UpdateNewCamera(
-        type: String
-        id: ID!
-        make: String
-        weight: Int
-        features: [String]
-      ): NewCamera @hasScope(scopes: ["NewCamera: Update", "update:newcamera"])
-      DeleteNewCamera(id: ID!): NewCamera
-        @hasScope(scopes: ["NewCamera: Delete", "delete:newcamera"])
-      MergeNewCamera(
-        type: String
-        id: ID!
-        make: String
-        weight: Int
-        features: [String]
-      ): NewCamera @hasScope(scopes: ["NewCamera: Merge", "merge:newcamera"])
-      AddCameraManFavoriteCamera(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _AddCameraManFavoriteCameraPayload
-        @MutationMeta(
-          relationship: "favoriteCamera"
-          from: "CameraMan"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Create"
-            "create:cameraman"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveCameraManFavoriteCamera(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _RemoveCameraManFavoriteCameraPayload
-        @MutationMeta(
-          relationship: "favoriteCamera"
-          from: "CameraMan"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Delete"
-            "delete:cameraman"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeCameraManFavoriteCamera(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _MergeCameraManFavoriteCameraPayload
-        @MutationMeta(
-          relationship: "favoriteCamera"
-          from: "CameraMan"
-          to: "Camera"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Merge"
-            "merge:cameraman"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      AddCameraManCameras(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _AddCameraManCamerasPayload
-        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
-        @hasScope(
-          scopes: [
-            "CameraMan: Create"
-            "create:cameraman"
-            "Camera: Create"
-            "create:camera"
-          ]
-        )
-      RemoveCameraManCameras(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _RemoveCameraManCamerasPayload
-        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
-        @hasScope(
-          scopes: [
-            "CameraMan: Delete"
-            "delete:cameraman"
-            "Camera: Delete"
-            "delete:camera"
-          ]
-        )
-      MergeCameraManCameras(
-        from: _CameraManInput!
-        to: _CameraInput!
-      ): _MergeCameraManCamerasPayload
-        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
-        @hasScope(
-          scopes: [
-            "CameraMan: Merge"
-            "merge:cameraman"
-            "Camera: Merge"
-            "merge:camera"
-          ]
-        )
-      AddCameraManCameraBuddy(
-        from: _CameraManInput!
-        to: _PersonInput!
-      ): _AddCameraManCameraBuddyPayload
-        @MutationMeta(
-          relationship: "cameraBuddy"
-          from: "CameraMan"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Create"
-            "create:cameraman"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemoveCameraManCameraBuddy(
-        from: _CameraManInput!
-        to: _PersonInput!
-      ): _RemoveCameraManCameraBuddyPayload
-        @MutationMeta(
-          relationship: "cameraBuddy"
-          from: "CameraMan"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Delete"
-            "delete:cameraman"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      MergeCameraManCameraBuddy(
-        from: _CameraManInput!
-        to: _PersonInput!
-      ): _MergeCameraManCameraBuddyPayload
-        @MutationMeta(
-          relationship: "cameraBuddy"
-          from: "CameraMan"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "CameraMan: Merge"
-            "merge:cameraman"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      AddCameraManInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _AddCameraManInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Genre: Create"
-            "create:genre"
-          ]
-        )
-      RemoveCameraManInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-      ): _RemoveCameraManInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Genre: Delete"
-            "delete:genre"
-          ]
-        )
-      UpdateCameraManInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _UpdateCameraManInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Genre: Update"
-            "update:genre"
-          ]
-        )
-      MergeCameraManInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _GenreInput!
-        data: _InterfacedRelationshipTypeInput!
-      ): _MergeCameraManInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Genre"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Genre: Merge"
-            "merge:genre"
-          ]
-        )
-      AddCameraManReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _AddCameraManReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Create"
-            "create:person"
-            "Person: Create"
-            "create:person"
-          ]
-        )
-      RemoveCameraManReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-      ): _RemoveCameraManReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Delete"
-            "delete:person"
-            "Person: Delete"
-            "delete:person"
-          ]
-        )
-      UpdateCameraManReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _UpdateCameraManReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Update"
-            "update:person"
-            "Person: Update"
-            "update:person"
-          ]
-        )
-      MergeCameraManReflexiveInterfacedRelationshipType(
-        from: _PersonInput!
-        to: _PersonInput!
-        data: _ReflexiveInterfacedRelationshipTypeInput!
-      ): _MergeCameraManReflexiveInterfacedRelationshipTypePayload
-        @MutationMeta(
-          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-          from: "Person"
-          to: "Person"
-        )
-        @hasScope(
-          scopes: [
-            "Person: Merge"
-            "merge:person"
-            "Person: Merge"
-            "merge:person"
-          ]
-        )
-      CreateCameraMan(
-        userId: ID
-        name: String
-        extensionScalar: String
-      ): CameraMan @hasScope(scopes: ["CameraMan: Create", "create:cameraman"])
-      UpdateCameraMan(
-        userId: ID!
-        name: String
-        extensionScalar: String
-      ): CameraMan @hasScope(scopes: ["CameraMan: Update", "update:cameraman"])
-      DeleteCameraMan(userId: ID!): CameraMan
-        @hasScope(scopes: ["CameraMan: Delete", "delete:cameraman"])
-      MergeCameraMan(
-        userId: ID!
-        name: String
-        extensionScalar: String
-      ): CameraMan @hasScope(scopes: ["CameraMan: Merge", "merge:cameraman"])
-      AddUniqueNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _AddUniqueNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Create"
-            "create:uniquenode"
-            "UniqueStringNode: Create"
-            "create:uniquestringnode"
-          ]
-        )
-      RemoveUniqueNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _RemoveUniqueNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Delete"
-            "delete:uniquenode"
-            "UniqueStringNode: Delete"
-            "delete:uniquestringnode"
-          ]
-        )
-      MergeUniqueNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _MergeUniqueNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Merge"
-            "merge:uniquenode"
-            "UniqueStringNode: Merge"
-            "merge:uniquestringnode"
-          ]
-        )
-      CreateUniqueNode(string: String, id: ID, anotherId: ID): UniqueNode
-        @hasScope(scopes: ["UniqueNode: Create", "create:uniquenode"])
-      UpdateUniqueNode(string: String, id: ID!, anotherId: ID): UniqueNode
-        @hasScope(scopes: ["UniqueNode: Update", "update:uniquenode"])
-      DeleteUniqueNode(id: ID!): UniqueNode
-        @hasScope(scopes: ["UniqueNode: Delete", "delete:uniquenode"])
-      MergeUniqueNode(string: String, id: ID!, anotherId: ID): UniqueNode
-        @hasScope(scopes: ["UniqueNode: Merge", "merge:uniquenode"])
-      AddUniqueStringNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _AddUniqueStringNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Create"
-            "create:uniquenode"
-            "UniqueStringNode: Create"
-            "create:uniquestringnode"
-          ]
-        )
-      RemoveUniqueStringNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _RemoveUniqueStringNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Delete"
-            "delete:uniquenode"
-            "UniqueStringNode: Delete"
-            "delete:uniquestringnode"
-          ]
-        )
-      MergeUniqueStringNodeTestRelation(
-        from: _UniqueNodeInput!
-        to: _UniqueStringNodeInput!
-      ): _MergeUniqueStringNodeTestRelationPayload
-        @MutationMeta(
-          relationship: "TEST_RELATION"
-          from: "UniqueNode"
-          to: "UniqueStringNode"
-        )
-        @hasScope(
-          scopes: [
-            "UniqueNode: Merge"
-            "merge:uniquenode"
-            "UniqueStringNode: Merge"
-            "merge:uniquestringnode"
-          ]
-        )
-      CreateUniqueStringNode(id: ID!, uniqueString: String): UniqueStringNode
-        @hasScope(
-          scopes: ["UniqueStringNode: Create", "create:uniquestringnode"]
-        )
-      UpdateUniqueStringNode(id: ID, uniqueString: String!): UniqueStringNode
-        @hasScope(
-          scopes: ["UniqueStringNode: Update", "update:uniquestringnode"]
-        )
-      DeleteUniqueStringNode(uniqueString: String!): UniqueStringNode
-        @hasScope(
-          scopes: ["UniqueStringNode: Delete", "delete:uniquestringnode"]
-        )
-      MergeUniqueStringNode(id: ID, uniqueString: String!): UniqueStringNode
-        @hasScope(scopes: ["UniqueStringNode: Merge", "merge:uniquestringnode"])
-    }
-
-    extend type Mutation {
-      CustomCamera: Camera
-        @cypher(
-          statement: "CREATE (newCamera:Camera:NewCamera {id: apoc.create.uuid(), type: 'macro'}) RETURN newCamera"
-        )
-      CustomCameras: [Camera]
-        @cypher(
-          statement: "CREATE (newCamera:Camera:NewCamera {id: apoc.create.uuid(), type: 'macro', features: ['selfie', 'zoom']}) CREATE (oldCamera:Camera:OldCamera {id: apoc.create.uuid(), type: 'floating', smell: 'rusty' }) RETURN [newCamera, oldCamera]"
-        )
-    }
-    input _MovieInput {
-      movieId: ID!
-    }
-
-    input _GenreInput {
-      name: String!
-    }
-
-    type _AddMovieExtensionNodePayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _RemoveMovieExtensionNodePayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _MergeMovieExtensionNodePayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _AddMovieGenresPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _RemoveMovieGenresPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    input _ActorInput {
-      userId: ID!
-    }
-
-    type _AddMovieActorsPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
-    }
-
-    type _RemoveMovieActorsPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
-    }
-
-    input _StateInput {
-      name: String!
-    }
-
-    type _AddMovieFilmedInPayload
-      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
-      from: Movie
-      to: State
-    }
-
-    type _RemoveMovieFilmedInPayload
-      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
-      from: Movie
-      to: State
-    }
-
-    type _MergeMovieFilmedInPayload
-      @relation(name: "FILMED_IN", from: "Movie", to: "State") {
-      from: Movie
-      to: State
-    }
-
-    input _UserInput {
-      userId: ID!
-    }
-
-    input _RatedInput {
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTimeInput
-      date: _Neo4jDateInput
-      datetime: _Neo4jDateTimeInput
-      localtime: _Neo4jLocalTimeInput
-      localdatetime: _Neo4jLocalDateTimeInput
-      datetimes: [_Neo4jDateTimeInput]
-      location: _Neo4jPointInput
-    }
-
-    type _AddMovieRatingsPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-    }
-
-    type _RemoveMovieRatingsPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-    }
-
-    type _UpdateMovieRatingsPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
         )
       rating: Int
       ratings: [Int]
@@ -4647,796 +2178,1237 @@ test.cb('Test augmented schema', t => {
       datetimes: [_Neo4jDateTime]
       location: _Neo4jPoint
       _id: String
-    }
-
-    type _MergeMovieRatingsPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
       to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-    }
-
-    type _AddGenreMoviesPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _RemoveGenreMoviesPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
     }
 
-    type _MergeGenreMoviesPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
-    }
-
-    type _MergeMovieGenresPayload
-      @relation(name: "IN_GENRE", from: "Movie", to: "Genre") {
-      from: Movie
-      to: Genre
+    enum BookGenre {
+      Mystery
+      Science
     }
 
-    type _AddActorMoviesPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
+    input _BookInput {
+      genre: BookGenre!
     }
 
-    type _RemoveActorMoviesPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
+    enum _BookOrdering {
+      genre_asc
+      genre_desc
+      _id_asc
+      _id_desc
     }
 
-    type _MergeActorMoviesPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
+    input _BookFilter {
+      AND: [_BookFilter!]
+      OR: [_BookFilter!]
+      genre: BookGenre
+      genre_not: BookGenre
+      genre_in: [BookGenre!]
+      genre_not_in: [BookGenre!]
     }
 
-    type _MergeMovieActorsPayload
-      @relation(name: "ACTED_IN", from: "Actor", to: "Movie") {
-      from: Actor
-      to: Movie
+    type Book {
+      genre: BookGenre
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
-    type _AddActorKnowsPayload
-      @relation(name: "KNOWS", from: "Actor", to: "Person") {
-      from: Actor
-      to: Person
+    input _NodeTypeMutationTestInput {
+      NodeTypeMutationTest: BookGenre!
     }
 
-    type _MergeActorKnowsPayload
-      @relation(name: "KNOWS", from: "Actor", to: "Person") {
-      from: Actor
-      to: Person
+    type NodeTypeMutationTest {
+      NodeTypeMutationTest: BookGenre
     }
 
-    type _AddActorInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+    """
+    Custom ordering enum type
+    block description
+    """
+    enum _GenreOrdering {
+      name_desc
+      name_asc
     }
 
-    type _RemoveActorInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
+    input _currentUserIdInput {
+      userId: String!
     }
 
-    type _UpdateActorInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+    enum _currentUserIdOrdering {
+      userId_asc
+      userId_desc
+      _id_asc
+      _id_desc
     }
 
-    type _MergeActorInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+    input _currentUserIdFilter {
+      AND: [_currentUserIdFilter!]
+      OR: [_currentUserIdFilter!]
+      userId: String
+      userId_not: String
+      userId_in: [String!]
+      userId_not_in: [String!]
+      userId_contains: String
+      userId_not_contains: String
+      userId_starts_with: String
+      userId_not_starts_with: String
+      userId_ends_with: String
+      userId_not_ends_with: String
     }
 
-    type _AddActorReflexiveInterfacedRelationshipTypePayload
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      from: Person
-      to: Person
-      boolean: Boolean
+    type currentUserId {
+      userId: String
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
     }
 
-    type _RemoveActorReflexiveInterfacedRelationshipTypePayload
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      from: Person
-      to: Person
+    type _AddTemporalNodeTemporalNodesPayload
+      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: TemporalNode
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: TemporalNode
     }
 
-    type _UpdateActorReflexiveInterfacedRelationshipTypePayload
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      from: Person
-      to: Person
-      boolean: Boolean
-      _id: String
+    type _RemoveTemporalNodeTemporalNodesPayload
+      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: TemporalNode
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: TemporalNode
     }
 
-    type _MergeActorReflexiveInterfacedRelationshipTypePayload
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      from: Person
-      to: Person
-      boolean: Boolean
-      _id: String
+    type _MergeTemporalNodeTemporalNodesPayload
+      @relation(name: "TEMPORAL", from: "TemporalNode", to: "TemporalNode") {
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: TemporalNode
+      "Field for the TemporalNode node this TEMPORAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: TemporalNode
     }
 
-    type _RemoveActorKnowsPayload
-      @relation(name: "KNOWS", from: "Actor", to: "Person") {
-      from: Actor
-      to: Person
+    input _TemporalNodeInput {
+      name: String!
     }
 
-    enum _RatedOrdering {
-      currentUserId_asc
-      currentUserId_desc
-      rating_asc
-      rating_desc
+    enum _TemporalNodeOrdering {
+      datetime_asc
+      datetime_desc
+      name_asc
+      name_desc
       time_asc
       time_desc
       date_asc
       date_desc
-      datetime_asc
-      datetime_desc
       localtime_asc
       localtime_desc
       localdatetime_asc
       localdatetime_desc
+      computedTimestamp_asc
+      computedTimestamp_desc
       _id_asc
       _id_desc
     }
 
-    type _AddUserRatedPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-    }
-
-    type _RemoveUserRatedPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
+    input _TemporalNodeFilter {
+      AND: [_TemporalNodeFilter!]
+      OR: [_TemporalNodeFilter!]
+      datetime: _Neo4jDateTimeInput
+      datetime_not: _Neo4jDateTimeInput
+      datetime_in: [_Neo4jDateTimeInput!]
+      datetime_not_in: [_Neo4jDateTimeInput!]
+      datetime_lt: _Neo4jDateTimeInput
+      datetime_lte: _Neo4jDateTimeInput
+      datetime_gt: _Neo4jDateTimeInput
+      datetime_gte: _Neo4jDateTimeInput
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
+      time: _Neo4jTimeInput
+      time_not: _Neo4jTimeInput
+      time_in: [_Neo4jTimeInput!]
+      time_not_in: [_Neo4jTimeInput!]
+      time_lt: _Neo4jTimeInput
+      time_lte: _Neo4jTimeInput
+      time_gt: _Neo4jTimeInput
+      time_gte: _Neo4jTimeInput
+      date: _Neo4jDateInput
+      date_not: _Neo4jDateInput
+      date_in: [_Neo4jDateInput!]
+      date_not_in: [_Neo4jDateInput!]
+      date_lt: _Neo4jDateInput
+      date_lte: _Neo4jDateInput
+      date_gt: _Neo4jDateInput
+      date_gte: _Neo4jDateInput
+      localtime: _Neo4jLocalTimeInput
+      localtime_not: _Neo4jLocalTimeInput
+      localtime_in: [_Neo4jLocalTimeInput!]
+      localtime_not_in: [_Neo4jLocalTimeInput!]
+      localtime_lt: _Neo4jLocalTimeInput
+      localtime_lte: _Neo4jLocalTimeInput
+      localtime_gt: _Neo4jLocalTimeInput
+      localtime_gte: _Neo4jLocalTimeInput
+      localdatetime: _Neo4jLocalDateTimeInput
+      localdatetime_not: _Neo4jLocalDateTimeInput
+      localdatetime_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_not_in: [_Neo4jLocalDateTimeInput!]
+      localdatetime_lt: _Neo4jLocalDateTimeInput
+      localdatetime_lte: _Neo4jLocalDateTimeInput
+      localdatetime_gt: _Neo4jLocalDateTimeInput
+      localdatetime_gte: _Neo4jLocalDateTimeInput
+      localdatetimes: [_Neo4jLocalDateTimeInput!]
+      localdatetimes_not: [_Neo4jLocalDateTimeInput!]
+      localdatetimes_lt: [_Neo4jLocalDateTimeInput!]
+      localdatetimes_lte: [_Neo4jLocalDateTimeInput!]
+      localdatetimes_gt: [_Neo4jLocalDateTimeInput!]
+      localdatetimes_gte: [_Neo4jLocalDateTimeInput!]
+      temporalNodes: _TemporalNodeFilter
+      temporalNodes_not: _TemporalNodeFilter
+      temporalNodes_in: [_TemporalNodeFilter!]
+      temporalNodes_not_in: [_TemporalNodeFilter!]
+      temporalNodes_some: _TemporalNodeFilter
+      temporalNodes_none: _TemporalNodeFilter
+      temporalNodes_single: _TemporalNodeFilter
+      temporalNodes_every: _TemporalNodeFilter
     }
 
-    type _UpdateUserRatedPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
+    type TemporalNode {
+      datetime: _Neo4jDateTime
+      name: String
       time: _Neo4jTime
       date: _Neo4jDate
-      datetime: _Neo4jDateTime
       localtime: _Neo4jLocalTime
       localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
+      localdatetimes: [_Neo4jLocalDateTime]
+      computedTimestamp: String
+        @cypher(statement: "RETURN toString(datetime())")
+      temporalNodes(
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        datetime: _Neo4jDateTimeInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        first: Int
+        offset: Int
+        orderBy: [_TemporalNodeOrdering]
+        filter: _TemporalNodeFilter
+      ): [TemporalNode] @relation(name: "TEMPORAL", direction: OUT)
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
     }
 
-    type _MergeUserRatedPayload
-      @relation(name: "RATED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
+    type _AddSpatialNodeSpatialNodesPayload
+      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: SpatialNode
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: SpatialNode
     }
 
-    enum _FriendOfOrdering {
-      currentUserId_asc
-      currentUserId_desc
-      since_asc
-      since_desc
-      time_asc
-      time_desc
-      date_asc
-      date_desc
-      datetime_asc
-      datetime_desc
-      localtime_asc
-      localtime_desc
-      localdatetime_asc
-      localdatetime_desc
+    type _RemoveSpatialNodeSpatialNodesPayload
+      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: SpatialNode
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: SpatialNode
+    }
+
+    type _MergeSpatialNodeSpatialNodesPayload
+      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: SpatialNode
+      "Field for the SpatialNode node this SPATIAL [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: SpatialNode
+    }
+
+    input _SpatialNodeInput {
+      id: ID!
+    }
+
+    enum _SpatialNodeOrdering {
+      id_asc
+      id_desc
       _id_asc
       _id_desc
     }
 
-    input _FriendOfInput {
-      since: Int
-      time: _Neo4jTimeInput
-      date: _Neo4jDateInput
-      datetime: _Neo4jDateTimeInput
-      ratings: [String]
-      datetimes: [_Neo4jDateTimeInput]
-      localtime: _Neo4jLocalTimeInput
-      localdatetime: _Neo4jLocalDateTimeInput
-      location: _Neo4jPointInput
+    input _SpatialNodeFilter {
+      AND: [_SpatialNodeFilter!]
+      OR: [_SpatialNodeFilter!]
+      id: ID
+      id_not: ID
+      id_in: [ID!]
+      id_not_in: [ID!]
+      id_contains: ID
+      id_not_contains: ID
+      id_starts_with: ID
+      id_not_starts_with: ID
+      id_ends_with: ID
+      id_not_ends_with: ID
+      point: _Neo4jPointInput
+      point_not: _Neo4jPointInput
+      point_distance: _Neo4jPointDistanceFilter
+      point_distance_lt: _Neo4jPointDistanceFilter
+      point_distance_lte: _Neo4jPointDistanceFilter
+      point_distance_gt: _Neo4jPointDistanceFilter
+      point_distance_gte: _Neo4jPointDistanceFilter
+      spatialNodes: _SpatialNodeFilter
+      spatialNodes_not: _SpatialNodeFilter
+      spatialNodes_in: [_SpatialNodeFilter!]
+      spatialNodes_not_in: [_SpatialNodeFilter!]
+      spatialNodes_some: _SpatialNodeFilter
+      spatialNodes_none: _SpatialNodeFilter
+      spatialNodes_single: _SpatialNodeFilter
+      spatialNodes_every: _SpatialNodeFilter
     }
 
-    type _AddUserFriendsPayload
-      @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      from: User
-      to: User
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      since: Int
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      ratings: [String]
-      datetimes: [_Neo4jDateTime]
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      location: _Neo4jPoint
+    type SpatialNode {
+      id: ID!
+      point: _Neo4jPoint
+      spatialNodes(
+        point: _Neo4jPointInput
+        first: Int
+        offset: Int
+        orderBy: [_SpatialNodeOrdering]
+        filter: _SpatialNodeFilter
+      ): [SpatialNode] @relation(name: "SPATIAL", direction: OUT)
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
     }
 
-    type _RemoveUserFriendsPayload
-      @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      from: User
-      to: User
+    type ignoredType {
+      ignoredField: String @neo4j_ignore
     }
 
-    type _UpdateUserFriendsPayload
-      @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      from: User
-      to: User
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      since: Int
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      ratings: [String]
-      datetimes: [_Neo4jDateTime]
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      location: _Neo4jPoint
-      _id: String
+    "Custom scalar type line description"
+    scalar Time
+
+    scalar Date
+
+    scalar DateTime
+
+    scalar LocalTime
+
+    scalar LocalDateTime
+
+    "Input object type line description"
+    input strInput {
+      "Input field line description"
+      strArg: String
     }
 
-    type _MergeUserFriendsPayload
-      @relation(name: "FRIEND_OF", from: "User", to: "User") {
-      from: User
-      to: User
-      currentUserId: String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
-        )
-      since: Int
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      ratings: [String]
-      datetimes: [_Neo4jDateTime]
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      location: _Neo4jPoint
-      _id: String
+    enum Role {
+      reader
+      user
+      admin
     }
 
-    type _AddUserFavoritesPayload
-      @relation(name: "FAVORITED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
+    type _AddCasedTypeStatePayload
+      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
+      "Field for the CasedType node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CasedType
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
     }
 
-    type _RemoveUserFavoritesPayload
-      @relation(name: "FAVORITED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
+    type _RemoveCasedTypeStatePayload
+      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
+      "Field for the CasedType node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CasedType
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
     }
 
-    type _MergeUserFavoritesPayload
-      @relation(name: "FAVORITED", from: "User", to: "Movie") {
-      from: User
-      to: Movie
+    type _MergeCasedTypeStatePayload
+      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
+      "Field for the CasedType node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CasedType
+      "Field for the State node this FILMED_IN [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: State
+    }
+
+    input _CasedTypeInput {
+      name: String!
+    }
+
+    enum _CasedTypeOrdering {
+      name_asc
+      name_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _CasedTypeFilter {
+      AND: [_CasedTypeFilter!]
+      OR: [_CasedTypeFilter!]
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
+      state: _StateFilter
+      state_not: _StateFilter
+      state_in: [_StateFilter!]
+      state_not_in: [_StateFilter!]
     }
 
-    input _SpatialNodeInput {
-      id: ID!
+    type CasedType {
+      name: String
+      state(filter: _StateFilter): State
+        @relation(name: "FILMED_IN", direction: "OUT")
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
-    type _AddSpatialNodeSpatialNodesPayload
-      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
-      from: SpatialNode
-      to: SpatialNode
+    input _InterfaceNoScalarsFilter {
+      AND: [_InterfaceNoScalarsFilter!]
+      OR: [_InterfaceNoScalarsFilter!]
+      movies: _MovieFilter
+      movies_not: _MovieFilter
+      movies_in: [_MovieFilter!]
+      movies_not_in: [_MovieFilter!]
+      movies_some: _MovieFilter
+      movies_none: _MovieFilter
+      movies_single: _MovieFilter
+      movies_every: _MovieFilter
     }
 
-    type _RemoveSpatialNodeSpatialNodesPayload
-      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
-      from: SpatialNode
-      to: SpatialNode
+    interface InterfaceNoScalars {
+      movies(
+        first: Int
+        offset: Int
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie] @relation(name: "MOVIES", direction: OUT)
     }
 
-    type _MergeSpatialNodeSpatialNodesPayload
-      @relation(name: "SPATIAL", from: "SpatialNode", to: "SpatialNode") {
-      from: SpatialNode
-      to: SpatialNode
+    enum _InterfaceNoScalarsOrdering {
+      movies_asc
     }
 
-    input _CasedTypeInput {
-      name: String!
+    input _CameraFilter {
+      AND: [_CameraFilter!]
+      OR: [_CameraFilter!]
+      id: ID
+      id_not: ID
+      id_in: [ID!]
+      id_not_in: [ID!]
+      id_contains: ID
+      id_not_contains: ID
+      id_starts_with: ID
+      id_not_starts_with: ID
+      id_ends_with: ID
+      id_not_ends_with: ID
+      type: String
+      type_not: String
+      type_in: [String!]
+      type_not_in: [String!]
+      type_contains: String
+      type_not_contains: String
+      type_starts_with: String
+      type_not_starts_with: String
+      type_ends_with: String
+      type_not_ends_with: String
+      make: String
+      make_not: String
+      make_in: [String!]
+      make_not_in: [String!]
+      make_contains: String
+      make_not_contains: String
+      make_starts_with: String
+      make_not_starts_with: String
+      make_ends_with: String
+      make_not_ends_with: String
+      weight: Int
+      weight_not: Int
+      weight_in: [Int!]
+      weight_not_in: [Int!]
+      weight_lt: Int
+      weight_lte: Int
+      weight_gt: Int
+      weight_gte: Int
+      operators: _PersonFilter
+      operators_not: _PersonFilter
+      operators_in: [_PersonFilter!]
+      operators_not_in: [_PersonFilter!]
+      operators_some: _PersonFilter
+      operators_none: _PersonFilter
+      operators_single: _PersonFilter
+      operators_every: _PersonFilter
     }
 
-    type _AddCasedTypeStatePayload
-      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
-      from: CasedType
-      to: State
+    type _AddCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "Camera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _RemoveCasedTypeStatePayload
-      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
-      from: CasedType
-      to: State
+    type _RemoveCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "Camera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _MergeCasedTypeStatePayload
-      @relation(name: "FILMED_IN", from: "CasedType", to: "State") {
-      from: CasedType
-      to: State
+    type _MergeCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "Camera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Person
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _AddCameraManInterfacedRelationshipTypePayload
+    type _AddCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "Camera"
+        to: "Camera"
       ) {
-      from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Camera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _RemoveCameraManInterfacedRelationshipTypePayload
+    type _RemoveCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "Camera"
+        to: "Camera"
       ) {
-      from: Person
-      to: Genre
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Camera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _UpdateCameraManInterfacedRelationshipTypePayload
+    type _MergeCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "Camera"
+        to: "Camera"
       ) {
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: Camera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
+    }
+
+    input _CameraInput {
+      id: ID!
+    }
+
+    interface Camera {
+      type: String
+      id: ID! @unique
+      make: String
+      weight: Int
+      operators(
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+        filter: _PersonFilter
+      ): [Person] @relation(name: "cameras", direction: IN)
+      computedOperators(
+        name: String
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+      ): [Person]
+        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
+      reflexiveInterfaceRelationship(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+        filter: _CameraFilter
+      ): [Camera]
+        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
+    }
+
+    enum _CameraOrdering {
+      id_asc
+      id_desc
+      type_asc
+      type_desc
+      make_asc
+      make_desc
+      weight_asc
+      weight_desc
+    }
+
+    type _AddOldCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "OldCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+      "Field for the OldCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: OldCamera
     }
 
-    type _MergeCameraManInterfacedRelationshipTypePayload
-      @relation(
-        name: "INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Genre"
-      ) {
+    type _RemoveOldCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "OldCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
-      to: Genre
-      string: String!
-      boolean: Boolean
-      _id: String
+      "Field for the OldCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: OldCamera
     }
 
-    type _AddCameraManReflexiveInterfacedRelationshipTypePayload
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
+    type _MergeOldCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "OldCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
-      to: Person
-      boolean: Boolean
-      _id: String
+      "Field for the OldCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: OldCamera
     }
 
-    type _RemoveCameraManReflexiveInterfacedRelationshipTypePayload
+    type _AddOldCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "OldCamera"
+        to: "Camera"
       ) {
-      from: Person
-      to: Person
+      "Field for the OldCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: OldCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _UpdateCameraManReflexiveInterfacedRelationshipTypePayload
+    type _RemoveOldCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "OldCamera"
+        to: "Camera"
       ) {
-      from: Person
-      to: Person
-      boolean: Boolean
-      _id: String
+      "Field for the OldCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: OldCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    type _MergeCameraManReflexiveInterfacedRelationshipTypePayload
+    type _MergeOldCameraReflexiveInterfaceRelationshipPayload
       @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "OldCamera"
+        to: "Camera"
       ) {
-      from: Person
-      to: Person
-      boolean: Boolean
-      _id: String
+      "Field for the OldCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: OldCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Camera
     }
 
-    input _CameraManInput {
-      userId: ID!
+    input _OldCameraInput {
+      id: ID!
     }
 
-    input _CameraInput {
-      id: ID!
+    enum _OldCameraOrdering {
+      type_asc
+      type_desc
+      id_asc
+      id_desc
+      make_asc
+      make_desc
+      weight_asc
+      weight_desc
+      smell_asc
+      smell_desc
+      _id_asc
+      _id_desc
     }
 
-    type _AddCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "Camera") {
+    input _OldCameraFilter {
+      AND: [_OldCameraFilter!]
+      OR: [_OldCameraFilter!]
+      type: String
+      type_not: String
+      type_in: [String!]
+      type_not_in: [String!]
+      type_contains: String
+      type_not_contains: String
+      type_starts_with: String
+      type_not_starts_with: String
+      type_ends_with: String
+      type_not_ends_with: String
+      id: ID
+      id_not: ID
+      id_in: [ID!]
+      id_not_in: [ID!]
+      id_contains: ID
+      id_not_contains: ID
+      id_starts_with: ID
+      id_not_starts_with: ID
+      id_ends_with: ID
+      id_not_ends_with: ID
+      make: String
+      make_not: String
+      make_in: [String!]
+      make_not_in: [String!]
+      make_contains: String
+      make_not_contains: String
+      make_starts_with: String
+      make_not_starts_with: String
+      make_ends_with: String
+      make_not_ends_with: String
+      weight: Int
+      weight_not: Int
+      weight_in: [Int!]
+      weight_not_in: [Int!]
+      weight_lt: Int
+      weight_lte: Int
+      weight_gt: Int
+      weight_gte: Int
+      smell: String
+      smell_not: String
+      smell_in: [String!]
+      smell_not_in: [String!]
+      smell_contains: String
+      smell_not_contains: String
+      smell_starts_with: String
+      smell_not_starts_with: String
+      smell_ends_with: String
+      smell_not_ends_with: String
+      operators: _PersonFilter
+      operators_not: _PersonFilter
+      operators_in: [_PersonFilter!]
+      operators_not_in: [_PersonFilter!]
+      operators_some: _PersonFilter
+      operators_none: _PersonFilter
+      operators_single: _PersonFilter
+      operators_every: _PersonFilter
+      reflexiveInterfaceRelationship: _CameraFilter
+      reflexiveInterfaceRelationship_not: _CameraFilter
+      reflexiveInterfaceRelationship_in: [_CameraFilter!]
+      reflexiveInterfaceRelationship_not_in: [_CameraFilter!]
+      reflexiveInterfaceRelationship_some: _CameraFilter
+      reflexiveInterfaceRelationship_none: _CameraFilter
+      reflexiveInterfaceRelationship_single: _CameraFilter
+      reflexiveInterfaceRelationship_every: _CameraFilter
+    }
+
+    type OldCamera implements Camera {
+      type: String
+      id: ID! @unique
+      make: String
+      weight: Int
+      smell: String
+      operators(
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+        filter: _PersonFilter
+      ): [Person] @relation(name: "cameras", direction: IN)
+      computedOperators(
+        name: String
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+      ): [Person]
+        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
+      reflexiveInterfaceRelationship(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+        filter: _CameraFilter
+      ): [Camera]
+        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
+    }
+
+    type _AddNewCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "NewCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
-      to: Camera
+      "Field for the NewCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: NewCamera
     }
 
-    type _RemoveCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "Camera") {
+    type _RemoveNewCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "NewCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
-      to: Camera
+      "Field for the NewCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: NewCamera
     }
 
-    type _MergeCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "Camera") {
+    type _MergeNewCameraOperatorsPayload
+      @relation(name: "cameras", from: "Person", to: "NewCamera") {
+      "Field for the Person node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the NewCamera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: NewCamera
+    }
+
+    type _AddNewCameraReflexiveInterfaceRelationshipPayload
+      @relation(
+        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+        from: "NewCamera"
+        to: "Camera"
+      ) {
+      "Field for the NewCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: NewCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
-    type _AddCameraReflexiveInterfaceRelationshipPayload
+    type _RemoveNewCameraReflexiveInterfaceRelationshipPayload
       @relation(
         name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "Camera"
+        from: "NewCamera"
         to: "Camera"
       ) {
-      from: Camera
+      "Field for the NewCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: NewCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
-    type _RemoveCameraReflexiveInterfaceRelationshipPayload
+    type _MergeNewCameraReflexiveInterfaceRelationshipPayload
       @relation(
         name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "Camera"
+        from: "NewCamera"
         to: "Camera"
       ) {
-      from: Camera
+      "Field for the NewCamera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: NewCamera
+      "Field for the Camera node this REFLEXIVE_INTERFACE_RELATIONSHIP [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
-    type _MergeCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "Camera"
-        to: "Camera"
-      ) {
-      from: Camera
-      to: Camera
+    input _NewCameraInput {
+      id: ID!
+    }
+
+    enum _NewCameraOrdering {
+      type_asc
+      type_desc
+      id_asc
+      id_desc
+      make_asc
+      make_desc
+      weight_asc
+      weight_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _NewCameraFilter {
+      AND: [_NewCameraFilter!]
+      OR: [_NewCameraFilter!]
+      type: String
+      type_not: String
+      type_in: [String!]
+      type_not_in: [String!]
+      type_contains: String
+      type_not_contains: String
+      type_starts_with: String
+      type_not_starts_with: String
+      type_ends_with: String
+      type_not_ends_with: String
+      id: ID
+      id_not: ID
+      id_in: [ID!]
+      id_not_in: [ID!]
+      id_contains: ID
+      id_not_contains: ID
+      id_starts_with: ID
+      id_not_starts_with: ID
+      id_ends_with: ID
+      id_not_ends_with: ID
+      make: String
+      make_not: String
+      make_in: [String!]
+      make_not_in: [String!]
+      make_contains: String
+      make_not_contains: String
+      make_starts_with: String
+      make_not_starts_with: String
+      make_ends_with: String
+      make_not_ends_with: String
+      weight: Int
+      weight_not: Int
+      weight_in: [Int!]
+      weight_not_in: [Int!]
+      weight_lt: Int
+      weight_lte: Int
+      weight_gt: Int
+      weight_gte: Int
+      features: [String!]
+      features_not: [String!]
+      features_contains: [String!]
+      features_not_contains: [String!]
+      features_starts_with: [String!]
+      features_not_starts_with: [String!]
+      features_ends_with: [String!]
+      features_not_ends_with: [String!]
+      operators: _PersonFilter
+      operators_not: _PersonFilter
+      operators_in: [_PersonFilter!]
+      operators_not_in: [_PersonFilter!]
+      operators_some: _PersonFilter
+      operators_none: _PersonFilter
+      operators_single: _PersonFilter
+      operators_every: _PersonFilter
+      reflexiveInterfaceRelationship: _CameraFilter
+      reflexiveInterfaceRelationship_not: _CameraFilter
+      reflexiveInterfaceRelationship_in: [_CameraFilter!]
+      reflexiveInterfaceRelationship_not_in: [_CameraFilter!]
+      reflexiveInterfaceRelationship_some: _CameraFilter
+      reflexiveInterfaceRelationship_none: _CameraFilter
+      reflexiveInterfaceRelationship_single: _CameraFilter
+      reflexiveInterfaceRelationship_every: _CameraFilter
+    }
+
+    type NewCamera implements Camera {
+      type: String
+      id: ID! @unique
+      make: String
+      weight: Int
+      features: [String]
+      operators(
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+        filter: _PersonFilter
+      ): [Person] @relation(name: "cameras", direction: IN)
+      computedOperators(
+        name: String
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+      ): [Person]
+        @cypher(statement: "MATCH (this)<-[:cameras]-(p:Person) RETURN p")
+      reflexiveInterfaceRelationship(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+        filter: _CameraFilter
+      ): [Camera]
+        @relation(name: "REFLEXIVE_INTERFACE_RELATIONSHIP", direction: OUT)
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
+    """
+    Union type
+    block description
+    """
+    union MovieSearch = Movie | Genre | Book
+
     type _AddCameraManFavoriteCameraPayload
       @relation(name: "favoriteCamera", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
     type _RemoveCameraManFavoriteCameraPayload
       @relation(name: "favoriteCamera", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
+
     type _MergeCameraManFavoriteCameraPayload
       @relation(name: "favoriteCamera", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this favoriteCamera [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
+
     type _AddCameraManCamerasPayload
       @relation(name: "cameras", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
     type _RemoveCameraManCamerasPayload
       @relation(name: "cameras", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
     type _MergeCameraManCamerasPayload
       @relation(name: "cameras", from: "CameraMan", to: "Camera") {
+      "Field for the CameraMan node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: CameraMan
+      "Field for the Camera node this cameras [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Camera
     }
 
-    enum _InterfacedRelationshipTypeOrdering {
-      string_asc
-      string_desc
-      boolean_asc
-      boolean_desc
-      _id_asc
-      _id_desc
+    type _AddCameraManCameraBuddyPayload
+      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
+      "Field for the CameraMan node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CameraMan
+      "Field for the Person node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
     }
 
-    type _AddPersonInterfacedRelationshipTypePayload
+    type _RemoveCameraManCameraBuddyPayload
+      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
+      "Field for the CameraMan node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CameraMan
+      "Field for the Person node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+    }
+
+    type _MergeCameraManCameraBuddyPayload
+      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
+      "Field for the CameraMan node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
+      from: CameraMan
+      "Field for the Person node this cameraBuddy [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
+      to: Person
+    }
+
+    type _AddCameraManInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _RemovePersonInterfacedRelationshipTypePayload
+    type _RemoveCameraManInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
     }
 
-    type _UpdatePersonInterfacedRelationshipTypePayload
+    type _UpdateCameraManInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _MergePersonInterfacedRelationshipTypePayload
+    type _MergeCameraManInterfacedRelationshipTypePayload
       @relation(
         name: "INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Genre"
       ) {
+      "Field for the Person node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Genre node this INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Genre
       string: String!
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
-    type _PersonReflexiveInterfacedRelationshipTypeDirections
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      from(
-        first: Int
-        offset: Int
-        orderBy: [_ReflexiveInterfacedRelationshipTypeOrdering]
-        filter: _ReflexiveInterfacedRelationshipTypeFilter
-      ): [_PersonReflexiveInterfacedRelationshipType]
-      to(
-        first: Int
-        offset: Int
-        orderBy: [_ReflexiveInterfacedRelationshipTypeOrdering]
-        filter: _ReflexiveInterfacedRelationshipTypeFilter
-      ): [_PersonReflexiveInterfacedRelationshipType]
-    }
-
-    type _PersonReflexiveInterfacedRelationshipType
-      @relation(
-        name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
-        from: "Person"
-        to: "Person"
-      ) {
-      boolean: Boolean
-      _id: String
-      Person: Person
-    }
-
-    input _ReflexiveInterfacedRelationshipTypeDirectionsFilter {
-      from: _ReflexiveInterfacedRelationshipTypeFilter
-      to: _ReflexiveInterfacedRelationshipTypeFilter
-    }
-
-    enum _ReflexiveInterfacedRelationshipTypeOrdering {
-      boolean_asc
-      boolean_desc
-      _id_asc
-      _id_desc
-    }
-
-    input _ReflexiveInterfacedRelationshipTypeFilter {
-      AND: [_ReflexiveInterfacedRelationshipTypeFilter!]
-      OR: [_ReflexiveInterfacedRelationshipTypeFilter!]
-      boolean: Boolean
-      boolean_not: Boolean
-      Person: _PersonFilter
-    }
 
-    input _ReflexiveInterfacedRelationshipTypeInput {
-      boolean: Boolean
-    }
-
-    type _AddPersonReflexiveInterfacedRelationshipTypePayload
+    type _AddCameraManReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _RemovePersonReflexiveInterfacedRelationshipTypePayload
+    type _RemoveCameraManReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
     }
 
-    type _UpdatePersonReflexiveInterfacedRelationshipTypePayload
+    type _UpdateCameraManReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    type _MergePersonReflexiveInterfacedRelationshipTypePayload
+    type _MergeCameraManReflexiveInterfacedRelationshipTypePayload
       @relation(
         name: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
         from: "Person"
         to: "Person"
       ) {
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: Person
+      "Field for the Person node this REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: Person
       boolean: Boolean
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this relationship."
       _id: String
     }
 
-    input _PersonInput {
+    input _CameraManInput {
       userId: ID!
     }
 
-    type _AddCameraManCameraBuddyPayload
-      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
-      from: CameraMan
-      to: Person
+    enum _CameraManOrdering {
+      userId_asc
+      userId_desc
+      name_asc
+      name_desc
+      extensionScalar_asc
+      extensionScalar_desc
+      _id_asc
+      _id_desc
     }
 
-    type _RemoveCameraManCameraBuddyPayload
-      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
-      from: CameraMan
-      to: Person
+    input _CameraManFilter {
+      AND: [_CameraManFilter!]
+      OR: [_CameraManFilter!]
+      userId: ID
+      userId_not: ID
+      userId_in: [ID!]
+      userId_not_in: [ID!]
+      userId_contains: ID
+      userId_not_contains: ID
+      userId_starts_with: ID
+      userId_not_starts_with: ID
+      userId_ends_with: ID
+      userId_not_ends_with: ID
+      name: String
+      name_not: String
+      name_in: [String!]
+      name_not_in: [String!]
+      name_contains: String
+      name_not_contains: String
+      name_starts_with: String
+      name_not_starts_with: String
+      name_ends_with: String
+      name_not_ends_with: String
+      favoriteCamera: _CameraFilter
+      favoriteCamera_not: _CameraFilter
+      favoriteCamera_in: [_CameraFilter!]
+      favoriteCamera_not_in: [_CameraFilter!]
+      cameras: _CameraFilter
+      cameras_not: _CameraFilter
+      cameras_in: [_CameraFilter!]
+      cameras_not_in: [_CameraFilter!]
+      cameras_some: _CameraFilter
+      cameras_none: _CameraFilter
+      cameras_single: _CameraFilter
+      cameras_every: _CameraFilter
+      cameraBuddy: _PersonFilter
+      cameraBuddy_not: _PersonFilter
+      cameraBuddy_in: [_PersonFilter!]
+      cameraBuddy_not_in: [_PersonFilter!]
+      extensionScalar: String
+      extensionScalar_not: String
+      extensionScalar_in: [String!]
+      extensionScalar_not_in: [String!]
+      extensionScalar_contains: String
+      extensionScalar_not_contains: String
+      extensionScalar_starts_with: String
+      extensionScalar_not_starts_with: String
+      extensionScalar_ends_with: String
+      extensionScalar_not_ends_with: String
+      interfacedRelationshipType: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_not: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_in: [_PersonInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_not_in: [_PersonInterfacedRelationshipTypeFilter!]
+      interfacedRelationshipType_some: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_none: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_single: _PersonInterfacedRelationshipTypeFilter
+      interfacedRelationshipType_every: _PersonInterfacedRelationshipTypeFilter
+      reflexiveInterfacedRelationshipType: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_not: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
+      reflexiveInterfacedRelationshipType_not_in: [_ReflexiveInterfacedRelationshipTypeDirectionsFilter!]
+      reflexiveInterfacedRelationshipType_some: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_none: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_single: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
+      reflexiveInterfacedRelationshipType_every: _ReflexiveInterfacedRelationshipTypeDirectionsFilter
     }
 
-    type _MergeCameraManCameraBuddyPayload
-      @relation(name: "cameraBuddy", from: "CameraMan", to: "Person") {
-      from: CameraMan
-      to: Person
+    type CameraMan implements Person {
+      userId: ID!
+      name: String
+      favoriteCamera(filter: _CameraFilter): Camera
+        @relation(name: "favoriteCamera", direction: "OUT")
+      heaviestCamera(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+      ): [Camera]
+        @cypher(
+          statement: "MATCH (c: Camera)--(this) RETURN c ORDER BY c.weight DESC LIMIT 1"
+        )
+      cameras(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+        filter: _CameraFilter
+      ): [Camera!]! @relation(name: "cameras", direction: "OUT")
+      cameraBuddy(filter: _PersonFilter): Person
+        @relation(name: "cameraBuddy", direction: "OUT")
+      extensionScalar: String
+      interfacedRelationshipType(
+        first: Int
+        offset: Int
+        orderBy: [_InterfacedRelationshipTypeOrdering]
+        filter: _PersonInterfacedRelationshipTypeFilter
+      ): [_PersonInterfacedRelationshipType]
+      reflexiveInterfacedRelationshipType: _PersonReflexiveInterfacedRelationshipTypeDirections
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
     }
 
     type _AddUniqueNodeTestRelationPayload
@@ -5445,7 +3417,9 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
@@ -5455,7 +3429,9 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
@@ -5465,7 +3441,9 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
@@ -5537,6 +3515,7 @@ test.cb('Test augmented schema', t => {
         orderBy: [_UniqueStringNodeOrdering]
         filter: _UniqueStringNodeFilter
       ): [UniqueStringNode] @relation(name: "TEST_RELATION", direction: OUT)
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
       _id: String
     }
 
@@ -5546,7 +3525,9 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
@@ -5556,7 +3537,9 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
@@ -5566,61 +3549,319 @@ test.cb('Test augmented schema', t => {
         from: "UniqueNode"
         to: "UniqueStringNode"
       ) {
+      "Field for the UniqueNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is coming from."
       from: UniqueNode
+      "Field for the UniqueStringNode node this TEST_RELATION [relationship](https://grandstack.io/docs/graphql-relationship-types) is going to."
       to: UniqueStringNode
     }
 
-    input _UniqueStringNodeInput {
-      uniqueString: String!
+    input _UniqueStringNodeInput {
+      uniqueString: String!
+    }
+
+    enum _UniqueStringNodeOrdering {
+      id_asc
+      id_desc
+      uniqueString_asc
+      uniqueString_desc
+      _id_asc
+      _id_desc
+    }
+
+    input _UniqueStringNodeFilter {
+      AND: [_UniqueStringNodeFilter!]
+      OR: [_UniqueStringNodeFilter!]
+      id: ID
+      id_not: ID
+      id_in: [ID!]
+      id_not_in: [ID!]
+      id_contains: ID
+      id_not_contains: ID
+      id_starts_with: ID
+      id_not_starts_with: ID
+      id_ends_with: ID
+      id_not_ends_with: ID
+      uniqueString: String
+      uniqueString_not: String
+      uniqueString_in: [String!]
+      uniqueString_not_in: [String!]
+      uniqueString_contains: String
+      uniqueString_not_contains: String
+      uniqueString_starts_with: String
+      uniqueString_not_starts_with: String
+      uniqueString_ends_with: String
+      uniqueString_not_ends_with: String
+      testRelation: _UniqueNodeFilter
+      testRelation_not: _UniqueNodeFilter
+      testRelation_in: [_UniqueNodeFilter!]
+      testRelation_not_in: [_UniqueNodeFilter!]
+      testRelation_some: _UniqueNodeFilter
+      testRelation_none: _UniqueNodeFilter
+      testRelation_single: _UniqueNodeFilter
+      testRelation_every: _UniqueNodeFilter
+    }
+
+    type UniqueStringNode {
+      id: ID!
+      "Generated field for querying the Neo4j [system id](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-id) of this node."
+      _id: String
+    }
+
+    "Generated Time input object for Neo4j [Temporal field arguments](https://grandstack.io/docs/graphql-temporal-types-datetime/#temporal-query-arguments)."
+    input _Neo4jTimeInput {
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      timezone: String
+      "Creates a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations) Time value using a [String format](https://neo4j.com/docs/cypher-manual/current/functions/temporal/time/#functions-time-create-string)."
+      formatted: String
+    }
+
+    "Generated Time object type for Neo4j [Temporal fields](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries)."
+    type _Neo4jTime {
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      timezone: String
+      "Outputs a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries) Time value as a String type by using the [toString](https://neo4j.com/docs/cypher-manual/current/functions/string/#functions-tostring) Cypher function."
+      formatted: String
+    }
+
+    "Generated Date input object for Neo4j [Temporal field arguments](https://grandstack.io/docs/graphql-temporal-types-datetime/#temporal-query-arguments)."
+    input _Neo4jDateInput {
+      year: Int
+      month: Int
+      day: Int
+      "Creates a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations) Date value using a [String format](https://neo4j.com/docs/cypher-manual/current/functions/temporal/date/#functions-date-create-string)."
+      formatted: String
+    }
+
+    "Generated Date object type for Neo4j [Temporal fields](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries)."
+    type _Neo4jDate {
+      year: Int
+      month: Int
+      day: Int
+      "Outputs a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries) Date value as a String type by using the [toString](https://neo4j.com/docs/cypher-manual/current/functions/string/#functions-tostring) Cypher function."
+      formatted: String
+    }
+
+    "Generated DateTime input object for Neo4j [Temporal field arguments](https://grandstack.io/docs/graphql-temporal-types-datetime/#temporal-query-arguments)."
+    input _Neo4jDateTimeInput {
+      year: Int
+      month: Int
+      day: Int
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      timezone: String
+      "Creates a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations) DateTime value using a [String format](https://neo4j.com/docs/cypher-manual/current/functions/temporal/datetime/#functions-datetime-create-string)."
+      formatted: String
+    }
+
+    "Generated DateTime object type for Neo4j [Temporal fields](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries)."
+    type _Neo4jDateTime {
+      year: Int
+      month: Int
+      day: Int
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      timezone: String
+      "Outputs a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries) DateTime value as a String type by using the [toString](https://neo4j.com/docs/cypher-manual/current/functions/string/#functions-tostring) Cypher function."
+      formatted: String
+    }
+
+    "Generated LocalTime input object for Neo4j [Temporal field arguments](https://grandstack.io/docs/graphql-temporal-types-datetime/#temporal-query-arguments)."
+    input _Neo4jLocalTimeInput {
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      "Creates a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations) LocalTime value using a [String format](https://neo4j.com/docs/cypher-manual/current/functions/temporal/localtime/#functions-localtime-create-string)."
+      formatted: String
+    }
+
+    "Generated LocalTime object type for Neo4j [Temporal fields](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries)."
+    type _Neo4jLocalTime {
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      "Outputs a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries) LocalTime value as a String type by using the [toString](https://neo4j.com/docs/cypher-manual/current/functions/string/#functions-tostring) Cypher function."
+      formatted: String
+    }
+
+    "Generated LocalDateTime input object for Neo4j [Temporal field arguments](https://grandstack.io/docs/graphql-temporal-types-datetime/#temporal-query-arguments)."
+    input _Neo4jLocalDateTimeInput {
+      year: Int
+      month: Int
+      day: Int
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      "Creates a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime/#using-temporal-fields-in-mutations) LocalDateTime value using a [String format](https://neo4j.com/docs/cypher-manual/current/functions/temporal/localdatetime/#functions-localdatetime-create-string)."
+      formatted: String
+    }
+
+    "Generated LocalDateTime object type for Neo4j [Temporal fields](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries)."
+    type _Neo4jLocalDateTime {
+      year: Int
+      month: Int
+      day: Int
+      hour: Int
+      minute: Int
+      second: Int
+      millisecond: Int
+      microsecond: Int
+      nanosecond: Int
+      "Outputs a Neo4j [Temporal](https://grandstack.io/docs/graphql-temporal-types-datetime#using-temporal-fields-in-queries) LocalDateTime value as a String type by using the [toString](https://neo4j.com/docs/cypher-manual/current/functions/string/#functions-tostring) Cypher function."
+      formatted: String
+    }
+
+    input _Neo4jPointDistanceFilter {
+      point: _Neo4jPointInput!
+      distance: Float!
+    }
+
+    "Generated Point input object for Neo4j [Spatial field arguments](https://grandstack.io/docs/graphql-spatial-types/#point-query-arguments)."
+    input _Neo4jPointInput {
+      x: Float
+      y: Float
+      z: Float
+      longitude: Float
+      latitude: Float
+      height: Float
+      crs: String
+      srid: Int
+    }
+
+    "Generated Point object type for Neo4j [Spatial fields](https://grandstack.io/docs/graphql-spatial-types#using-point-in-queries)."
+    type _Neo4jPoint {
+      x: Float
+      y: Float
+      z: Float
+      longitude: Float
+      latitude: Float
+      height: Float
+      crs: String
+      srid: Int
+    }
+
+    enum _RelationDirections {
+      IN
+      OUT
+    }
+
+    """
+    Directive definition
+    block
+    description
+    """
+    directive @cypher(statement: String) on FIELD_DEFINITION
+
+    directive @relation(
+      name: String
+      direction: _RelationDirections
+      from: String
+      to: String
+    ) on FIELD_DEFINITION | OBJECT
+
+    directive @additionalLabels(labels: [String]) on OBJECT
+
+    directive @MutationMeta(
+      relationship: String
+      from: String
+      to: String
+    ) on FIELD_DEFINITION
+
+    directive @neo4j_ignore on FIELD_DEFINITION
+
+    directive @id on FIELD_DEFINITION
+
+    directive @unique on FIELD_DEFINITION
+
+    directive @index on FIELD_DEFINITION
+
+    directive @isAuthenticated on OBJECT | FIELD_DEFINITION
+
+    directive @hasRole(roles: [Role]) on OBJECT | FIELD_DEFINITION
+
+    directive @hasScope(scopes: [String]) on OBJECT | FIELD_DEFINITION
+
+    extend type Movie @hasRole(roles: [admin]) {
+      currentUserId(strArg: String): String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        )
+      "Object type extension field line description"
+      interfaceNoScalars(
+        orderBy: _InterfaceNoScalarsOrdering
+        first: Int
+        offset: Int
+        filter: _InterfaceNoScalarsFilter
+      ): [InterfaceNoScalars]
+        @relation(name: "INTERFACE_NO_SCALARS", direction: OUT)
+      extensionScalar: String
+      extensionNode(
+        first: Int
+        offset: Int
+        orderBy: [_GenreOrdering]
+        filter: _GenreFilter
+      ): [Genre] @relation(name: "IN_GENRE", direction: "OUT")
+    }
+
+    extend interface Person {
+      extensionScalar: String
+    }
+
+    extend type Actor implements Person
+
+    extend enum BookGenre {
+      Math
     }
 
-    enum _UniqueStringNodeOrdering {
-      id_asc
-      id_desc
-      uniqueString_asc
-      uniqueString_desc
-      _id_asc
-      _id_desc
+    extend type QueryA {
+      MovieSearch(first: Int, offset: Int): [MovieSearch]
+      computedMovieSearch(first: Int, offset: Int): [MovieSearch]
+        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
     }
 
-    input _UniqueStringNodeFilter {
-      AND: [_UniqueStringNodeFilter!]
-      OR: [_UniqueStringNodeFilter!]
-      id: ID
-      id_not: ID
-      id_in: [ID!]
-      id_not_in: [ID!]
-      id_contains: ID
-      id_not_contains: ID
-      id_starts_with: ID
-      id_not_starts_with: ID
-      id_ends_with: ID
-      id_not_ends_with: ID
-      uniqueString: String
-      uniqueString_not: String
-      uniqueString_in: [String!]
-      uniqueString_not_in: [String!]
-      uniqueString_contains: String
-      uniqueString_not_contains: String
-      uniqueString_starts_with: String
-      uniqueString_not_starts_with: String
-      uniqueString_ends_with: String
-      uniqueString_not_ends_with: String
-      testRelation: _UniqueNodeFilter
-      testRelation_not: _UniqueNodeFilter
-      testRelation_in: [_UniqueNodeFilter!]
-      testRelation_not_in: [_UniqueNodeFilter!]
-      testRelation_some: _UniqueNodeFilter
-      testRelation_none: _UniqueNodeFilter
-      testRelation_single: _UniqueNodeFilter
-      testRelation_every: _UniqueNodeFilter
+    extend type Mutation {
+      CustomCamera: Camera
+        @cypher(
+          statement: "CREATE (newCamera:Camera:NewCamera {id: apoc.create.uuid(), type: 'macro'}) RETURN newCamera"
+        )
+      CustomCameras: [Camera]
+        @cypher(
+          statement: "CREATE (newCamera:Camera:NewCamera {id: apoc.create.uuid(), type: 'macro', features: ['selfie', 'zoom']}) CREATE (oldCamera:Camera:OldCamera {id: apoc.create.uuid(), type: 'floating', smell: 'rusty' }) RETURN [newCamera, oldCamera]"
+        )
     }
 
-    type UniqueStringNode {
-      id: ID!
-      _id: String
+    extend input strInput {
+      extensionArg: String
     }
 
+    extend union MovieSearch = Actor | OldCamera
+
     extend type UniqueStringNode {
       uniqueString: String @unique
       testRelation(
@@ -5628,235 +3869,2472 @@ test.cb('Test augmented schema', t => {
         offset: Int
         orderBy: [_UniqueNodeOrdering]
         filter: _UniqueNodeFilter
-      ): [UniqueNode] @relation(name: "TEST_RELATION", direction: IN)
-    }
-
-    type SubscriptionC {
-      testSubscribe: Boolean
+      ): [UniqueNode] @relation(name: "TEST_RELATION", direction: IN)
+    }
+
+    "Query type line description"
+    type QueryA {
+      """
+      Query field
+      block
+      description
+      """
+      MoviesByYear(
+        year: Int
+        first: Int
+        offset: Int
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie]
+      MoviesByYears(
+        year: [Int]
+        released: [_Neo4jDateTimeInput]
+        first: Int
+        offset: Int
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie]
+      MovieById(movieId: ID!, filter: _MovieFilter): Movie
+      MovieBy_Id(_id: String!, filter: _MovieFilter): Movie
+      GenresBySubstring(
+        substring: String
+        first: Int
+        offset: Int
+        orderBy: [_GenreOrdering]
+      ): [Genre]
+        @cypher(
+          statement: "MATCH (g:Genre) WHERE toLower(g.name) CONTAINS toLower($substring) RETURN g"
+        )
+      "Object type query field line description"
+      State(
+        first: Int
+        offset: Int
+        orderBy: [_StateOrdering]
+        filter: _StateFilter
+      ): [State]
+      User(
+        userId: ID
+        name: String
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_UserOrdering]
+        filter: _UserFilter
+      ): [User]
+      Books(
+        first: Int
+        offset: Int
+        orderBy: [_BookOrdering]
+        filter: _BookFilter
+      ): [Book]
+      currentUserId: String
+        @cypher(
+          statement: "RETURN $cypherParams.currentUserId AS currentUserId"
+        )
+      computedBoolean: Boolean @cypher(statement: "RETURN true")
+      computedFloat: Float @cypher(statement: "RETURN 3.14")
+      computedInt: Int @cypher(statement: "RETURN 1")
+      computedIntList: [Int]
+        @cypher(statement: "UNWIND [1, 2, 3] AS intList RETURN intList")
+      computedStringList: [String]
+        @cypher(
+          statement: "UNWIND ['hello', 'world'] AS stringList RETURN stringList"
+        )
+      computedTemporal: _Neo4jDateTime
+        @cypher(
+          statement: "WITH datetime() AS now RETURN { year: now.year, month: now.month , day: now.day , hour: now.hour , minute: now.minute , second: now.second , millisecond: now.millisecond , microsecond: now.microsecond , nanosecond: now.nanosecond , timezone: now.timezone , formatted: toString(now) }"
+        )
+      computedSpatial: _Neo4jPoint
+        @cypher(
+          statement: "WITH point({ x: 10, y: 20, z: 15 }) AS instance RETURN { x: instance.x, y: instance.y, z: instance.z, crs: instance.crs }"
+        )
+      computedObjectWithCypherParams: currentUserId
+        @cypher(statement: "RETURN { userId: $cypherParams.currentUserId }")
+      customWithArguments(strArg: String, strInputArg: strInput): String
+        @cypher(statement: "RETURN $strInputArg.strArg")
+      CasedType(
+        first: Int
+        offset: Int
+        orderBy: [_CasedTypeOrdering]
+        filter: _CasedTypeFilter
+      ): [CasedType]
+      "Interface type query field line description"
+      Camera(
+        type: String
+        first: Int
+        orderBy: [_CameraOrdering]
+        filter: _CameraFilter
+        offset: Int
+      ): [Camera]
+      Person(
+        userId: ID
+        name: String
+        extensionScalar: String
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_PersonOrdering]
+        filter: _PersonFilter
+      ): [Person]
+      InterfaceNoScalars(
+        orderBy: _InterfaceNoScalarsOrdering
+        first: Int
+        offset: Int
+        filter: _InterfaceNoScalarsFilter
+      ): [InterfaceNoScalars]
+      CustomCameras(
+        first: Int
+        offset: Int
+        orderBy: [_CameraOrdering]
+      ): [Camera] @cypher(statement: "MATCH (c:Camera) RETURN c")
+      CustomCamera: Camera @cypher(statement: "MATCH (c:Camera) RETURN c")
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Movie type nodes."
+      Movie(
+        _id: String
+        movieId: ID
+        title: String
+        someprefix_title_with_underscores: String
+        year: Int
+        released: _Neo4jDateTimeInput
+        plot: String
+        poster: String
+        imdbRating: Float
+        avgStars: Float
+        location: _Neo4jPointInput
+        locations: [_Neo4jPointInput]
+        years: [Int]
+        titles: [String]
+        imdbRatings: [Float]
+        releases: [_Neo4jDateTimeInput]
+        booleans: [Boolean]
+        enums: [BookGenre]
+        extensionScalar: String
+        first: Int
+        offset: Int
+        orderBy: [_MovieOrdering]
+        filter: _MovieFilter
+      ): [Movie] @hasScope(scopes: ["Movie: Read", "read:movie"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Genre type nodes."
+      Genre(
+        _id: String
+        name: String
+        first: Int
+        offset: Int
+        orderBy: [_GenreOrdering]
+        filter: _GenreFilter
+      ): [Genre] @hasScope(scopes: ["Genre: Read", "read:genre"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Actor type nodes."
+      Actor(
+        userId: ID
+        name: String
+        extensionScalar: String
+        datetimes: [_Neo4jDateTimeInput]
+        strings: [String]
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_ActorOrdering]
+        filter: _ActorFilter
+      ): [Actor] @hasScope(scopes: ["Actor: Read", "read:actor"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Book type nodes."
+      Book(
+        genre: BookGenre
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_BookOrdering]
+        filter: _BookFilter
+      ): [Book] @hasScope(scopes: ["Book: Read", "read:book"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for TemporalNode type nodes."
+      TemporalNode(
+        datetime: _Neo4jDateTimeInput
+        name: String
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        localdatetimes: [_Neo4jLocalDateTimeInput]
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_TemporalNodeOrdering]
+        filter: _TemporalNodeFilter
+      ): [TemporalNode]
+        @hasScope(scopes: ["TemporalNode: Read", "read:temporalnode"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for SpatialNode type nodes."
+      SpatialNode(
+        id: ID
+        point: _Neo4jPointInput
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_SpatialNodeOrdering]
+        filter: _SpatialNodeFilter
+      ): [SpatialNode]
+        @hasScope(scopes: ["SpatialNode: Read", "read:spatialnode"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for OldCamera type nodes."
+      OldCamera(
+        type: String
+        id: ID
+        make: String
+        weight: Int
+        smell: String
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_OldCameraOrdering]
+        filter: _OldCameraFilter
+      ): [OldCamera] @hasScope(scopes: ["OldCamera: Read", "read:oldcamera"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for NewCamera type nodes."
+      NewCamera(
+        type: String
+        id: ID
+        make: String
+        weight: Int
+        features: [String]
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_NewCameraOrdering]
+        filter: _NewCameraFilter
+      ): [NewCamera] @hasScope(scopes: ["NewCamera: Read", "read:newcamera"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for CameraMan type nodes."
+      CameraMan(
+        userId: ID
+        name: String
+        extensionScalar: String
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_CameraManOrdering]
+        filter: _CameraManFilter
+      ): [CameraMan] @hasScope(scopes: ["CameraMan: Read", "read:cameraman"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for UniqueNode type nodes."
+      UniqueNode(
+        string: String
+        id: ID
+        anotherId: ID
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_UniqueNodeOrdering]
+        filter: _UniqueNodeFilter
+      ): [UniqueNode] @hasScope(scopes: ["UniqueNode: Read", "read:uniquenode"])
+      "[Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for UniqueStringNode type nodes."
+      UniqueStringNode(
+        id: ID
+        uniqueString: String
+        _id: String
+        first: Int
+        offset: Int
+        orderBy: [_UniqueStringNodeOrdering]
+        filter: _UniqueStringNodeFilter
+      ): [UniqueStringNode]
+        @hasScope(scopes: ["UniqueStringNode: Read", "read:uniquestringnode"])
     }
 
-    type FriendOf @relation {
-      from: User
+    "Mutation  type line description"
+    type Mutation {
+      "Mutation  field line description"
       currentUserId: String
+        @cypher(statement: "RETURN $cypherParams.currentUserId")
+      """
+      Mutation  field
+      block
+      description
+      """
+      computedObjectWithCypherParams: currentUserId
+        @cypher(statement: "RETURN { userId: $cypherParams.currentUserId }")
+      computedTemporal: _Neo4jDateTime
         @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+          statement: "WITH datetime() AS now RETURN { year: now.year, month: now.month , day: now.day , hour: now.hour , minute: now.minute , second: now.second , millisecond: now.millisecond , microsecond: now.microsecond , nanosecond: now.nanosecond , timezone: now.timezone , formatted: toString(now) }"
+        )
+      computedSpatial: _Neo4jPoint
+        @cypher(
+          statement: "WITH point({ x: 10, y: 20, z: 15 }) AS instance RETURN { x: instance.x, y: instance.y, z: instance.z, crs: instance.crs }"
+        )
+      computedStringList: [String]
+        @cypher(
+          statement: "UNWIND ['hello', 'world'] AS stringList RETURN stringList"
+        )
+      customWithArguments(
+        """
+        Mutation field argument
+        block description
+        """
+        strArg: String
+        strInputArg: strInput
+      ): String @cypher(statement: "RETURN $strInputArg.strArg")
+      testPublish: Boolean @neo4j_ignore
+      computedMovieSearch: [MovieSearch]
+        @cypher(statement: "MATCH (ms:MovieSearch) RETURN ms")
+      customCreateNode(
+        integer: Int
+        datetime: _Neo4jDateTimeInput
+        integers: [Int]
+        datetimes: [_Neo4jDateTimeInput]
+        point: _Neo4jPointInput
+        points: [_Neo4jPointInput]
+      ): Boolean
+        @cypher(
+          statement: "CREATE (n:Node { integer: $integer, datetime: datetime($datetime), point: point($point), integers: $integers, datetimes: [value IN $datetimes | datetime(value)], points: [value IN $points | point(value)] }) RETURN TRUE"
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the IN_GENRE relationship."
+      AddMovieExtensionNode(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _AddMovieExtensionNodePayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Create"
+            "create:movie"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the IN_GENRE relationship."
+      RemoveMovieExtensionNode(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _RemoveMovieExtensionNodePayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Delete"
+            "delete:movie"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the IN_GENRE relationship."
+      MergeMovieExtensionNode(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _MergeMovieExtensionNodePayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the IN_GENRE relationship."
+      AddMovieGenres(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _AddMovieGenresPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Create"
+            "create:movie"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the IN_GENRE relationship."
+      RemoveMovieGenres(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _RemoveMovieGenresPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Delete"
+            "delete:movie"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the IN_GENRE relationship."
+      MergeMovieGenres(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _MergeMovieGenresPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the ACTED_IN relationship."
+      AddMovieActors(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _AddMovieActorsPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: [
+            "Actor: Create"
+            "create:actor"
+            "Movie: Create"
+            "create:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the ACTED_IN relationship."
+      RemoveMovieActors(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _RemoveMovieActorsPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: [
+            "Actor: Delete"
+            "delete:actor"
+            "Movie: Delete"
+            "delete:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the ACTED_IN relationship."
+      MergeMovieActors(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _MergeMovieActorsPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: ["Actor: Merge", "merge:actor", "Movie: Merge", "merge:movie"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the FILMED_IN relationship."
+      AddMovieFilmedIn(
+        from: _MovieInput!
+        to: _StateInput!
+      ): _AddMovieFilmedInPayload
+        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
+        @hasScope(
+          scopes: [
+            "Movie: Create"
+            "create:movie"
+            "State: Create"
+            "create:state"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the FILMED_IN relationship."
+      RemoveMovieFilmedIn(
+        from: _MovieInput!
+        to: _StateInput!
+      ): _RemoveMovieFilmedInPayload
+        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
+        @hasScope(
+          scopes: [
+            "Movie: Delete"
+            "delete:movie"
+            "State: Delete"
+            "delete:state"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the FILMED_IN relationship."
+      MergeMovieFilmedIn(
+        from: _MovieInput!
+        to: _StateInput!
+      ): _MergeMovieFilmedInPayload
+        @MutationMeta(relationship: "FILMED_IN", from: "Movie", to: "State")
+        @hasScope(
+          scopes: ["Movie: Merge", "merge:movie", "State: Merge", "merge:state"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the RATED relationship."
+      AddMovieRatings(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _AddMovieRatingsPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Create"
+            "create:user"
+            "Movie: Create"
+            "create:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the RATED relationship."
+      RemoveMovieRatings(
+        from: _UserInput!
+        to: _MovieInput!
+      ): _RemoveMovieRatingsPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Delete"
+            "delete:user"
+            "Movie: Delete"
+            "delete:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the RATED relationship."
+      UpdateMovieRatings(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _UpdateMovieRatingsPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Update"
+            "update:user"
+            "Movie: Update"
+            "update:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the RATED relationship."
+      MergeMovieRatings(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _MergeMovieRatingsPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a Movie node."
+      CreateMovie(
+        movieId: ID
+        title: String
+        someprefix_title_with_underscores: String
+        year: Int
+        released: _Neo4jDateTimeInput
+        plot: String
+        poster: String
+        imdbRating: Float
+        avgStars: Float
+        location: _Neo4jPointInput
+        locations: [_Neo4jPointInput]
+        years: [Int]
+        titles: [String]
+        imdbRatings: [Float]
+        releases: [_Neo4jDateTimeInput]
+        booleans: [Boolean]
+        enums: [BookGenre]
+        extensionScalar: String
+      ): Movie @hasScope(scopes: ["Movie: Create", "create:movie"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a Movie node."
+      UpdateMovie(
+        movieId: ID!
+        title: String
+        someprefix_title_with_underscores: String
+        year: Int
+        released: _Neo4jDateTimeInput
+        plot: String
+        poster: String
+        imdbRating: Float
+        avgStars: Float
+        location: _Neo4jPointInput
+        locations: [_Neo4jPointInput]
+        years: [Int]
+        titles: [String]
+        imdbRatings: [Float]
+        releases: [_Neo4jDateTimeInput]
+        booleans: [Boolean]
+        enums: [BookGenre]
+        extensionScalar: String
+      ): Movie @hasScope(scopes: ["Movie: Update", "update:movie"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a Movie node."
+      DeleteMovie(movieId: ID!): Movie
+        @hasScope(scopes: ["Movie: Delete", "delete:movie"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a Movie node."
+      MergeMovie(
+        movieId: ID!
+        title: String
+        someprefix_title_with_underscores: String
+        year: Int
+        released: _Neo4jDateTimeInput
+        plot: String
+        poster: String
+        imdbRating: Float
+        avgStars: Float
+        location: _Neo4jPointInput
+        locations: [_Neo4jPointInput]
+        years: [Int]
+        titles: [String]
+        imdbRatings: [Float]
+        releases: [_Neo4jDateTimeInput]
+        booleans: [Boolean]
+        enums: [BookGenre]
+        extensionScalar: String
+      ): Movie @hasScope(scopes: ["Movie: Merge", "merge:movie"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the IN_GENRE relationship."
+      AddGenreMovies(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _AddGenreMoviesPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Create"
+            "create:movie"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the IN_GENRE relationship."
+      RemoveGenreMovies(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _RemoveGenreMoviesPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: [
+            "Movie: Delete"
+            "delete:movie"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the IN_GENRE relationship."
+      MergeGenreMovies(
+        from: _MovieInput!
+        to: _GenreInput!
+      ): _MergeGenreMoviesPayload
+        @MutationMeta(relationship: "IN_GENRE", from: "Movie", to: "Genre")
+        @hasScope(
+          scopes: ["Movie: Merge", "merge:movie", "Genre: Merge", "merge:genre"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddGenreInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _AddGenreInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveGenreInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+      ): _RemoveGenreInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateGenreInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _UpdateGenreInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Genre: Update"
+            "update:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeGenreInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _MergeGenreInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Genre: Merge"
+            "merge:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a Genre node."
+      CreateGenre(name: String): Genre
+        @hasScope(scopes: ["Genre: Create", "create:genre"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a Genre node."
+      DeleteGenre(name: String!): Genre
+        @hasScope(scopes: ["Genre: Delete", "delete:genre"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a Genre node."
+      MergeGenre(name: String!): Genre
+        @hasScope(scopes: ["Genre: Merge", "merge:genre"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a State node."
+      CreateState(name: String!, id: ID): State
+        @hasScope(scopes: ["State: Create", "create:state"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a State node."
+      UpdateState(name: String!, id: ID): State
+        @hasScope(scopes: ["State: Update", "update:state"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a State node."
+      DeleteState(name: String!): State
+        @hasScope(scopes: ["State: Delete", "delete:state"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a State node."
+      MergeState(name: String!, id: ID): State
+        @hasScope(scopes: ["State: Merge", "merge:state"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddPersonInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _AddPersonInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemovePersonInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+      ): _RemovePersonInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdatePersonInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _UpdatePersonInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Genre: Update"
+            "update:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergePersonInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _MergePersonInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Genre: Merge"
+            "merge:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddPersonReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _AddPersonReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemovePersonReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+      ): _RemovePersonReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdatePersonReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _UpdatePersonReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Person: Update"
+            "update:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergePersonReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _MergePersonReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the ACTED_IN relationship."
+      AddActorMovies(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _AddActorMoviesPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: [
+            "Actor: Create"
+            "create:actor"
+            "Movie: Create"
+            "create:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the ACTED_IN relationship."
+      RemoveActorMovies(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _RemoveActorMoviesPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: [
+            "Actor: Delete"
+            "delete:actor"
+            "Movie: Delete"
+            "delete:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the ACTED_IN relationship."
+      MergeActorMovies(
+        from: _ActorInput!
+        to: _MovieInput!
+      ): _MergeActorMoviesPayload
+        @MutationMeta(relationship: "ACTED_IN", from: "Actor", to: "Movie")
+        @hasScope(
+          scopes: ["Actor: Merge", "merge:actor", "Movie: Merge", "merge:movie"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the KNOWS relationship."
+      AddActorKnows(
+        from: _ActorInput!
+        to: _PersonInput!
+      ): _AddActorKnowsPayload
+        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
+        @hasScope(
+          scopes: [
+            "Actor: Create"
+            "create:actor"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the KNOWS relationship."
+      RemoveActorKnows(
+        from: _ActorInput!
+        to: _PersonInput!
+      ): _RemoveActorKnowsPayload
+        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
+        @hasScope(
+          scopes: [
+            "Actor: Delete"
+            "delete:actor"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the KNOWS relationship."
+      MergeActorKnows(
+        from: _ActorInput!
+        to: _PersonInput!
+      ): _MergeActorKnowsPayload
+        @MutationMeta(relationship: "KNOWS", from: "Actor", to: "Person")
+        @hasScope(
+          scopes: [
+            "Actor: Merge"
+            "merge:actor"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddActorInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _AddActorInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveActorInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+      ): _RemoveActorInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateActorInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _UpdateActorInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Genre: Update"
+            "update:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeActorInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _MergeActorInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Genre: Merge"
+            "merge:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddActorReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _AddActorReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveActorReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+      ): _RemoveActorReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateActorReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _UpdateActorReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Person: Update"
+            "update:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeActorReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _MergeActorReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a Actor node."
+      CreateActor(
+        userId: ID
+        name: String
+        extensionScalar: String
+        datetimes: [_Neo4jDateTimeInput]
+        strings: [String]
+      ): Actor @hasScope(scopes: ["Actor: Create", "create:actor"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a Actor node."
+      UpdateActor(
+        userId: ID!
+        name: String
+        extensionScalar: String
+        datetimes: [_Neo4jDateTimeInput]
+        strings: [String]
+      ): Actor @hasScope(scopes: ["Actor: Update", "update:actor"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a Actor node."
+      DeleteActor(userId: ID!): Actor
+        @hasScope(scopes: ["Actor: Delete", "delete:actor"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a Actor node."
+      MergeActor(
+        userId: ID!
+        name: String
+        extensionScalar: String
+        datetimes: [_Neo4jDateTimeInput]
+        strings: [String]
+      ): Actor @hasScope(scopes: ["Actor: Merge", "merge:actor"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddUserInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _AddUserInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveUserInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+      ): _RemoveUserInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateUserInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _UpdateUserInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Genre: Update"
+            "update:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeUserInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _MergeUserInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Genre: Merge"
+            "merge:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddUserReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _AddUserReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveUserReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+      ): _RemoveUserReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateUserReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _UpdateUserReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Person: Update"
+            "update:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeUserReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _MergeUserReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the RATED relationship."
+      AddUserRated(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _AddUserRatedPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Create"
+            "create:user"
+            "Movie: Create"
+            "create:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the RATED relationship."
+      RemoveUserRated(
+        from: _UserInput!
+        to: _MovieInput!
+      ): _RemoveUserRatedPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Delete"
+            "delete:user"
+            "Movie: Delete"
+            "delete:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the RATED relationship."
+      UpdateUserRated(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _UpdateUserRatedPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Update"
+            "update:user"
+            "Movie: Update"
+            "update:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the RATED relationship."
+      MergeUserRated(
+        from: _UserInput!
+        to: _MovieInput!
+        data: _RatedInput!
+      ): _MergeUserRatedPayload
+        @MutationMeta(relationship: "RATED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the FRIEND_OF relationship."
+      AddUserFriends(
+        from: _UserInput!
+        to: _UserInput!
+        data: _FriendOfInput!
+      ): _AddUserFriendsPayload
+        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
+        @hasScope(
+          scopes: ["User: Create", "create:user", "User: Create", "create:user"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the FRIEND_OF relationship."
+      RemoveUserFriends(
+        from: _UserInput!
+        to: _UserInput!
+      ): _RemoveUserFriendsPayload
+        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
+        @hasScope(
+          scopes: ["User: Delete", "delete:user", "User: Delete", "delete:user"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the FRIEND_OF relationship."
+      UpdateUserFriends(
+        from: _UserInput!
+        to: _UserInput!
+        data: _FriendOfInput!
+      ): _UpdateUserFriendsPayload
+        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
+        @hasScope(
+          scopes: ["User: Update", "update:user", "User: Update", "update:user"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the FRIEND_OF relationship."
+      MergeUserFriends(
+        from: _UserInput!
+        to: _UserInput!
+        data: _FriendOfInput!
+      ): _MergeUserFriendsPayload
+        @MutationMeta(relationship: "FRIEND_OF", from: "User", to: "User")
+        @hasScope(
+          scopes: ["User: Merge", "merge:user", "User: Merge", "merge:user"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the FAVORITED relationship."
+      AddUserFavorites(
+        from: _UserInput!
+        to: _MovieInput!
+      ): _AddUserFavoritesPayload
+        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Create"
+            "create:user"
+            "Movie: Create"
+            "create:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the FAVORITED relationship."
+      RemoveUserFavorites(
+        from: _UserInput!
+        to: _MovieInput!
+      ): _RemoveUserFavoritesPayload
+        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: [
+            "User: Delete"
+            "delete:user"
+            "Movie: Delete"
+            "delete:movie"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the FAVORITED relationship."
+      MergeUserFavorites(
+        from: _UserInput!
+        to: _MovieInput!
+      ): _MergeUserFavoritesPayload
+        @MutationMeta(relationship: "FAVORITED", from: "User", to: "Movie")
+        @hasScope(
+          scopes: ["User: Merge", "merge:user", "Movie: Merge", "merge:movie"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a User node."
+      CreateUser(userId: ID, name: String, extensionScalar: String): User
+        @hasScope(scopes: ["User: Create", "create:user"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a User node."
+      UpdateUser(userId: ID!, name: String, extensionScalar: String): User
+        @hasScope(scopes: ["User: Update", "update:user"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a User node."
+      DeleteUser(userId: ID!): User
+        @hasScope(scopes: ["User: Delete", "delete:user"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a User node."
+      MergeUser(userId: ID!, name: String, extensionScalar: String): User
+        @hasScope(scopes: ["User: Merge", "merge:user"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a Book node."
+      CreateBook(genre: BookGenre): Book
+        @hasScope(scopes: ["Book: Create", "create:book"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a Book node."
+      DeleteBook(genre: BookGenre!): Book
+        @hasScope(scopes: ["Book: Delete", "delete:book"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a Book node."
+      MergeBook(genre: BookGenre!): Book
+        @hasScope(scopes: ["Book: Merge", "merge:book"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a NodeTypeMutationTest node."
+      CreateNodeTypeMutationTest(
+        NodeTypeMutationTest: BookGenre
+      ): NodeTypeMutationTest
+        @hasScope(
+          scopes: [
+            "NodeTypeMutationTest: Create"
+            "create:nodetypemutationtest"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a NodeTypeMutationTest node."
+      DeleteNodeTypeMutationTest(
+        NodeTypeMutationTest: BookGenre!
+      ): NodeTypeMutationTest
+        @hasScope(
+          scopes: [
+            "NodeTypeMutationTest: Delete"
+            "delete:nodetypemutationtest"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a NodeTypeMutationTest node."
+      MergeNodeTypeMutationTest(
+        NodeTypeMutationTest: BookGenre!
+      ): NodeTypeMutationTest
+        @hasScope(
+          scopes: ["NodeTypeMutationTest: Merge", "merge:nodetypemutationtest"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a currentUserId node."
+      CreatecurrentUserId(userId: String): currentUserId
+        @hasScope(scopes: ["currentUserId: Create", "create:currentuserid"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a currentUserId node."
+      DeletecurrentUserId(userId: String!): currentUserId
+        @hasScope(scopes: ["currentUserId: Delete", "delete:currentuserid"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a currentUserId node."
+      MergecurrentUserId(userId: String!): currentUserId
+        @hasScope(scopes: ["currentUserId: Merge", "merge:currentuserid"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the TEMPORAL relationship."
+      AddTemporalNodeTemporalNodes(
+        from: _TemporalNodeInput!
+        to: _TemporalNodeInput!
+      ): _AddTemporalNodeTemporalNodesPayload
+        @MutationMeta(
+          relationship: "TEMPORAL"
+          from: "TemporalNode"
+          to: "TemporalNode"
+        )
+        @hasScope(
+          scopes: [
+            "TemporalNode: Create"
+            "create:temporalnode"
+            "TemporalNode: Create"
+            "create:temporalnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the TEMPORAL relationship."
+      RemoveTemporalNodeTemporalNodes(
+        from: _TemporalNodeInput!
+        to: _TemporalNodeInput!
+      ): _RemoveTemporalNodeTemporalNodesPayload
+        @MutationMeta(
+          relationship: "TEMPORAL"
+          from: "TemporalNode"
+          to: "TemporalNode"
+        )
+        @hasScope(
+          scopes: [
+            "TemporalNode: Delete"
+            "delete:temporalnode"
+            "TemporalNode: Delete"
+            "delete:temporalnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the TEMPORAL relationship."
+      MergeTemporalNodeTemporalNodes(
+        from: _TemporalNodeInput!
+        to: _TemporalNodeInput!
+      ): _MergeTemporalNodeTemporalNodesPayload
+        @MutationMeta(
+          relationship: "TEMPORAL"
+          from: "TemporalNode"
+          to: "TemporalNode"
+        )
+        @hasScope(
+          scopes: [
+            "TemporalNode: Merge"
+            "merge:temporalnode"
+            "TemporalNode: Merge"
+            "merge:temporalnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a TemporalNode node."
+      CreateTemporalNode(
+        datetime: _Neo4jDateTimeInput
+        name: String
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        localdatetimes: [_Neo4jLocalDateTimeInput]
+      ): TemporalNode
+        @hasScope(scopes: ["TemporalNode: Create", "create:temporalnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a TemporalNode node."
+      UpdateTemporalNode(
+        datetime: _Neo4jDateTimeInput
+        name: String!
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        localdatetimes: [_Neo4jLocalDateTimeInput]
+      ): TemporalNode
+        @hasScope(scopes: ["TemporalNode: Update", "update:temporalnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a TemporalNode node."
+      DeleteTemporalNode(name: String!): TemporalNode
+        @hasScope(scopes: ["TemporalNode: Delete", "delete:temporalnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a TemporalNode node."
+      MergeTemporalNode(
+        datetime: _Neo4jDateTimeInput
+        name: String!
+        time: _Neo4jTimeInput
+        date: _Neo4jDateInput
+        localtime: _Neo4jLocalTimeInput
+        localdatetime: _Neo4jLocalDateTimeInput
+        localdatetimes: [_Neo4jLocalDateTimeInput]
+      ): TemporalNode
+        @hasScope(scopes: ["TemporalNode: Merge", "merge:temporalnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the SPATIAL relationship."
+      AddSpatialNodeSpatialNodes(
+        from: _SpatialNodeInput!
+        to: _SpatialNodeInput!
+      ): _AddSpatialNodeSpatialNodesPayload
+        @MutationMeta(
+          relationship: "SPATIAL"
+          from: "SpatialNode"
+          to: "SpatialNode"
+        )
+        @hasScope(
+          scopes: [
+            "SpatialNode: Create"
+            "create:spatialnode"
+            "SpatialNode: Create"
+            "create:spatialnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the SPATIAL relationship."
+      RemoveSpatialNodeSpatialNodes(
+        from: _SpatialNodeInput!
+        to: _SpatialNodeInput!
+      ): _RemoveSpatialNodeSpatialNodesPayload
+        @MutationMeta(
+          relationship: "SPATIAL"
+          from: "SpatialNode"
+          to: "SpatialNode"
+        )
+        @hasScope(
+          scopes: [
+            "SpatialNode: Delete"
+            "delete:spatialnode"
+            "SpatialNode: Delete"
+            "delete:spatialnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the SPATIAL relationship."
+      MergeSpatialNodeSpatialNodes(
+        from: _SpatialNodeInput!
+        to: _SpatialNodeInput!
+      ): _MergeSpatialNodeSpatialNodesPayload
+        @MutationMeta(
+          relationship: "SPATIAL"
+          from: "SpatialNode"
+          to: "SpatialNode"
+        )
+        @hasScope(
+          scopes: [
+            "SpatialNode: Merge"
+            "merge:spatialnode"
+            "SpatialNode: Merge"
+            "merge:spatialnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a SpatialNode node."
+      CreateSpatialNode(id: ID, point: _Neo4jPointInput): SpatialNode
+        @hasScope(scopes: ["SpatialNode: Create", "create:spatialnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a SpatialNode node."
+      UpdateSpatialNode(id: ID!, point: _Neo4jPointInput): SpatialNode
+        @hasScope(scopes: ["SpatialNode: Update", "update:spatialnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a SpatialNode node."
+      DeleteSpatialNode(id: ID!): SpatialNode
+        @hasScope(scopes: ["SpatialNode: Delete", "delete:spatialnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a SpatialNode node."
+      MergeSpatialNode(id: ID!, point: _Neo4jPointInput): SpatialNode
+        @hasScope(scopes: ["SpatialNode: Merge", "merge:spatialnode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the FILMED_IN relationship."
+      AddCasedTypeState(
+        from: _CasedTypeInput!
+        to: _StateInput!
+      ): _AddCasedTypeStatePayload
+        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
+        @hasScope(
+          scopes: [
+            "CasedType: Create"
+            "create:casedtype"
+            "State: Create"
+            "create:state"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the FILMED_IN relationship."
+      RemoveCasedTypeState(
+        from: _CasedTypeInput!
+        to: _StateInput!
+      ): _RemoveCasedTypeStatePayload
+        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
+        @hasScope(
+          scopes: [
+            "CasedType: Delete"
+            "delete:casedtype"
+            "State: Delete"
+            "delete:state"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the FILMED_IN relationship."
+      MergeCasedTypeState(
+        from: _CasedTypeInput!
+        to: _StateInput!
+      ): _MergeCasedTypeStatePayload
+        @MutationMeta(relationship: "FILMED_IN", from: "CasedType", to: "State")
+        @hasScope(
+          scopes: [
+            "CasedType: Merge"
+            "merge:casedtype"
+            "State: Merge"
+            "merge:state"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a CasedType node."
+      CreateCasedType(name: String): CasedType
+        @hasScope(scopes: ["CasedType: Create", "create:casedtype"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a CasedType node."
+      DeleteCasedType(name: String!): CasedType
+        @hasScope(scopes: ["CasedType: Delete", "delete:casedtype"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a CasedType node."
+      MergeCasedType(name: String!): CasedType
+        @hasScope(scopes: ["CasedType: Merge", "merge:casedtype"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the cameras relationship."
+      AddCameraOperators(
+        from: _PersonInput!
+        to: _CameraInput!
+      ): _AddCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the cameras relationship."
+      RemoveCameraOperators(
+        from: _PersonInput!
+        to: _CameraInput!
+      ): _RemoveCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the cameras relationship."
+      MergeCameraOperators(
+        from: _PersonInput!
+        to: _CameraInput!
+      ): _MergeCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "Camera")
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      AddCameraReflexiveInterfaceRelationship(
+        from: _CameraInput!
+        to: _CameraInput!
+      ): _AddCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "Camera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "Camera: Create"
+            "create:camera"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      RemoveCameraReflexiveInterfaceRelationship(
+        from: _CameraInput!
+        to: _CameraInput!
+      ): _RemoveCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "Camera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "Camera: Delete"
+            "delete:camera"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      MergeCameraReflexiveInterfaceRelationship(
+        from: _CameraInput!
+        to: _CameraInput!
+      ): _MergeCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "Camera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "Camera: Merge"
+            "merge:camera"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the cameras relationship."
+      AddOldCameraOperators(
+        from: _PersonInput!
+        to: _OldCameraInput!
+      ): _AddOldCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "OldCamera: Create"
+            "create:oldcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the cameras relationship."
+      RemoveOldCameraOperators(
+        from: _PersonInput!
+        to: _OldCameraInput!
+      ): _RemoveOldCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "OldCamera: Delete"
+            "delete:oldcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the cameras relationship."
+      MergeOldCameraOperators(
+        from: _PersonInput!
+        to: _OldCameraInput!
+      ): _MergeOldCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "OldCamera")
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "OldCamera: Merge"
+            "merge:oldcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      AddOldCameraReflexiveInterfaceRelationship(
+        from: _OldCameraInput!
+        to: _CameraInput!
+      ): _AddOldCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "OldCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "OldCamera: Create"
+            "create:oldcamera"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      RemoveOldCameraReflexiveInterfaceRelationship(
+        from: _OldCameraInput!
+        to: _CameraInput!
+      ): _RemoveOldCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "OldCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "OldCamera: Delete"
+            "delete:oldcamera"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      MergeOldCameraReflexiveInterfaceRelationship(
+        from: _OldCameraInput!
+        to: _CameraInput!
+      ): _MergeOldCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "OldCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "OldCamera: Merge"
+            "merge:oldcamera"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a OldCamera node."
+      CreateOldCamera(
+        type: String
+        id: ID
+        make: String
+        weight: Int
+        smell: String
+      ): OldCamera @hasScope(scopes: ["OldCamera: Create", "create:oldcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a OldCamera node."
+      UpdateOldCamera(
+        type: String
+        id: ID!
+        make: String
+        weight: Int
+        smell: String
+      ): OldCamera @hasScope(scopes: ["OldCamera: Update", "update:oldcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a OldCamera node."
+      DeleteOldCamera(id: ID!): OldCamera
+        @hasScope(scopes: ["OldCamera: Delete", "delete:oldcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a OldCamera node."
+      MergeOldCamera(
+        type: String
+        id: ID!
+        make: String
+        weight: Int
+        smell: String
+      ): OldCamera @hasScope(scopes: ["OldCamera: Merge", "merge:oldcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the cameras relationship."
+      AddNewCameraOperators(
+        from: _PersonInput!
+        to: _NewCameraInput!
+      ): _AddNewCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "NewCamera: Create"
+            "create:newcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the cameras relationship."
+      RemoveNewCameraOperators(
+        from: _PersonInput!
+        to: _NewCameraInput!
+      ): _RemoveNewCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "NewCamera: Delete"
+            "delete:newcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the cameras relationship."
+      MergeNewCameraOperators(
+        from: _PersonInput!
+        to: _NewCameraInput!
+      ): _MergeNewCameraOperatorsPayload
+        @MutationMeta(relationship: "cameras", from: "Person", to: "NewCamera")
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "NewCamera: Merge"
+            "merge:newcamera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      AddNewCameraReflexiveInterfaceRelationship(
+        from: _NewCameraInput!
+        to: _CameraInput!
+      ): _AddNewCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "NewCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "NewCamera: Create"
+            "create:newcamera"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      RemoveNewCameraReflexiveInterfaceRelationship(
+        from: _NewCameraInput!
+        to: _CameraInput!
+      ): _RemoveNewCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "NewCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "NewCamera: Delete"
+            "delete:newcamera"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACE_RELATIONSHIP relationship."
+      MergeNewCameraReflexiveInterfaceRelationship(
+        from: _NewCameraInput!
+        to: _CameraInput!
+      ): _MergeNewCameraReflexiveInterfaceRelationshipPayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACE_RELATIONSHIP"
+          from: "NewCamera"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "NewCamera: Merge"
+            "merge:newcamera"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a NewCamera node."
+      CreateNewCamera(
+        type: String
+        id: ID
+        make: String
+        weight: Int
+        features: [String]
+      ): NewCamera @hasScope(scopes: ["NewCamera: Create", "create:newcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a NewCamera node."
+      UpdateNewCamera(
+        type: String
+        id: ID!
+        make: String
+        weight: Int
+        features: [String]
+      ): NewCamera @hasScope(scopes: ["NewCamera: Update", "update:newcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a NewCamera node."
+      DeleteNewCamera(id: ID!): NewCamera
+        @hasScope(scopes: ["NewCamera: Delete", "delete:newcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a NewCamera node."
+      MergeNewCamera(
+        type: String
+        id: ID!
+        make: String
+        weight: Int
+        features: [String]
+      ): NewCamera @hasScope(scopes: ["NewCamera: Merge", "merge:newcamera"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the favoriteCamera relationship."
+      AddCameraManFavoriteCamera(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _AddCameraManFavoriteCameraPayload
+        @MutationMeta(
+          relationship: "favoriteCamera"
+          from: "CameraMan"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Create"
+            "create:cameraman"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the favoriteCamera relationship."
+      RemoveCameraManFavoriteCamera(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _RemoveCameraManFavoriteCameraPayload
+        @MutationMeta(
+          relationship: "favoriteCamera"
+          from: "CameraMan"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Delete"
+            "delete:cameraman"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the favoriteCamera relationship."
+      MergeCameraManFavoriteCamera(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _MergeCameraManFavoriteCameraPayload
+        @MutationMeta(
+          relationship: "favoriteCamera"
+          from: "CameraMan"
+          to: "Camera"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Merge"
+            "merge:cameraman"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the cameras relationship."
+      AddCameraManCameras(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _AddCameraManCamerasPayload
+        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
+        @hasScope(
+          scopes: [
+            "CameraMan: Create"
+            "create:cameraman"
+            "Camera: Create"
+            "create:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the cameras relationship."
+      RemoveCameraManCameras(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _RemoveCameraManCamerasPayload
+        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
+        @hasScope(
+          scopes: [
+            "CameraMan: Delete"
+            "delete:cameraman"
+            "Camera: Delete"
+            "delete:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the cameras relationship."
+      MergeCameraManCameras(
+        from: _CameraManInput!
+        to: _CameraInput!
+      ): _MergeCameraManCamerasPayload
+        @MutationMeta(relationship: "cameras", from: "CameraMan", to: "Camera")
+        @hasScope(
+          scopes: [
+            "CameraMan: Merge"
+            "merge:cameraman"
+            "Camera: Merge"
+            "merge:camera"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the cameraBuddy relationship."
+      AddCameraManCameraBuddy(
+        from: _CameraManInput!
+        to: _PersonInput!
+      ): _AddCameraManCameraBuddyPayload
+        @MutationMeta(
+          relationship: "cameraBuddy"
+          from: "CameraMan"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Create"
+            "create:cameraman"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the cameraBuddy relationship."
+      RemoveCameraManCameraBuddy(
+        from: _CameraManInput!
+        to: _PersonInput!
+      ): _RemoveCameraManCameraBuddyPayload
+        @MutationMeta(
+          relationship: "cameraBuddy"
+          from: "CameraMan"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Delete"
+            "delete:cameraman"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the cameraBuddy relationship."
+      MergeCameraManCameraBuddy(
+        from: _CameraManInput!
+        to: _PersonInput!
+      ): _MergeCameraManCameraBuddyPayload
+        @MutationMeta(
+          relationship: "cameraBuddy"
+          from: "CameraMan"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "CameraMan: Merge"
+            "merge:cameraman"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddCameraManInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _AddCameraManInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Genre: Create"
+            "create:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveCameraManInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+      ): _RemoveCameraManInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Genre: Delete"
+            "delete:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateCameraManInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _UpdateCameraManInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Genre: Update"
+            "update:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeCameraManInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _GenreInput!
+        data: _InterfacedRelationshipTypeInput!
+      ): _MergeCameraManInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Genre"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Genre: Merge"
+            "merge:genre"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      AddCameraManReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _AddCameraManReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Create"
+            "create:person"
+            "Person: Create"
+            "create:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      RemoveCameraManReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+      ): _RemoveCameraManReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Delete"
+            "delete:person"
+            "Person: Delete"
+            "delete:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##update-relationship) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      UpdateCameraManReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _UpdateCameraManReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Update"
+            "update:person"
+            "Person: Update"
+            "update:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE relationship."
+      MergeCameraManReflexiveInterfacedRelationshipType(
+        from: _PersonInput!
+        to: _PersonInput!
+        data: _ReflexiveInterfacedRelationshipTypeInput!
+      ): _MergeCameraManReflexiveInterfacedRelationshipTypePayload
+        @MutationMeta(
+          relationship: "REFLEXIVE_INTERFACED_RELATIONSHIP_TYPE"
+          from: "Person"
+          to: "Person"
+        )
+        @hasScope(
+          scopes: [
+            "Person: Merge"
+            "merge:person"
+            "Person: Merge"
+            "merge:person"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a CameraMan node."
+      CreateCameraMan(
+        userId: ID
+        name: String
+        extensionScalar: String
+      ): CameraMan @hasScope(scopes: ["CameraMan: Create", "create:cameraman"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a CameraMan node."
+      UpdateCameraMan(
+        userId: ID!
+        name: String
+        extensionScalar: String
+      ): CameraMan @hasScope(scopes: ["CameraMan: Update", "update:cameraman"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a CameraMan node."
+      DeleteCameraMan(userId: ID!): CameraMan
+        @hasScope(scopes: ["CameraMan: Delete", "delete:cameraman"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a CameraMan node."
+      MergeCameraMan(
+        userId: ID!
+        name: String
+        extensionScalar: String
+      ): CameraMan @hasScope(scopes: ["CameraMan: Merge", "merge:cameraman"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the TEST_RELATION relationship."
+      AddUniqueNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _AddUniqueNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
+        )
+        @hasScope(
+          scopes: [
+            "UniqueNode: Create"
+            "create:uniquenode"
+            "UniqueStringNode: Create"
+            "create:uniquestringnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the TEST_RELATION relationship."
+      RemoveUniqueNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _RemoveUniqueNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
+        )
+        @hasScope(
+          scopes: [
+            "UniqueNode: Delete"
+            "delete:uniquenode"
+            "UniqueStringNode: Delete"
+            "delete:uniquestringnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the TEST_RELATION relationship."
+      MergeUniqueNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _MergeUniqueNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
+        )
+        @hasScope(
+          scopes: [
+            "UniqueNode: Merge"
+            "merge:uniquenode"
+            "UniqueStringNode: Merge"
+            "merge:uniquestringnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a UniqueNode node."
+      CreateUniqueNode(string: String, id: ID, anotherId: ID): UniqueNode
+        @hasScope(scopes: ["UniqueNode: Create", "create:uniquenode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a UniqueNode node."
+      UpdateUniqueNode(string: String, id: ID!, anotherId: ID): UniqueNode
+        @hasScope(scopes: ["UniqueNode: Update", "update:uniquenode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a UniqueNode node."
+      DeleteUniqueNode(id: ID!): UniqueNode
+        @hasScope(scopes: ["UniqueNode: Delete", "delete:uniquenode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a UniqueNode node."
+      MergeUniqueNode(string: String, id: ID!, anotherId: ID): UniqueNode
+        @hasScope(scopes: ["UniqueNode: Merge", "merge:uniquenode"])
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-relationships) the TEST_RELATION relationship."
+      AddUniqueStringNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _AddUniqueStringNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
+        )
+        @hasScope(
+          scopes: [
+            "UniqueNode: Create"
+            "create:uniquenode"
+            "UniqueStringNode: Create"
+            "create:uniquestringnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##add--remove-relationship) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-relationships-only) the TEST_RELATION relationship."
+      RemoveUniqueStringNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _RemoveUniqueStringNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
         )
-      since: Int
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      ratings: [String]
-      datetimes: [_Neo4jDateTime]
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      location: _Neo4jPoint
-      to: User
-    }
-
-    type Rated @relation {
-      from: User
-      currentUserId(strArg: String): String
-        @cypher(
-          statement: "RETURN $cypherParams.currentUserId AS cypherParamsUserId"
+        @hasScope(
+          scopes: [
+            "UniqueNode: Delete"
+            "delete:uniquenode"
+            "UniqueStringNode: Delete"
+            "delete:uniquestringnode"
+          ]
         )
-      rating: Int
-      ratings: [Int]
-      time: _Neo4jTime
-      date: _Neo4jDate
-      datetime: _Neo4jDateTime
-      localtime: _Neo4jLocalTime
-      localdatetime: _Neo4jLocalDateTime
-      datetimes: [_Neo4jDateTime]
-      location: _Neo4jPoint
-      _id: String
-      to: Movie
-    }
-
-    input _BookInput {
-      genre: BookGenre!
-    }
-
-    enum _currentUserIdOrdering {
-      userId_asc
-      userId_desc
-      _id_asc
-      _id_desc
-    }
-
-    input _currentUserIdFilter {
-      AND: [_currentUserIdFilter!]
-      OR: [_currentUserIdFilter!]
-      userId: String
-      userId_not: String
-      userId_in: [String!]
-      userId_not_in: [String!]
-      userId_contains: String
-      userId_not_contains: String
-      userId_starts_with: String
-      userId_not_starts_with: String
-      userId_ends_with: String
-      userId_not_ends_with: String
-    }
-
-    input _currentUserIdInput {
-      userId: String!
-    }
-
-    type ignoredType {
-      ignoredField: String @neo4j_ignore
-    }
-
-    "Custom scalar type line description"
-    scalar Time
-
-    scalar Date
-
-    scalar DateTime
-
-    scalar LocalTime
-
-    scalar LocalDateTime
-
-    enum Role {
-      reader
-      user
-      admin
-    }
-
-    input _OldCameraInput {
-      id: ID!
-    }
-
-    type _AddOldCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "OldCamera") {
-      from: Person
-      to: OldCamera
-    }
-
-    type _RemoveOldCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "OldCamera") {
-      from: Person
-      to: OldCamera
-    }
-
-    type _MergeOldCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "OldCamera") {
-      from: Person
-      to: OldCamera
-    }
-
-    type _AddOldCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "OldCamera"
-        to: "Camera"
-      ) {
-      from: OldCamera
-      to: Camera
-    }
-
-    type _RemoveOldCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "OldCamera"
-        to: "Camera"
-      ) {
-      from: OldCamera
-      to: Camera
-    }
-
-    type _MergeOldCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "OldCamera"
-        to: "Camera"
-      ) {
-      from: OldCamera
-      to: Camera
-    }
-
-    input _NewCameraInput {
-      id: ID!
-    }
-
-    type _AddNewCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "NewCamera") {
-      from: Person
-      to: NewCamera
-    }
-
-    type _RemoveNewCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "NewCamera") {
-      from: Person
-      to: NewCamera
-    }
-
-    type _MergeNewCameraOperatorsPayload
-      @relation(name: "cameras", from: "Person", to: "NewCamera") {
-      from: Person
-      to: NewCamera
-    }
-
-    type _AddNewCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "NewCamera"
-        to: "Camera"
-      ) {
-      from: NewCamera
-      to: Camera
-    }
-
-    type _RemoveNewCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "NewCamera"
-        to: "Camera"
-      ) {
-      from: NewCamera
-      to: Camera
-    }
-
-    type _MergeNewCameraReflexiveInterfaceRelationshipPayload
-      @relation(
-        name: "REFLEXIVE_INTERFACE_RELATIONSHIP"
-        from: "NewCamera"
-        to: "Camera"
-      ) {
-      from: NewCamera
-      to: Camera
-    }
-
-    type _Neo4jPoint {
-      x: Float
-      y: Float
-      z: Float
-      longitude: Float
-      latitude: Float
-      height: Float
-      crs: String
-      srid: Int
-    }
-
-    input _Neo4jPointInput {
-      x: Float
-      y: Float
-      z: Float
-      longitude: Float
-      latitude: Float
-      height: Float
-      crs: String
-      srid: Int
-    }
-
-    input _Neo4jPointDistanceFilter {
-      point: _Neo4jPointInput!
-      distance: Float!
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/##merge-relationship) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-relationships) the TEST_RELATION relationship."
+      MergeUniqueStringNodeTestRelation(
+        from: _UniqueNodeInput!
+        to: _UniqueStringNodeInput!
+      ): _MergeUniqueStringNodeTestRelationPayload
+        @MutationMeta(
+          relationship: "TEST_RELATION"
+          from: "UniqueNode"
+          to: "UniqueStringNode"
+        )
+        @hasScope(
+          scopes: [
+            "UniqueNode: Merge"
+            "merge:uniquenode"
+            "UniqueStringNode: Merge"
+            "merge:uniquestringnode"
+          ]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#create) for [creating](https://neo4j.com/docs/cypher-manual/4.1/clauses/create/#create-nodes) a UniqueStringNode node."
+      CreateUniqueStringNode(id: ID!, uniqueString: String): UniqueStringNode
+        @hasScope(
+          scopes: ["UniqueStringNode: Create", "create:uniquestringnode"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#update) for [updating](https://neo4j.com/docs/cypher-manual/4.1/clauses/set/#set-update-a-property) a UniqueStringNode node."
+      UpdateUniqueStringNode(id: ID, uniqueString: String!): UniqueStringNode
+        @hasScope(
+          scopes: ["UniqueStringNode: Update", "update:uniquestringnode"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#delete) for [deleting](https://neo4j.com/docs/cypher-manual/4.1/clauses/delete/#delete-delete-single-node) a UniqueStringNode node."
+      DeleteUniqueStringNode(uniqueString: String!): UniqueStringNode
+        @hasScope(
+          scopes: ["UniqueStringNode: Delete", "delete:uniquestringnode"]
+        )
+      "[Generated mutation](https://grandstack.io/docs/graphql-schema-generation-augmentation/#merge) for [merging](https://neo4j.com/docs/cypher-manual/4.1/clauses/merge/#query-merge-node-derived) a UniqueStringNode node."
+      MergeUniqueStringNode(id: ID, uniqueString: String!): UniqueStringNode
+        @hasScope(scopes: ["UniqueStringNode: Merge", "merge:uniquestringnode"])
     }
 
-    enum _RelationDirections {
-      IN
-      OUT
+    type SubscriptionC {
+      testSubscribe: Boolean
     }
 
     schema {
diff --git a/test/unit/configTest.test.js b/test/unit/configTest.test.js
index add37749..de1b3ef4 100644
--- a/test/unit/configTest.test.js
+++ b/test/unit/configTest.test.js
@@ -147,6 +147,9 @@ test.cb(
 
     const queryType = `
 type Query {
+  """
+  [Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Tweet type nodes.
+  """
   Tweet(id: ID, timestamp: _Neo4jDateTimeInput, text: String, _id: String, first: Int, offset: Int, orderBy: [_TweetOrdering], filter: _TweetFilter): [Tweet]
 }
 `;
@@ -169,6 +172,9 @@ test.cb('Config - augmentSchema - specify types to exclude for query', t => {
 
   const queryType = `
 type Query {
+  """
+  [Generated query](https://grandstack.io/docs/graphql-schema-generation-augmentation#generated-queries) for Tweet type nodes.
+  """
   Tweet(id: ID, timestamp: _Neo4jDateTimeInput, text: String, _id: String, first: Int, offset: Int, orderBy: [_TweetOrdering], filter: _TweetFilter): [Tweet]
 }
 `;

From 871260b702249096d541bbb25c4f0995a8fdfc3d Mon Sep 17 00:00:00 2001
From: Michael Graham <38390185+michaeldgraham@users.noreply.github.com>
Date: Wed, 30 Sep 2020 20:39:55 -0700
Subject: [PATCH 2/3] attempted fix for integration test

---
 test/integration/integration.test.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/test/integration/integration.test.js b/test/integration/integration.test.js
index bd09331c..3c2186f1 100644
--- a/test/integration/integration.test.js
+++ b/test/integration/integration.test.js
@@ -1296,15 +1296,15 @@ test.serial('query union type using complex fragments', async t => {
           movieId: '12dd334d5zaaaa',
           title: 'My Super Awesome Movie'
         },
-        {
-          __typename: 'OldCamera',
-          id: 'cam009',
-          type: 'macro'
-        },
         {
           userId: 'man009',
           name: 'Johnnie Zoooooooom',
           __typename: 'User'
+        },
+        {
+          __typename: 'OldCamera',
+          id: 'cam009',
+          type: 'macro'
         }
       ]
     }

From 10590881256bb770502b655d32824fe774d81e39 Mon Sep 17 00:00:00 2001
From: Michael Graham <38390185+michaeldgraham@users.noreply.github.com>
Date: Wed, 30 Sep 2020 20:47:27 -0700
Subject: [PATCH 3/3] reversal of failed fix

---
 test/integration/integration.test.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/test/integration/integration.test.js b/test/integration/integration.test.js
index 3c2186f1..bd09331c 100644
--- a/test/integration/integration.test.js
+++ b/test/integration/integration.test.js
@@ -1296,15 +1296,15 @@ test.serial('query union type using complex fragments', async t => {
           movieId: '12dd334d5zaaaa',
           title: 'My Super Awesome Movie'
         },
-        {
-          userId: 'man009',
-          name: 'Johnnie Zoooooooom',
-          __typename: 'User'
-        },
         {
           __typename: 'OldCamera',
           id: 'cam009',
           type: 'macro'
+        },
+        {
+          userId: 'man009',
+          name: 'Johnnie Zoooooooom',
+          __typename: 'User'
         }
       ]
     }