Windchill REST Services > Windchill REST Services Domain Capabilities > Examples for Basic REST Operations > Examples for the PTC BOM Transformation Domain > Retrieving Existing Downstream Objects
  
Retrieving Existing Downstream Objects
You can retrieve details about existing downstream equivalent objects by specifying the upstream parts, transformation action, inline or specific upstream and downstream navigation criteria, and other required attributes in the request body.
Transformation actions are actions that you intend to perform after you execute the GetExistingDownstreamObjects action.
You can retrieve existing downstream objects for any of the TransformationActionType such as NEW_BRANCH, NEW_PART, ADD_SAME, ALTERNATE, or SPLIT, specified in the request body.
See the EDM of the domain available at the metadata URL, Windchill/servlet/odata/BomTransformation/$metadata for details.
* 
You can use the following existing API to get information such as PathID of a part for providing it as an input to the GetExistingDownstreamObjects action:
POST /Windchill/servlet/odata/BomTransformation/XBOMParts('<RootPartOID>')/PTC.BomTransformation.GetManufacturingBOM?$expand=Components($levels=max)
Example: Retrieving Information for Existing Downstream Objects for NEW_BRANCH Transformation Action
This example shows you how to retrieve existing downstream objects for the specified upstream part for the NEW_BRANCH transformation action by using an inline downstream navigation criteria and upstream navigation criteria OID.
Use the $expand=DownstreamObjects,UpstreamPart expansion with the GetExistingDownstreamObjects action to get information about the specified upstream part and the equivalent link between the upstream part and its existing downstream equivalent object. Use the following POST URI with the request body.
URI
POST /Windchill/servlet/odata/BomTransformation/GetExistingDownstreamObjects?$expand=DownstreamObjects,UpstreamPart
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DownstreamBranchAttributes": {
"View": "Manufacturing"
},
"ExistingDownstreamObjectQueryParams": [
{
"UpstreamPart@odata.bind": "Parts('OR:wt.part.WTPart:213274')"
}
],
"TransformationActionType": "NEW_BRANCH",
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:192828"
},
"DownstreamNavigationCriteria": {
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplicationName": null,
"ApplyToTopLevelObject": false,
"Centricity": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"WorkingIncluded": true,
"View": "Manufacturing",
"LifeCycleState": null,
"Variation1": null,
"Variation2": null
}
],
"Filters": [],
"HideUnresolvedDependents": false,
"UseDefaultForUnresolved": false }
}
Example: Retrieving Information for Existing Downstream Objects for NEW_PART Transformation Action
This example shows you how to retrieve existing downstream objects for the specified upstream part for the NEW_PART transformation action by using downstream navigation criteria OID and upstream navigation criteria OID. This example shows you how to retrieve existing downstream object for an upstream part with the upstream path ID and the identification number specified in the request body.
Use the $expand=DownstreamObjects,UpstreamPart expansion with the action GetExistingDownstreamObjects to get information about the specified upstream part and the equivalent link between the upstream part and its existing downstream equivalent object. Use the following POST URI with the request body.
URI
POST /Windchill/servlet/odata/BomTransformation/GetExistingDownstreamObjects?$expand=DownstreamObjects,UpstreamPart
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DownstreamBranchAttributes": {
"View": "Manufacturing",
"BOMType": null,
"AlternateBOM": "001"
},
"ExistingDownstreamObjectQueryParams": [
{
"Number": "OUTSIDE_TREE",
"UpstreamPart@odata.bind": "Parts('OR:wt.part.WTPart:213274')",
"UpstreamPathId": "2bbb6e8b-d89f-4e05-96aa-bb7bcc1e7bf0"
}
],
"TransformationActionType": "NEW_PART",
"UpstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:192828"
},
"DownstreamNavigationCriteria": {
"ID": "OR:wt.filter.NavigationCriteria:192832"
}
}
The GetExistingDownstreamObjects action with the $expand=DownstreamObjects($expand=UpstreamPart,DownstreamPart,EquivalenceLink) expansion, additionally returns information about all the existing downstream equivalent parts and equivalent links that are returned by the DownstreamObjects entity.
URI with Expand
POST /Windchill/servlet/odata/BomTransformation/GetExistingDownstreamObjects?$expand= DownstreamObjects($expand=UpstreamPart,DownstreamPart,EquivalenceLink)
The URI below returns all the information for the equivalent links between the specified upstream parts and their existing downstream equivalent objects. Additionally, the URI returns the ID and Identity information for each specified upstream part, its existing downstream equivalent object, and equivalence link returned by the DownstreamObjects entity.
URI with Expand
POST /Windchill/servlet/odata/BomTransformation/GetExistingDownstreamObjects?$expand=DownstreamObjects($expand=UpstreamPart($select=ID,Identity),DownstreamPart($select=ID,Identity),EquivalenceLink($select=ID,Annotations,DownstreamContext,UpstreamContext))