Retrieving or Querying File Attachments

When performing a query operation to retrieve attachment content, the response must contain Base64 encoded content. This is true even if the attached file is a simple text file. The attachment content must therefore be decoded back from Base64 to the binary or text format in all cases.

No content reuse is supported when performing a query. Even though the same file has been attached to multiple records, the response always generates unique ContentId values and the <Attachment> elements contain the attachment content.

The following SOAP response illustrates a query response for an attachment child:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/
2001/XMLSchema">
<SOAP-ENV:Body>
<ns:AccountWS_AccountQueryPage_Output mlns:ns="urn:crmondemand/ws/account/10/
2004">
<ns:LastPage>true</ns:LastPage>
<ListOfAccount xmlns="urn:/crmondemand/xml/account">
<Account>
   <AccountId>1QA2-L9DZG</AccountId>
   <Description>Account with attachment</Description>
   <Location>Toronto</Location>
   <AccountName>Test Account</AccountName>
   <ListOfAttachment>
      <Attachment>
         <DisplayFileName>My sales analysis</DisplayFileName>
         <FileNameOrURL>Analysis</FileNameOrURL>
         <FileExtension>xml</FileExtension>
         <AttachmentTag>FILE</AttachmentTag>
         <Description></Description>
         <Attachment AttachmentIsTextData="false" Extension="xml" ContentId="1QA2-RTX3">PD94bWwgdiVVRGLTgiPz48P1NpZWJlbC1Qcm9wZXJ0eS1TZXQgRXNjYXBl
         <Base 64 encoded attachment data ........>
         </Attachment>      
      </Attachment>
   </ListOfAttachment>
</Account>
</ListOfAccount>
</ns:AccountWS_AccountQueryPage_Output>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

There are two additional attributes of the <Attachment> element:

  • EndOfData. Indicates that the data is the complete content. Always true.

  • TimedOut. Indicates whether a time-out occurred when obtaining the data. Always false.