Creating Equivalent Links
You can create a single or multiple equivalent links between the specified downstream part or assembly and the specified upstream part or assembly. You can also create the equivalent links in the context of change (change task or change notice).
You can create the equivalent links by specifying the required attributes along with the upstream and downstream navigation criteria in the request body. If you do not specify the navigation criteria, the System Default filter is applied.
* 
If UpstreamPath and DownstreamPath are not specified, then the equivalent link is created between the specified upstream root part and the specified downstream root part.
Example: Creating Multiple Equivalent Links Between Upstream and Downstream Structures
This example shows you how to create two equivalent links with downstream navigation criteria ID and upstream navigation criteria ID specified in the request body. In this example, the value of the LinkType attribute is empty in each set. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/CreateEquivalenceLinks?$expand=EquivalenceLink
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"EquivalenceLinkAssociations": [
{
"UpstreamPath": "0152daed-0579-4698-91bb-a67e764b072d",
"DownstreamPath": "39a15ac0-658b-4b4d-aa35-91b79015bdf1",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560904')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560951')",
"Description": "ManufacturingLink1",
"IsConsumable": false,
"LinkType": "",
"DoCopyOver": false
},
{
"UpstreamPath": "8e064703-070b-4743-a033-3cb40fcf7a96",
"DownstreamPath": "2a2eb28e-7dfc-473d-b07d-68f5b6e6f7de",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560902')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560955')",
"Description": "ManufacturingLink2",
"IsConsumable": false,
"LinkType": "",
"DoCopyOver": false
}
],
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190097"
},
"DownstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190101"
}
}
The request creates two new equivalent links and returns information for each of the two links.
Example: Creating Multiple Alternate Equivalent Links Between Upstream and Downstream Structures
This example shows you how to create two alternate equivalent links along with propagating information from upstream to downstream with downstream navigation criteria ID and upstream navigation criteria ID specified in the request body. In this example, the LinkType attribute is specified as AlternateEquivalent and the DoCopyOver flag is specified as true in each set. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/CreateEquivalenceLinks?$expand=EquivalenceLink
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"EquivalenceLinkAssociations": [
{
"UpstreamPath": "0152daed-0579-4698-91bb-a67e764b072d",
"DownstreamPath": "39a15ac0-658b-4b4d-aa35-91b79015bdf1",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560908')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560957')",
"Description": "Alternate1",
"IsConsumable": false,
"LinkType": "AlternateEquivalent",
"DoCopyOver": true
},
{
"UpstreamPath": "8e064703-070b-4743-a033-3cb40fcf7a96",
"DownstreamPath": "2a2eb28e-7dfc-473d-b07d-68f5b6e6f7de",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560905')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560953')",
"Description": "Alternate2",
"IsConsumable": false,
"LinkType": "AlternateEquivalent",
"DoCopyOver": true
}
],
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190097"
},
"DownstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190101"
}
}
The request creates two new alternate equivalent links and returns information for each of the two links.
Example: Creating an Equivalent Link Between Upstream and Downstream Parts That Have No Structure
This example shows you how to create an equivalent link along with propagating information from upstream to downstream using downstream navigation criteria ID and upstream navigation criteria ID in the request body. In this example, both the specified upstream and downstream root parts do not have a structure under each of them. The value of the LinkType attribute is empty and the DoCopyOver flag is specified as true. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/CreateEquivalenceLinks?$expand=EquivalenceLink
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"EquivalenceLinkAssociations": [
{
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560901')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560958')",
"Description": "Description1",
"IsConsumable": false,
"LinkType": "",
"DoCopyOver": true
}
],
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190097"
},
"DownstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190101"
}
}
The request creates a new equivalent link between the specified upstream and downstream root parts and returns information for the link.
Example: Creating Multiple Equivalent Links Between Upstream and Downstream Structures in the Context of Change
This example shows you how to create two equivalent links in the context of change with downstream navigation criteria ID and upstream navigation criteria ID specified in the request body. In this example, the value of the LinkType attribute is empty in each set. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/CreateEquivalenceLinks?$expand=EquivalenceLink
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"EquivalenceLinkAssociations": [
{
"UpstreamPath": "0152daed-0579-4698-91bb-a67e764b072d",
"DownstreamPath": "39a15ac0-658b-4b4d-aa35-91b79015bdf1",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560904')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560951')",
"Description": "ManufacturingLink1",
"IsConsumable": false,
"LinkType": "",
"DoCopyOver": false
},
{
"UpstreamPath": "8e064703-070b-4743-a033-3cb40fcf7a96",
"DownstreamPath": "2a2eb28e-7dfc-473d-b07d-68f5b6e6f7de",
"UpstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560902')",
"DownstreamRoot@odata.bind": "Parts('OR:wt.part.WTPart:560955')",
"Description": "ManufacturingLink2",
"IsConsumable": false,
"LinkType": "",
"DoCopyOver": false
}
],
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190097"
},
"DownstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:190101"
},
"ChangeOid": "VR:wt.change2.WTChangeOrder2:488341"
}
The request creates two new equivalent links and adds the iterated downstream parts in the Resulting Objects table of the change object specified in ChangeOid.
Additionally, you can use the following expansion to get more information:
URI with Expand
POST Windchill/servlet/odata/BomTransformation/CreateEquivalenceLinks?$expand=DownstreamRoot,DownstreamPart,EquivalenceLink