Search code examples
apisalesforceintegration

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

  • 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.