My saga continues. As the seasonal releases pass I'm beginning to suspect more and more that I'm the sole occupant of SOAP Tooling API town.
Previous encounters with the Tooling API include:
- The Coverage field from ApexCodeCoverageAggregate isn't returning coverage lines in Spring '16 (v37.0),
- .NET Integration with Salesforce Tooling API Spring 15 (v33.0), and
- Querying ApexExecutionOverlayResult via the Tooling API gives an UNKNOWN_EXCEPTION
Today's post was encountered when updating to the Winter`17 (v38.0) Tooling API.
.NET would failed to update from the new WSDL with the error message:
Custom tool error: Unable to import WebService/Schema. Unable to import binding 'SforceServiceBinding' from namespace 'urn:tooling.soap.sforce.com'. Unable to import operation 'create'. The datatype 'urn:metadata.tooling.soap.sforce.com:FTestGeneratedEntityComplexValueType' is missing.
The useful bit is hiding at the end - "The datatype 'urn:metadata.tooling.soap.sforce.com:FTestGeneratedEntityComplexValueType' is missing.".
v38.0 of the Tooling API WSDL contains two new and really odd complex types. FTestGeneratedEntityFtest
and FTestGeneratedEntityWithLongishNameFtest
. The first of these refers to the second via the namespace prefix mns, which is "urn:metadata.tooling.soap.sforce.com". That's fine, except they are both defined within the "urn:sobject.tooling.soap.sforce.com" namespace.
Commenting these extra complex types out of the WSDL seems to be sufficient to get it going again.
Raised as support case 14900660 for those who want to play along at home.
Update: Now a known issue The datatype urn:metadata.tooling.soap.sforce.com:FTestGeneratedEntityComplexValueType is missing
Bonus Round!
The Tooling API now includes the dreaded QuickActionLayout complex type and the corresponding generated quickActionLayoutColumns multidimensional array. As such, the generated C# class will need the same fix that the Metadata API does.
Double Bonus Round!
The describeGlobal method on the Tooling API is returning 122 new sObjects in the autogen__
namespace. They all have the label "Metadata Facade Template" and the keyPrefix "0Dw". If you attempt to do a describeSObject or describeSObjects API call for any of these autogen__ types you get a GACK response.
Raised as support case 14909168.