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