Client Pull

Client pull is the process of pulling event notification data in batches via the SOAP API. These batches can contain up to 10k events in each batch request. Data is returned as a mass base64 encoded string and will need to be modified and parsed before it can be used. Please see bus_facade_eventNotification for info on how to retrieve these.

XML Example

Once a session has been started using the login process on the bus_facade_context class, make the following request to fetch a batch of pending event data. Request

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:localhost-paint" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:handleRequest>
      <!-- The current session identifier -->
      <contextId xsi:type="xsd:string">P-JMDAF9HdkwjRCevNVPathRy</contextId>
      <!-- class to call the process off -->
      <className xsi:type="xsd:string">bus_facade_eventNotification</className>
      <!-- Process to call on the className -->
      <processName xsi:type="xsd:string">getBatch</processName>
      <entityData xsi:nil="true"/>
      <!-- Parameters for the process, not stored on the entity -->
      <processData xsi:type="ns2:Map">
        <item>
          <!-- The event types to retireve in the response -->
          <key xsi:type="xsd:string">notificationTypes</key>
          <value xsi:type="xsd:string">OPEN,CLICK,DELIVERY</value>
        </item>
        <item>
          <!-- The amount of events to retrieve -->
          <key xsi:type="xsd:string">maxNotifications</key>
          <value xsi:type="xsd:int">1000</value>
        </item>
        <item>
          <!-- Indicates whether to mark this batch as retrieved Y or N -->
          <key xsi:type="xsd:string">markAsReadInd</key>
          <value xsi:type="xsd:string">N</value>
        </item>
      </processData>
    </ns1:handleRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Response

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:localhost-paint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:handleRequestResponse>
      <Result xsi:type="ns2:Map">
        <item>
          <!-- Indicates if the request was successfully validated --->
          <key xsi:type="xsd:string">result</key>
          <value xsi:type="xsd:string">success</value>
        </item>
        <item>
          <!-- Any data returned by the process -->
          <key xsi:type="xsd:string">resultData</key>
          <value xsi:type="ns2:Map">
            <item>
              <!-- representation of the returned entity / search bean -->
              <key xsi:type="xsd:string">bus_entity_eventNotificationBatch</key>
              <value xsi:type="ns2:Map">
                <item>
                  <!-- The amount of events returned -->
                  <key xsi:type="xsd:string">eventCount</key>
                  <value xsi:type="xsd:int">61</value>
                </item>
                <item>
                  <!-- The construction of each event -->
                  <key xsi:type="xsd:string">eventMeta</key>
                  <value xsi:type="ns2:Map">
                    <item>
                      <!-- name of the event -->
                      <key xsi:type="xsd:string">OPEN</key>
                      <!-- the headers for each of the comma seperated values in the event strings for each type -->
                      <value xsi:type="xsd:string">type,email,messageName,deliveryDate</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">CLICK</key>
                      <value xsi:type="xsd:string">type,email,Message Name,Delivery Date,Click Url,Click Date</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">DELIVERY</key>
                      <value xsi:type="xsd:string">type,subject,User,Delivery Start Date,Delivery Complete Date,Message Name,List Names,Emails Sent / Credits Used</value>
                    </item>
                  </value>
                </item>
                <item>
                  <!-- Base64 encoded string of the event data -->
                  <key xsi:type="xsd:string">eventData</key>
                  <value xsi:type="xsd:string"><!-- omitted for clarity as large string --></value>
                </item>
                <item>
                  <key xsi:type="xsd:string">beanId</key>
                  <value xsi:type="xsd:string">9a385d703c84d65a3b1238cbcd6fd426</value>
                </item>
                <item>
                  <key xsi:type="xsd:string">beanName</key>
                  <value xsi:type="xsd:string">bus_entity_eventNotificationBatch</value>
                </item>
                <item>
                  <key xsi:type="xsd:string">canHaveChildBeansInd</key>
                  <value xsi:type="xsd:string">Y</value>
                </item>
                <item>
                  <key xsi:type="xsd:string">parentBeanId</key>
                  <value xsi:nil="true"/>
                </item>
                <item>
                  <key xsi:type="xsd:string">db</key>
                  <value xsi:nil="true"/>
                </item>
                <item>
                  <key xsi:type="xsd:string">defaultFieldAccess</key>
                  <value xsi:type="xsd:string">readwrite</value>
                </item>
                <item>
                  <key xsi:type="xsd:string">fieldAccess</key>
                  <value xsi:type="ns2:Map">
                    <item>
                      <key xsi:type="xsd:string">beanId</key>
                      <value xsi:type="xsd:string">readwrite</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">beanName</key>
                      <value xsi:type="xsd:string">read</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">eventCount</key>
                      <value xsi:type="xsd:string">read</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">eventMeta</key>
                      <value xsi:type="xsd:string">read</value>
                    </item>
                    <item>
                      <key xsi:type="xsd:string">eventData</key>
                      <value xsi:type="xsd:string">read</value>
                    </item>
                  </value>
                </item>
              </value>
            </item>
          </value>
        </item>
      </Result>
    </ns1:handleRequestResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Here are examples of the data that can be retrieved and the format it takes:
Trigger Event Meta Event Data
DELIVERYSTART type, subject, User, Delivery Start Date, Message Name, List Names, Emails Sent / Credits Used

REVMSVZFUllTVEFSVCxTdW1tZXIgaXMgbmVhcmx5IG92ZXIhLHRlc3Quc3lzLDE0MTE0NjcxNzgsQXVnLTIwMTQtTmV3c2xldHRlciwid2Vic2l0ZV9zaWdudXBzLGZib29rX3NpZ251cHMiLDEyMTU0NQ==

Decoded:
DELIVERYSTART,Summer is nearly over!,test.sys,1411467178,Aug-2014-Newsletter,"website_signups,fbook_signups",121545

DELIVERY type, subject, User, Delivery Start Date, Delivery Complete Date, Message Name, List Names, Emails Sent / Credits Used

REVMSVZFUlksU3VtbWVyIGlzIG5lYXJseSBvdmVyISx0ZXN0LnN5cywxNDExNDY3MTc4LDE0MTE0NjgxMjAsQXVnLTIwMTQtTmV3c2xldHRlciwid2Vic2l0ZV9zaWdudXBzLGZib29rX3NpZ251cHMiLDEyMTU0NQ==

Decoded:
DELIVERY,Summer is nearly over!,test.sys,1411467178,1411468229,Aug-2014-Newsletter,"website_signups,fbook_signups",121545

Custom Data for the recipient events can be requested, by adding the customData parameter to the XML request, with comma seperated values indicating the names of the fields - in the below real world data firstName and lastName have been used.
OPEN type, email, messageName, deliveryDate, firstName, lastName

T1BFTix0ZXN0QHRlc3QuY29tLEF1Zy0yMDE0LU5ld3NsZXR0ZXIsMTQxMTQ2ODIyOSxNYXR0LEJhcmJlcg==

Decoded:
OPEN,test@test.com,Aug-2014-Newsletter,1411468229,Matt,Barber

CLICK type,email,Message Name, Delivery Date, Click Url, Click Date, firstName, lastName

Q0xJQ0ssdGVzdEB0ZXN0LmNvbSxBdWctMjAxNC1OZXdzbGV0dGVyLDE0MTE0NjgyMjksaHR0cDovL3d3dy5wdXJlMzYwLmNvbSwxNDExNDY4MjI5LE1hdHQsQmFyYmVy

Decoded:
CLICK,test@test.com,Aug-2014-Newsletter,1411468229,http://www.pure360.com,1411468229,Matt,Barber

BOUNCE
BLOCKED
OPTIN
OPTOUT
SOFTBOUNCE
type, email, messageName, deliveryData, firstName, lastName

T1BUT1VULHRlc3RAdGVzdDIuY29tLEF1Zy0yMDE0LU5ld3NsZXR0ZXIsMTQxMTQ2ODI0NSxNYXR0LEJhcmJlcg==

Decoded:
OPTOUT,test@test2.com,Aug-2014-Newsletter,1411468245,Matt,Barber

SMSFAILED
SMSOPTOUT
type, Event Date, mobile, messageName, deliveryDate, Delivery ID, firstName, lastName

U01TT1BUT1VULDE0MTE0NjgyNjgsNDQ3ODc0NTQyMTIsU01TLVRFU1QtTVNHLDE0MTE0NjgxMDAsTWF0dCxCYXJiZXI=

Decoded:
SMSOPTOUT,1411468268,44787454212,SMS-TEST-MSG,1411468100,Matt,Barber