'Merge records and Restore Deleted records for Salesforce using HTTP or API call from Postman?

I am trying to see if I can make a Merge Record call or Restore Deleted Records using an API call (read REST or SOAP call). Tried researching around it but most examples need custom code written in Java or .NET.

I am trying to see if it can be done using HTTP Request itself without custom code. In worst case, Apex Web Services related calls can be written I suppose but I am trying to find a way using HTTP Request itself.

I have gone through API documentation but my doubt persists on how to implement. In Salesforce API I couldnt find a suitable call around this.

Thanks in advance.



Solution 1:[1]

SOAP API has the merge operation. Import the WSDL to your project. Call login first, get the serverUrl and sessionId, then:

Merge

Request

POST https://{redacted}.my.salesforce.com/services/Soap/u/52.0/{redacted} HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 882
Host: {redacted}
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.5 (Java/12.0.1)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:partner.soap.sforce.com" xmlns:urn1="urn:sobject.partner.soap.sforce.com">
   <soapenv:Header>
      <urn:SessionHeader>
         <urn:sessionId>00D{redacted}</urn:sessionId>
      </urn:SessionHeader>
   </soapenv:Header>
   <soapenv:Body>
      <urn:merge>
         <urn:request>
            <urn:masterRecord>
               <urn1:type>Lead</urn1:type>
               <urn1:Id>00Q3O000003aFYtUAM</urn1:Id>
            </urn:masterRecord>
            <urn:recordToMergeIds>00Q3O000003aFYuUAM</urn:recordToMergeIds>
             <urn:recordToMergeIds>00Q3O000003aFYyUAM</urn:recordToMergeIds>
         </urn:request>
      </urn:merge>
   </soapenv:Body>
</soapenv:Envelope>

Response

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com">
   <soapenv:Header>
      <LimitInfoHeader>
         <limitInfo>
            <current>65</current>
            <limit>5000000</limit>
            <type>API REQUESTS</type>
         </limitInfo>
      </LimitInfoHeader>
   </soapenv:Header>
   <soapenv:Body>
      <mergeResponse>
         <result>
            <id>00Q3O000003aFYtUAM</id>
            <mergedRecordIds>00Q3O000003aFYuUAM</mergedRecordIds>
            <mergedRecordIds>00Q3O000003aFYyUAM</mergedRecordIds>
            <success>true</success>
         </result>
      </mergeResponse>
   </soapenv:Body>
</soapenv:Envelope>

Undelete is there too.

POST https://{redacted}.my.salesforce.com/services/Soap/u/52.0/{redacted} HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 568
Host: {redacted}
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.5 (Java/12.0.1)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:partner.soap.sforce.com">
   <soapenv:Header>
      <urn:SessionHeader>
         <urn:sessionId>00D{redacted}</urn:sessionId>
      </urn:SessionHeader>
   </soapenv:Header>
   <soapenv:Body>
      <urn:undelete>
         <urn:ids>a141q000001RfNeAAK</urn:ids>
         <urn:ids>a141q000001RfOVAA0</urn:ids>
      </urn:undelete>
   </soapenv:Body>
</soapenv:Envelope>

Don't think REST API has matching operations.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1