2025-03-27 Graph Use Case/CreateNode

From Izara Wiki
Jump to navigation Jump to search

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

CreateNode With systemGenerated

  • not send userNode or userId to createNode