I'm using the SOAP Tooling API to try and update a CustomField (posting to /services/Soap/T/29.0)

The method signature is SaveResult[] update(sObject[] sObjects) - and CustomField extends sObject so it shouldn't be a problem to send that down the wire. However I encounter:

INVALID_TYPE: Must send a concrete entity type.

Then I looked at my raw XML on the wire, I can't say I'm surprised! How is the Tooling API service expected to differentiate between the different supported objects, unless it's doing smarts on the Id?

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SessionHeader xmlns="urn:tooling.soap.sforce.com">
    <update xmlns="urn:tooling.soap.sforce.com">
        <FullName xsi:nil="true"/>
        <Metadata xsi:nil="true"/>
        <NamespacePrefix xsi:nil="true"/>
        <TableEnumOrId xsi:nil="true"/>

What tag/attribute am I missing that's necessary for it to perceive my CustomField as concrete?

1 Answer 1


the sObjects element should have an xsi:type attribute, e.g.

<sObjects xsi:type="CustomField">
  • bullseye! appreciate your guidance Simon Jan 13, 2014 at 19:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .