2025-03-27 Graph Use Case/CreateNode: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
= CreateNode Function =  
= Overview =
== Overview ==
= Using Case =
== Using Case ==
== CreateNode with identifiers ==
=== CreateNode with identifiers ===
'''Example Param'''
=== CreateNode with versionedData ===
<source lang="json">
=== CreateNode with belongTo ===
{
=== CreateNode with targetNode ===
"objType":{
    "serviceTag": "xxxx",
    "objectType": "yyyy",
},
"objInstanceFull":{
    "identifiers":{
      "xxxx" : "yyyy"
    },
    "fields":{
      // "optional"
      "xxxx" : "yyyy"
    }
},
"relationships":[],
"originTimestamp": 1234567890,
"settings":{
    "updatePropertiesOnMatch": false
}
}
 
</source>
'''Example Output'''
<syntaxhighlight lang="javascript">
{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objType: {
          serviceTag: 'xxxx',
            objectType: 'yyyy'
        },
        properties: { //properties }
        },
        existsNode: { },
        userNode: { // if has userNode send to createNode
          objType: { serviceTag: 'UserAccount', objectType: 'user' },
          properties: { userId: 'xxxx' }
        }
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "string", // "complete' or "error"
  errorsFound: [],
  graphServiceTag: "GraphHandler"
}
</syntaxhighlight>
 
== CreateNode with versionedData ==
'''Example Param'''
<source lang="json">
{
"objType": {
  "serviceTag": "xxxx",
  "objectType": "yyyy"
},
"objInstanceFull": {
  "identifiers": {
    "xxxx": "yyyy"
  },
  "fields": {
    "can send all fields of versionedData",
    "if send any fields of versionedData will be hook properties then return all "
},
"Relationship": [],
"originTimestamp": 1234567890,
"callingFlow": "string"
}
</source>
'''Exmaple Output'''
<syntaxhighlight lang="javascript">
{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objTypes: [
          {
            serviceTag: "xxxx",
            objectType: "yyyy"
          }
        ],
          objInstanceFull: {
          identifiers: {
            //identifiers
          },
          fields: {
            // fields of main node
          }
        },
        existsNode: { },
        userNode: {
          objTypes: [
            {
              serviceTag: "UserAccount",
              objectType: "user"
            }
          ],
            properties: {
            userId: "xxxx"
          }
        },
        relationships: []
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "complete",
  errorsFound: [],
  graphServiceTag: "GraphHandler"
}
</syntaxhighlight>
 
== CreateNode with targetNode ==
'''Example Param'''
<source lang="json">
{
  "objType": {
    "serviceTag": "xxxx",
    "objectType": "yyyy"
  },
  "objInstanceFull": {
    "identifiers": {
      "xxxx": "yyyy"
    },
    "fields": {
      "//fields"
    }
  },
  "relationships": [
    {
      "relType": {
        "serviceTag": "xxxx",
        "relationshipTag": "yyyy"
      },
      "relationshipProperties": {
        "// optional"
      },
      "relationshipDirection": "from"
      "targetObjType": {
        "serviceTag": "xxxx",
        "objectType": "yyyy"
      },
      "targetIdentifiers": {
        "xxxx": "yyyy"
      }
    }
  ],
  "originTimestamp": 1234567890,
  "settings": {
    "updatePropertiesOnMatch": true
  }
}
 
</source>
'''Exmaple Output'''
<syntaxhighlight lang="javascript">
{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objTypes: [
          {
            serviceTag: "xxxx",
            objectType: "yyyy"
          }
        ],
          objInstanceFull: {
          identifiers: {
            //identifiers
          },
          fields: {
            // fields of npde
          }
        },
        existsNode: { },
        userNode: {
          objTypes: [
            {
              serviceTag: "UserAccount",
              objectType: "user"
            }
          ],
            properties: {
            userId: "xxxx"
          }
        },
        relationships: [
          {
            objTypes: [
              { serviceTag: 'string', objectType: 'string' }
            ],
            objInstanceFull: {
              identifiers: {
                // identifiers
              }
            },
            relType: {
              serviceTag: 'string',
              relationshipTag: 'rel'
            },
            relationshipProperties: {
              // properties
            }
          }
        ]
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "complete",
    errorsFound: [],
      graphServiceTag: "GraphHandler"
}
</syntaxhighlight>
 
== CreateNode with belongTo ==
* Params like create basicNode & versionedData but in objectSchema optional has belongTo If in objectSchema have belongTo will create query and return dataStructure of belongTo
* Must send : x-correlation-base-user-id : xxxx AND x-correlation-target-id : yyyy ( identifiers of  that node)
 
== CreateNode with extendObjtype ==
* create objectSchema that have objectType for create main node eg. objectType: objectA then upload To S3
* create objectSchemathat have extendObjtype for existParentNode eg. objectType: objectB then upload To S3
* Send parameter with identifiers’s objectType of extendObjtype for create Node
 
== CreateNode with extendObjtype and targetNode ==
* create objectSchema that have objectType for create main node eg. objectType: objectA
* createNode extend with relationship that have relationshipSchema : requiredOnCreate = true to targetNode
 
== CreateNode With systemGenerated ==
* not send userNode or userId when createNode


[[Category:Working documents| 2025-03-27]]
[[Category:Working documents| 2025-03-27]]

Latest revision as of 03:23, 25 September 2025

Overview

Using Case

CreateNode with identifiers

Example Param

{
 "objType":{
    "serviceTag": "xxxx",
    "objectType": "yyyy",
 },
 "objInstanceFull":{
    "identifiers":{
       "xxxx" : "yyyy"
    },
    "fields":{
      // "optional"
      "xxxx" : "yyyy"
    }
 },
"relationships":[],
 "originTimestamp": 1234567890,
 "settings":{
    "updatePropertiesOnMatch": false 
 }
}

Example Output

{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objType: {
          serviceTag: 'xxxx',
            objectType: 'yyyy'
        },
        properties: { //properties }
        },
        existsNode: { },
        userNode: { // if has userNode send to createNode
          objType: { serviceTag: 'UserAccount', objectType: 'user' },
          properties: { userId: 'xxxx' }
        }
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "string", // "complete' or "error"
  errorsFound: [],
  graphServiceTag: "GraphHandler"
}

CreateNode with versionedData

Example Param

{
 "objType": {
   "serviceTag": "xxxx",
   "objectType": "yyyy"
 },
 "objInstanceFull": {
   "identifiers": {
     "xxxx": "yyyy"
   },
   "fields": {
     "can send all fields of versionedData",
     "if send any fields of versionedData will be hook properties then return all "
 },
 "Relationship": [],
 "originTimestamp": 1234567890,
 "callingFlow": "string"
}

Exmaple Output

{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objTypes: [
          {
            serviceTag: "xxxx",
            objectType: "yyyy"
          }
        ],
          objInstanceFull: {
          identifiers: {
            //identifiers
          },
          fields: {
            // fields of main node
          }
        },
        existsNode: { },
        userNode: {
          objTypes: [
            {
              serviceTag: "UserAccount",
              objectType: "user"
            }
          ],
            properties: {
            userId: "xxxx"
          }
        },
        relationships: []
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "complete",
  errorsFound: [],
  graphServiceTag: "GraphHandler"
}

CreateNode with targetNode

Example Param

{
   "objType": {
     "serviceTag": "xxxx",
     "objectType": "yyyy"
   },
   "objInstanceFull": {
     "identifiers": {
       "xxxx": "yyyy"
     },
     "fields": {
       "//fields"
     }
   },
   "relationships": [
     {
       "relType": {
         "serviceTag": "xxxx",
         "relationshipTag": "yyyy"
       },
       "relationshipProperties": {
        "// optional"
       },
      "relationshipDirection": "from" 
       "targetObjType": {
         "serviceTag": "xxxx",
         "objectType": "yyyy"
       },
       "targetIdentifiers": {
         "xxxx": "yyyy"
       }
     }
   ],
   "originTimestamp": 1234567890,
   "settings": {
     "updatePropertiesOnMatch": true
   }
 }

Exmaple Output

{
  returnValue: {
    queryResult: {
      returnCreateNode: {
        objTypes: [
          {
            serviceTag: "xxxx",
            objectType: "yyyy"
          }
        ],
          objInstanceFull: {
          identifiers: {
            //identifiers
          },
          fields: {
            // fields of npde
          }
        },
        existsNode: { },
        userNode: {
          objTypes: [
            {
              serviceTag: "UserAccount",
              objectType: "user"
            }
          ],
            properties: {
            userId: "xxxx"
          }
        },
        relationships: [
          {
            objTypes: [
              { serviceTag: 'string', objectType: 'string' }
            ],
            objInstanceFull: {
              identifiers: {
                // identifiers
              }
            },
            relType: {
              serviceTag: 'string',
              relationshipTag: 'rel'
            },
            relationshipProperties: {
              // properties
            }
          }
        ]
      }
    },
    requestParams: {
      // return example send param
    }
  },
  status: "complete",
    errorsFound: [],
      graphServiceTag: "GraphHandler"
}

CreateNode with belongTo

  • Params like create basicNode & versionedData but in objectSchema optional has belongTo If in objectSchema have belongTo will create query and return dataStructure of belongTo
  • Must send : x-correlation-base-user-id : xxxx AND x-correlation-target-id : yyyy ( identifiers of that node)

CreateNode with extendObjtype

  • create objectSchema that have objectType for create main node eg. objectType: objectA then upload To S3
  • create objectSchemathat have extendObjtype for existParentNode eg. objectType: objectB then upload To S3
  • Send parameter with identifiers’s objectType of extendObjtype for create Node

CreateNode with extendObjtype and targetNode

  • create objectSchema that have objectType for create main node eg. objectType: objectA
  • createNode extend with relationship that have relationshipSchema : requiredOnCreate = true to targetNode

CreateNode With systemGenerated

  • not send userNode or userId when createNode