GetExistingDownstreamObjects
The GetExistingDownstreamObjects action returns details about existing downstream equivalent objects for the upstream parts before transformation. It also returns details about whether the returned downstream equivalent objects are consumed or not and whether they are allowed to be revised or not upon transformation.
You can retrieve existing downstream objects for transformation actions such as NEW_BRANCH, NEW_PART, ADD_SAME, ALTERNATE, or SPLIT.
Transformation actions are actions that you intend to perform after you execute this action.
See the Adding Parts with Associative BOM Links topic in the Windchill Help Center, for more information.
The attributes in the request payload of the GetExistingDownstreamObjects action are described in the following table:
Request Attribute
Description
Required
DownstreamRoot
OID of the downstream equivalent root part.
Optional
DownstreamPathId
Path ID of the downstream equivalent part from the specified downstream root part. It provides information for executing following actions for the transformation: Paste as New Branch, Assemble As New Branch, Paste as New Part, or Assemble As New Branch.
Optional
DownstreamNavigationCriteria
Inline or specific navigation criteria applied in the downstream.
Yes
View
Attribute in the DownstreamBranchAttributes complex type to specify the downstream view to be used in the transformation.
Yes
BomType
Attribute in the DownstreamBranchAttributes complex type to specify the type of downstream BOM being used.
Optional
AlternateBOM
Attribute in the DownstreamBranchAttributes complex type to specify an alternate BOM for the transformation.
Optional
UpstreamRoot
OID of the upstream root part.
Optional
UpstreamNavigationCriteria
Inline or specific navigation criteria applied in the upstream.
Yes
TransformationActionType
Enum type attribute for the transformation action that you intend to perform after executing the GetExistingDownstreamObjects action.
The attribute supports following enum values: NEW_BRANCH, NEW_PART, ADD_SAME, ALTERNATE, SPLIT.
* 
See the EDM of the domain that is available at the metadata URL Windchill/servlet/odata/BomTransformation/$metadata for details.
Yes
UpstreamPart
Attribute in the ExistingDownstreamObjectQueryParams collection to specify the OID of the upstream part for which you want to get the existing downstream object.
* 
ExistingDownstreamObjectQueryParams is a collection of single or multiple upstream parts.
Yes
UpstreamPathId
Attribute in the ExistingDownstreamObjectQueryParams collection to specify the path ID of the specified upstream part from its root or parent part for which you want to get the existing downstream object.
* 
For multiple upstream parts, the path ID specified for each upstream part corresponds to its path from the same upstream root part specified in the UpstreamRoot attribute.
When a specified upstream part has multiple occurrences in a BOM structure, you can specify UpstreamPathId for the exact part occurrence for which you want to get the existing downstream object.
Optional
Number
Attribute in the ExistingDownstreamObjectQueryParams collection to specify the identification number of the specified upstream part, for which you want to get the existing downstream object, when transformation action type is specified as NEW_PART.
* 
*Number is a required attribute only when the Number field in the BOM Transformer UI in Windchill is editable.
Yes*
The request URI with expand returns all the information for each equivalent link between a specified upstream part and its existing downstream object. Additionally, the request returns the ID and Identity information for each of the following objects that are returned by the DownstreamObjects entity:
UpstreamPart– specified upstream part
DownstreamPart– existing downstream equivalent object for the specified upstream part
EquivalenceLink– equivalence link
POST /Windchill/servlet/odata/BomTransformation/GetExistingDownstreamObjects?$expand=DownstreamObjects($expand=UpstreamPart($select=ID,Identity),DownstreamPart($select=ID,Identity),EquivalenceLink($select=ID,Annotations,DownstreamContext,UpstreamContext))
For example, the response to the request URI is an follows:
{
"@odata.context": "http://<host>:<port>/Windchill/servlet/odata/v1/BomTransformation/$metadata#Collection(PTC.BomTransformation.ExistingDownstreamObjectsListItem)",
"value": [
{
"DownstreamBranchAttributes": {
"View": "Manufacturing",
"BOMType": null,
"AlternateBOM": null
},
"UpstreamPartId": "OR:wt.part.WTPart:213274",
"UpstreamPathId": "2bbb6e8b-d89f-4e05-96aa-bb7bcc1e7bf0",
"IsConsumed": false,
"IsReviseAllowed": false,
"DownstreamObjects": [
{
"ID": "OR:wt.associativity.EquivalenceLink:213440",
"UpstreamPartId": "OR:wt.part.WTPart:213274",
"DownstreamPartId": "OR:wt.part.WTPart:213408",
"EquivalenceLinkId": "OR:wt.associativity.EquivalenceLink:213440",
"IsEquivalenceLinkOutdated": false,
"UpstreamPart": {
"ID": "OR:wt.part.WTPart:213274",
"Identity": "Part - 0000000126, s1, A.2 (Design)"
},
"DownstreamPart": {
"ID": "OR:wt.part.WTPart:213408",
"Identity": "Part - 0000000126, s1, A.1 (Manufacturing)"
},
"EquivalenceLink": {
"ID": "OR:wt.associativity.EquivalenceLink:213440",
"Annotations": "0",
"DownstreamContext": "Manufacturing",
"UpstreamContext": "Design"
}
}
]
}
]
}
The attributes in the response for the GetExistingDownstreamObjects action are described in the following table:
Response Attribute
Description
IsReviseAllowed
Flag that indicates whether revision of the existing downstream objects is allowed or not for the transformation.
IsConsumed
Flag that returns whether the existing downstream objects are consumed or not.
UpstreamPathId
Returns the ID specified in the request for the upstream path for which you want to get the existing downstream object.
View
Attribute in the DownstreamBranchAttributes complex type that returns the downstream view specified in the request.
BomType
Attribute in the DownstreamBranchAttributes complex type that returns the type of downstream BOM specified in the request. When it is not specified in the input, it returns NULL.
AlternateBOM
Attribute in the DownstreamBranchAttributes complex type that returns the alternate BOM specified in the request. When it is not specified in the input, it returns NULL.
ID
Attribute in the DownstreamObjects collection that returns the ID of the equivalence link between the upstream object specified in the request and the existing downstream object.
* 
DownstreamObjects is a collection of single or multiple existing downstream equivalent objects.
UpstreamPartId
Attribute in the DownstreamObjects collection that returns the ID of the upstream part specified in the request.
DownstreamPartId
Attribute in the DownstreamObjects collection that returns the ID of the existing downstream equivalent object.
EquivalenceLinkId
Attribute in the DownstreamObjects collection that returns the ID of the equivalence link between the upstream part specified in the request and the existing downstream object.
IsEquivalenceLinkOutdated
Flag in the DownstreamObjects collection that indicates whether the equivalence link between the upstream part specified in the request and the existing downstream equivalent object is outdated or not.
UpstreamPart
Attribute in the DownstreamObjects collection that returns the information and attributes of each upstream part returned in the DownstreamObjects entity.
DownstreamPart
Attribute in the DownstreamObjects collection that returns the information and attributes of each existing downstream object returned in the DownstreamObjects entity.
EquivalenceLink
Attribute in the DownstreamObjects collection that returns the information and attributes of each equivalence link returned in the DownstreamObjects entity.