Create, Save and Update Dataset Relationship JSON Examples
Table of Contents
Complete JSON Example
This JSON example applies to Create Dataset Relationship, Save Dataset Relationship, and Update Dataset Relationship APIs and can be used as a reference for request body object.
JSON Body
{
"iro":{
"entityRepositDate":"",
"ownerAppId":"398949229",
"linkedEntityId":"",
"type":"DRD_OBJECT",
"specific":{
"drdObject":{
"layout":{
"nodes":[
{
"top":"414.8125",
"left":"80",
"width":"200",
"id":"17098110604382127032016158635163_6",
"collapse":"false",
"height":"300"
},
{
"top":"87.8125",
"left":"285",
"width":"200",
"id":"17098114278439127077099135156813_2",
"collapse":"false",
"height":"300"
},
{
"top":"78.8125",
"left":"21",
"width":"200",
"id":"17098107735558127085088197661322_1",
"collapse":"false",
"height":"300"
},
{
"top":"3.2125",
"left":"561",
"width":"200",
"id":"17098107920041127081041159911730_5",
"collapse":"false",
"height":"300"
}
]
},
"panelProperties":{
},
"nodes":[
{
"id":"17098110604382127032016158635163_6",
"relDataset":{
"aliasName":"DimProduct Small",
"id":"17098110604382127032016158635163",
"type":""
}
},
{
"id":"17098114278439127077099135156813_2",
"relDataset":{
"aliasName":"FactSales",
"id":"17098114278439127077099135156813",
"type":"FACT"
}
},
{
"id":"17098107735558127085088197661322_1",
"relDataset":{
"aliasName":"DimCustomer",
"id":"17098107735558127085088197661322",
"type":""
}
},
{
"id":"17098107920041127081041159911730_5",
"relDataset":{
"aliasName":"DimDate",
"id":"17098107920041127081041159911730",
"type":""
}
}
],
"lineType":"NOODLE",
"viewType":"GRAPHICAL",
"relations":[
{
"sourceId":"17098110604382127032016158635163_6",
"name":"undefined",
"join":{
"type":"INNER",
"joinBy":[
{
"node1Key":{
"id":"",
"type":"",
"content":"productkey"
},
"node1SecondaryKey":{
"id":"",
"type":""
},
"operator":"EQUAL_TO",
"node2SecondaryKey":{
"id":"",
"type":""
},
"node2Key":{
"id":"",
"type":"",
"content":"productkey"
}
}
]
},
"type":"ONE_TO_MANY",
"node2Id":"17098114278439127077099135156813_2",
"node1Id":"17098110604382127032016158635163_6"
},
{
"sourceId":"17098114278439127077099135156813_2",
"name":"undefined",
"join":{
"type":"INNER",
"joinBy":[
{
"node1Key":{
"id":"",
"type":"",
"content":"customerkey"
},
"node1SecondaryKey":{
"id":"",
"type":""
},
"operator":"EQUAL_TO",
"node2SecondaryKey":{
"id":"",
"type":""
},
"node2Key":{
"id":"",
"type":"",
"content":"customerkey"
}
}
]
},
"type":"ONE_TO_MANY",
"node2Id":"17098107735558127085088197661322_1",
"node1Id":"17098114278439127077099135156813_2"
},
{
"sourceId":"17098107920041127081041159911730_5",
"name":"undefined",
"join":{
"type":"INNER",
"joinBy":[
{
"node1Key":{
"id":"",
"type":"",
"content":"datekey"
},
"node1SecondaryKey":{
"id":"",
"type":""
},
"operator":"EQUAL_TO",
"node2SecondaryKey":{
"id":"",
"type":""
},
"node2Key":{
"id":"",
"type":"",
"content":"orderdatekey"
}
}
]
},
"type":"ONE_TO_MANY",
"node2Id":"17098114278439127077099135156813_2",
"node1Id":"17098107920041127081041159911730_5"
}
],
"layoutProperty":{
"panelDetails":{
"files":{
"style":{
},
"id":"files"
},
"datasets":{
"style":{
},
"id":"datasets"
},
"properties":{
"style":{
},
"id":"properties"
}
},
"columnDetails":[
{
"panels":[
],
"style":{
"width":224
}
},
{
"panels":[
],
"style":{
}
}
]
}
}
},
"folderId":"folder_17504177963919127045012149779917",
"designSource":"DESIGNER",
"ownerAppName":"parva.jain",
"common":{
"compatibilityVersion":"1",
"desc":"",
"tags":""
},
"entityState":"",
"name":"parva Relationship",
"isPublic":true,
"subType":"",
"repositDate":"01/12/2026 17:06:02 IST",
"id":"17504178000665127098015115855971",
"folderName":"parvademo",
"accessRights":"1",
"categoryId":"folder_17504177963919127045012149779917"
}
}JSON Field Definitions
Field | Type | Description | Possible Values | Example |
iro | JSON Object | Root wrapper containing DRD objects | DRD JSONobject | {...} |
String | Unique system-generated identifier for the DRD. Used to reference this DRD in API calls, relationships, and semantic models | Any valid system-generated ID string | "17785818880175127014040150037850" | |
iro.name | String | Human-readable display name of the DRD. This name appears in the UI and is used for identification. Must be unique within a folder | Any valid non-empty string (no special characters like / \ : * ? " < > |) | "Sanity_DRD_ON_MultiFact copy 1" |
iro.type | String | Internal entity classification. Used by the system to distinguish DRDs from other entity types | "DRD_OBJECT" | "DRD_OBJECT" |
iro.subType | String | Further classification of the entity. Typically empty for DRDs | "" | "" |
iro.folderId | String | Unique identifier of the folder containing this DRD | Folder GUID with folder_ prefix | "folder_16774887564612127062080176677386" |
iro.folderName | String | Human-readable name of the folder containing this DRD | Any valid folder name | "Sanity_Suite" |
iro.categoryId | String | Same as folderId. Used for categorization | Folder GUID with folder_ prefix | "folder_16774887564612127062080176677386" |
iro.isPublic | Boolean | Indicates whether the DRD is publicly accessible to all users | true, false | true |
iro.entityState | String | Current state of the entity in the workflow | "ACTIVE" - Entity is active, | "" |
iro.designSource | String | Indicates how the DRD was created | "DESIGNER", "KYVOS_DIALOG", "QUICK_DATA_MODELLER" | "DESIGNER" |
iro.ownerAppId | String | Unique identifier of the user who owns this DRD | User ID string | "351003706" |
iro.ownerAppName | String | Username of the DRD owner | Username string | "admin" |
iro.accessRights | String | Access permission level for the current user | -1 = DENIED ("Deny"), | "1" |
iro.repositDate | String | Stores the repository save timestamp of the DRD in formatted date-time string format along with timezone information. | Formatted date string | "05/12/2026 16:01:28 IST" |
iro.entityRepositDate | String | Epoch timestamp of repository date | Epoch milliseconds or "null" | "1778502757348" |
iro.linkedEntityId | String | ID of any linked entity (e.g., semantic model) | Entity ID or "" | "" |
iro.common | Object | Common metadata properties | Object with desc, tags, version | {...} |
iro.common.compatibilityVersion | String | Schema version for backward compatibility | "1", "2", "3" | "3" |
iro.common.desc | String | User-provided description of the DRD | Any text | "" |
iro.common.tags | String | User-defined tags for categorization and search | Comma-separated tags | "" |
iro.specific | Object | Container for DRD-specific configuration | Object containing drdObject | {...} |
iro.specific.drdObject | Object | Main DRD configuration object containing nodes, relations, and layout | DRD configuration object | {...} |
iro.specific.drdObject.lineType | String | Visual style of relationship lines in the designer | "NOODLE", "STRAIGHT" | "NOODLE" |
iro.specific.drdObject.viewType | String | View mode of the DRD designer interface | "GRAPHICAL", "TABULAR" | "GRAPHICAL" |
iro.specific.drdObject.panelProperties | Object | Configuration for UI panels in the designer | {} or panel config object | {} |
iro.specific.drdObject.nodes | Array of Object | List of dataset nodes included in this DRD | Array of node objects | [...] |
iro.specific.drdObject.nodes[].id | String | Unique identifier for the node within this DRD | Format: datasetId + "_" + index | "14697760002691127040031128139982_4" |
iro.specific.drdObject.nodes[].relDataset | Object | Information about the related dataset | Dataset details object | {...} |
iro.specific.drdObject.nodes[].relDataset.id | String | Unique identifier of the source dataset | Dataset GUID | "16087236856722127012014164522755" |
iro.specific.drdObject.nodes[].relDataset.aliasName | String | Display name/alias for the dataset in this DRD | Any string | "Unit_History_Fact" |
iro.specific.drdObject.nodes[].relDataset.type | String | Classification of the dataset node type | "FACT", | "FACT" |
iro.specific.drdObject.relations | Array of Object | List of relationships (joins) between dataset nodes | Array of relation objects | [...] |
iro.specific.drdObject.relations[].name | String | Optional name for the relationship | Any string or "" | "" |
iro.specific.drdObject.relations[].sourceId | String | Source node ID (typically same as node1Id) | Node ID | "14697760002691127040031128139982_4" |
iro.specific.drdObject.relations[].node1Id | String | First/left node ID in the relationship | Node ID | "14697760002691127040031128139982_4" |
iro.specific.drdObject.relations[].node2Id | String | Second/right node ID in the relationship | Node ID | "14701198255374127083010127448719_1" |
iro.specific.drdObject.relations[].type | String | Cardinality type of the relationship | "ONE_TO_MANY", "MANY_TO_MANY" | "ONE_TO_MANY" |
iro.specific.drdObject.relations[].join | Object | Join configuration details | Join object | {...} |
iro.specific.drdObject.relations[].join.type | String | SQL join type for the relationship | "INNER", "LEFT_OUTER", "RIGHT_OUTER", "FULL_OUTER", "CROSS" | "INNER" |
iro.specific.drdObject.relations[].join.joinBy | Array of Object | List of column mappings for the join | Array of joinBy objects | [...] |
iro.specific.drdObject.relations[].join.joinBy[].operator | String | Comparison operator for the join condition | "EQUAL_TO", "BETWEEN", "GREATER_THAN", "LESS_THAN", "GREATER_THAN_EQUAL_TO", "LESS_THAN_EQUAL_TO" | "EQUAL_TO" |
iro.specific.drdObject.relations[].join.joinBy[].node1Key | Object | Column key from the first/left node | Key object | {...} |
iro.specific.drdObject.relations[].join.joinBy[].node1Key.id | String | Column ID (typically empty) | Column ID or "" | "" |
iro.specific.drdObject.relations[].join.joinBy[].node1Key.type | String | Column type (typically empty) | Type string or "" | "" |
iro.specific.drdObject.relations[].join.joinBy[].node1Key.content | String | Column name from the first dataset | Column name | "ship_to_id" |
iro.specific.drdObject.relations[].join.joinBy[].node2Key | Object | Column key from the second/right node | Key object | {...} |
iro.specific.drdObject.relations[].join.joinBy[].node2Key.id | String | Column ID (typically empty) | Column ID or "" | "" |
iro.specific.drdObject.relations[].join.joinBy[].node2Key.type | String | Column type (typically empty) | Type string or "" | "" |
iro.specific.drdObject.relations[].join.joinBy[].node2Key.content | String | Column name from the second dataset | Column name | "ship_to_id" |
iro.specific.drdObject.relations[].join.joinBy[].node1SecondaryKey | Object | Secondary key from first node (used for BETWEEN operator) | Key object | {"id": "", "type": ""} |
iro.specific.drdObject.relations[].join.joinBy[].node2SecondaryKey | Object | Secondary key from second node (used for BETWEEN operator) | Key object | {"id": "", "type": ""} |
iro.specific.drdObject.layout | Object | Stores visual layout configuration for the DRD designer, such as node positions, dimensions, and collapse state. Applicable only for Graphical View mode and not used in Tabular View mode. | Layout object | {...} |
iro.specific.drdObject.layout.nodes | Array of Object | Position and size information for each node | Array of layout node objects | [...] |
iro.specific.drdObject.layout.nodes[].id | String | Node ID (must match a node in nodes[]) | Node ID | "14697760002691127040031128139982_4" |
iro.specific.drdObject.layout.nodes[].left | String | Horizontal position from left edge in pixels | Numeric string | "395" |
iro.specific.drdObject.layout.nodes[].top | String | Vertical position from top edge in pixels | Numeric string | "24" |
iro.specific.drdObject.layout.nodes[].width | String | Width of the node box in pixels | Numeric string | "200" |
iro.specific.drdObject.layout.nodes[].height | String | Height of the node box in pixels | Numeric string | "222" |
iro.specific.drdObject.layout.nodes[].collapse | String | Whether the node is collapsed in the UI |