SmartXchange

The SmartXchange proxy is a service used the same way as the XmlEngine servlet but is a single connection point enabling applications to reach multiple SmartOffice servers. SmartXchange also provides Ebix administrative control to provide partners with authenticated access to SmartOffice servers for their services. Requests are made through XML requests, and a response is returned.

Sending requests through SmartXchange is similar to sending requests directly to XML Engine. The main difference is that your XML Engine requests must be enclosed within special SmartXchange tags, as described in the following sections.

To test SmartXchange proxy requests, you can use the TestBed.

Note that your application must use Transport Layer Security (TLS) v1.2 or later to communicate with SmartXchange.

The following diagram illustrates the flow of data between external services, SmartXchange, and SmartOffice servers.

SmartXchange.png

SmartXchange Proxy Requests/Responses

To send SmartXchange proxy requests, you must first understand how to send requests to the XmlEngine API. SmartXchange requests are essentially XmlEngine requests enclosed in special proxy tags.

For example:
<dxoproxy-request version='1.0.1'>
  <transaction action='adapter.xmlEngine'>
    <data>
      <DXOUserName>DXO_UserName</DXOUserName>
      <siData>
        <!-- XML Engine request begins here -->
        <request version='1.0'>
          <header>
            <office/>
            <user/>
            <password/>
          </header>
        <!-- Remainder of XML Engine request goes here -->
      </siData>
    </data>
  </transaction>
</dxoproxy-request>

After submitting the request, you receive a response just as in XML Engine. In the example, note the following:
  • SmartXchange tags: The XML Engine request is enclosed within the siData tags.
  • Request header information: In the XML Engine request, the <header> element contains empty <office>, <user> and <password> elements. In SmartXchange requests, these elements are normally left empty because the <DXOUserName> element passes information about the user instead. However, even though these elements are empty, they must be included.
  • DXOUsername: The <DXOUserName> element is required. It passes the user information to the proxy server. For more information, refer to the FAQs section of VendorPartnership.
As part of your request, you must send your SmartOffice partner ID information (adapter name, user name and password) provided to you by Ebix. For example, if sending your request using an HTML form, include this information as hidden fields using the following format, inserting your partner ID information in the value attributes:
<input type="hidden" id="dxoAdapterName" NAME="adpName" value=""/>
<input type="hidden" id="dxoUserName" NAME="user" value=""/>
<input type="hidden" id="dxoPassword" NAME="password" value=""/>

Click the link below to see an example of an HTML form containing these hidden fields and showing how to post a request to SmartXchange:

SampleSmartXchangePostHTML

SmartXchange URLs

To determine the correct URL to which you will send SmartXchange requests, refer to the server list below. Note: Some SmartOffice enterprise customers are on segregated hosting environments. If you are working with a customer that is not on any of the following servers, please contact Ebix at sisupport@ebix.com for additional information.

Production US SmartXchange = https://dxo20.ez-data.com/dxoapp/proxy Production Canada SmartXchange = https://smartxchange-can.ez-data.com/smartxchangeapp/proxy SmartXchange QA = https://dxo20qa.ez-data.com/dxoapp/proxy Sales Demo SmartXchange = https://stpdemo.ez-data.com/stpdxo/proxy

SmartXchange Adapter Service

There is a second "Adapter" web service running on SmartXchange used for administering services and user subscriptions running over the SmartXchange platform (Examples include https://dxo20qa.ez-data.com/dxoapp/adapter or https://dxo20.ezdata.com/dxoapp/adapter). All requests to this service need to have the Partner adpName, user, and password inputs passed in the header, just like a Proxy request.

GetAdptSiteService

This action allows partners to retrieve the name of each service and find out which SmartOffice sites have their service enabled. To make this request, the partner credentials are the only input needed.

Request XML
<dxo-request version="1.0.1">
    <transaction action="adapter.getadptsiteservice">
        <data>
            <AdapterName>SmartTicket</AdapterName>
            <UserName>smartticket</UserName>
            <Password>abc123</Password>
        </data>
    </transaction>
</dxo-request>

Reponse XML
<dxo-response version='1.0.1' time='1359418700777' id=''>
    <transaction id='' action='adapter.getadptsiteservice' requestId='6393247'>
        <UI/>
        <data>
            <response>
                <Service name="SmartTicket">
                    <Site name="EVAL6"/>
                </Service>
                <Service name="eSignature">
                    <Site name="EVAL6"/>
                </Service>
            </response>
        </data>
    </transaction>
</dxo-response>

GetAdptUser

This action allows partners to retrieve the DXOUserName value of every user that has subscribed to their service. This request can only be done for a single site and service per transaction.

Request XML
<dxo-request version="1.0.1">
    <transaction action="adapter.getadptuser">
        <data>
            <AdapterName>SmartTicket</AdapterName>
            <UserName>smartticket</UserName>
            <Password>abc123</Password>
            <Service>SmartTicket</Service>
            <Site>EVAL6</Site>
        </data>
    </transaction>
</dxo-request>

Response XML
<dxo-response version='1.0.1' time='1359418915518' id=''>
    <transaction id='' action='adapter.getadptuser' requestId='6393248'>
        <UI/>
        <data>
            <response>
                <Service name="SmartTicket">
                    <Site name="EVAL6">
                        <UserName>EVAL6_Ebixdemo_pdicicco</UserName>
                        <UserName>EVAL6_Ebixdemo_Phil</UserName>
                        <UserName>EVAL6_eval60_california_carolyn</UserName>
                        <UserName>EVAL6_CulverCity_Phil</UserName>
                        <UserName>EVAL6_Dublin_Daniel</UserName>
                        <UserName>EVAL6_Ebixdemo_aschitea</UserName>
                        <UserName>EVAL6_Ebixdemo_mnevins</UserName>
                        <UserName>EVAL6_CulverCity_Daniel</UserName>
                        <UserName>EVAL6_Hermosa_Daniel</UserName>
                        <UserName>EVAL6_Ebixdemo_vtroffer</UserName>
                        <UserName>EVAL6_Ebixdemo_Admin</UserName>
                        <UserName>EVAL6_Ebixdemo_eburgess</UserName>
                    </Site>
                </Service>
            </response>
        </data>
    </transaction>
</dxo-response>

GetSiteDetails

This action allows partners to retrieve the SmartOffice URL and XmlEngine URL for a particular SmartOffice site.

Request XML
<dxo-request version="1.0.1">
    <transaction action="site.getsitedetails">
        <data>
            <SiteName>PREPRODNEW</SiteName>
        </data>
    </transaction>
</dxo-request>

Response XML
<dxo-response version="1.0.1" time="1549308114644" DXOUserName="Header UserName Not Found" id="">
    <transaction DXOUserName="dxoadmin" id="" action="site.getsitedetails" requestId="12176672">
        <UI /> 
        <data>
            <response>
                <SOUrl>https://uat.smartofficeonline.com/pprodnew</SOUrl> 
                <SIUrl>https://uat.smartofficeonline.com/pprodnew/xmlengine</SIUrl> 
                <SiteId>275017</SiteId> 
            </response>
        </data>
    </transaction>
</dxo-response>

GetSODetails

This action allows partners to retrieve the UserID and UserName properties for a SmartOffice user account using the DXOUserName value.

Request XML
<dxo-request version='1.0.1'>
    <transaction action='user.getSODetails'>
        <data>
            <DXOUserName>PREPRODNEW_OFFICE_jdoe</DXOUserName>
        </data>
    </transaction>
</dxo-request>

Response XML
<dxo-response version="1.0.1" time="1506621834687" id="">
    <transaction DXOUserName="dxoadmin" id="" action="user.getSODetails" requestId="11718653">
        <data>
            <response>
                <ExtLink>PREPRODNEW_OFFICE_User</ExtLink> 
                <SiteName>PREPRODNEW</SiteName> 
                <UserId>User.1.1</UserId> 
                <OfficeName>OFFICE</OfficeName> 
                <UserName>jdoe</UserName> 
            </response>
        </data>
    </transaction>
</dxo-response>

Validate

This action allows partners to determine whether a specific user has their license enabled.

Request XML
<dxo-request version="1.0.1">
  <transaction action="subscription.validate">
    <data>
      <DXOUserName>EVAL6_SDC_Bryan_Eshelbrenner</DXOUserName>
      <ServiceName>iPhone</ServiceName>
    </data>
  </transaction>
</dxo-request>



-- Main.dustin - 24 Oct 2012
Topic revision: 11 Dec 2020, DinosLambropoulos
 

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback