Monday, October 17, 2016

Salesforce Tooling API Winter '17 (v38.0)

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:

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.