Get Available Fields for a Complex Entity
There is a set of entities called "complex" entities. Complex entities have nested attributes and are accessed with entity-specific web service operations, such as getPortfolioFields and getRequestFields.
The following is an example using getPortfolioFields to retrieve all available fields for a portfolio type (in the UI this is the Category). This operation requires the ID of the portfolio type/Category, which you can find on Admin/Setup/Portfolio Categories.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services">
<soapenv:Header/>
<soapenv:Body>
<ser:getPortfolioFields>
<ser:sessionId>d44a8562-6f46-45a9-8209-3b908d31d916</ser:sessionId>
<!--The Portfolio Type ID -->
<ser:portfolioTypeId>8408893</ser:portfolioTypeId>
</ser:getPortfolioFields>
</soapenv:Body>
</soapenv:Envelope>
Response (partial)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getPortfolioFieldsResponse xmlns:ns="http://services" xmlns:ax21="http://objects.services/xsd">
<ns:return xsi:type="ax21:ObjectMethod" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ax21:defaultValue xsi:nil="true"/>
<ax21:fieldLength>9</ax21:fieldLength>
<ax21:fieldSubTypeId>0</ax21:fieldSubTypeId>
<ax21:fieldTypeId>20</ax21:fieldTypeId>
<ax21:isRequired>false</ax21:isRequired>
<ax21:label>Portfolio:</ax21:label>
<ax21:method>parentTypeId</ax21:method>
<ax21:methodId>114134</ax21:methodId>
<ax21:onInsert>true</ax21:onInsert>
<ax21:onSelect>true</ax21:onSelect>
<ax21:onUpdate>false</ax21:onUpdate>
<ax21:sequence>0</ax21:sequence>
</ns:return>
<ns:return xsi:type="ax21:ObjectMethod" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ax21:defaultValue xsi:nil="true"/>
<ax21:fieldLength>12</ax21:fieldLength>
<ax21:fieldSubTypeId>0</ax21:fieldSubTypeId>
<ax21:fieldTypeId>31</ax21:fieldTypeId>
<ax21:isRequired>false</ax21:isRequired>
<ax21:label>Portfolio: Actual Cost - Direct</ax21:label>
<ax21:method>actualCostHere</ax21:method>
<ax21:methodId>114141</ax21:methodId>
<ax21:onInsert>false</ax21:onInsert>
<ax21:onSelect>true</ax21:onSelect>
<ax21:onUpdate>false</ax21:onUpdate>
<ax21:sequence>90</ax21:sequence>
</ns:return>
<ns:return xsi:type="ax21:ObjectMethod" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ax21:defaultValue xsi:nil="true"/>
<ax21:fieldLength>12</ax21:fieldLength>
<ax21:fieldSubTypeId>0</ax21:fieldSubTypeId>
<ax21:fieldTypeId>31</ax21:fieldTypeId>
<ax21:isRequired>false</ax21:isRequired>
<ax21:label>Portfolio: Actual Hours - Direct</ax21:label>
<ax21:method>actualHoursHere</ax21:method>
<ax21:methodId>114140</ax21:methodId>
<ax21:onInsert>false</ax21:onInsert>
<ax21:onSelect>true</ax21:onSelect>
<ax21:onUpdate>false</ax21:onUpdate>
<ax21:sequence>90</ax21:sequence>
</ns:return>