XML Customer Service
The XML Customer Service web service provides several web methods for interacting with customers.
For SOLO Server Shared URL, this can be reached at https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx
- When using SOLO Server Shared / Custom URL, replace secure with your custom subdomain.
- When using SOLO Server Dedicated URL, replace secure.softwarekey.com with your domain.
- When using SOLO Server Self-Hosted, replace secure.softwarekey.com/solo in the URL with the path to your SOLO Server instance.
Please contact us if you need assistance determining the correct URL.
All web methods in this service use xml for both input and output. This allows new input and output values to be added without breaking backwards compatibility with existing implementations using the service.
If your integration with the web service validates the xml returned by the web methods, be sure to account for the possibility of new elements being returned in the result. This can easily be done by applying an xslt transform to the result xml to filter out any new fields and then validating the transformed xml.
The XmlCustomerService.asmx web service offers the following web methods:
GetCustomerDataByAuthor/GetCustomerDataByAuthorS
Used to retrieve author specific customer contact details as well as license information for a customer.
This method requires passing in a SOLO Server AuthorID/API UserID/API UserPassword, but the user does not need any specific permissions.
GetCustomerDataByAuthor accepts an XmlDocument input parameter, while GetCustomerDataByAuthorS accepts a string input parameter for the xml so that it is accessible via http post.
Since this web method requires providing an AuthorID, API UserID, and API User Password as inputs, it should be used for internal applications only and should not be called by client applications distributed to customers. See web service security for details.
If you are currently using regular UserID and UserPassword credentials, you will need to update your application(s) to use an API UserID and API UserPassword instead, as support for the regular User ID and Password will be removed in the future.
Input
The values of these elements are as follows:
Parameter | Data Type | Required/Optional | Description |
---|---|---|---|
AuthorID | int | Required | SOLO Server Author ID. |
UserID | string | Required | The API User ID of the user from the given author using the service (previously the regular User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
UserPassword | string | Required | The API User Password for API User ID (previously the regular User Password for the User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
CustomerID | int | Optional - Either CustomerID or LicenseID must be provided | The Customer ID to retrieve data for. |
LicenseID | int | Optional - Either CustomerID or LicenseID must be provided | The LicenseID to retrieve customer data for. |
The input xml is in the following format:
- XML
- <GetCustomerDataByAuthor xmlns="">
<AuthorID></AuthorID></GetCustomerDataByAuthor>
<UserID></UserID>
<UserPassword></UserPassword>
<CustomerID></CustomerID>
<LicenseID></LicenseID>
Output
The result is returned as XML in the following format:
- XML
- <?xml version="1.0" encoding="utf-8"?>
<CustomerData><Customer><CustomerID></CustomerID></Customer>
<CompanyName></CompanyName>
<FirstName></FirstName>
<LastName></LastName>
<Address1></Address1>
<Address2></Address2>
<City></City>
<StateProvince></StateProvince>
<PostalCode></PostalCode>
<Country></Country>
<Phone></Phone>
<Fax></Fax>
<ExternalReference></ExternalReference>
<Email></Email>
<Unregistered></Unregistered>
<Enabled></Enabled>
<InvalidAddress></InvalidAddress>
<Taxable></Taxable>
<ExcludeFromAll></ExcludeFromAll>
<IsDistributor></IsDistributor>
<OfferProduct></OfferProduct>
<OfferPartners></OfferPartners>
<Notes></Notes>
<Password></Password><License></CustomerData><LicenseID></LicenseID></License>
<ActivationPassword></ActivationPassword>
<EnteredDate></EnteredDate>
<Status></Status>
<ExpirationDate></ExpirationDate>
<Quantity></Quantity>
<RemainingActivations></RemainingActivations>
<RemainingDeactivations></RemainingDeactivations>
<LicenseUpdate></LicenseUpdate>
<LicenseCounter></LicenseCounter>
<PaymentPlanInstanceID></PaymentPlanInstanceID>
<ProductID></ProductID>
<ProductName></ProductName>
<ProdOptionID></ProdOptionID>
<OptionName></OptionName>
If an error occurs, only the ResultCode and ErrorMessage elements will be returned, otherwise the Customer and License elements will be returned.
In the case of an error, the ResultCode will contain one of the following error values:
Parameter | Data Type | Description |
---|---|---|
ResultCode | int | May contain one of the following values, each of which indicates a possible result:
|
ErrorMessage | string | Detailed error message for the result code. Only returned in error conditions (a non-zero result code) |
Customer | Xml | Customer details. See the sample XML above for details on the child elements. Note that the Password will be returned as SECURED if it was chosen by the customer and the user account used for authentication does not have View Password permission. |
License | Xml | License details. See the sample XML above for details on the child elements. |
CustomerSearch/CustomerSearchS
Used to search for customer details.
This method requires passing in a SOLO Server AuthorID/API UserID/API UserPassword, but the user does not need any specific permissions.
CustomerSearch accepts an XmlDocument input parameter, while CustomerSearchS accepts a string input parameter for the xml so that it is accessible via http post.
Since this web method requires providing an AuthorID, API UserID, and API User Password as inputs, it should be used for internal applications only and should not be called by client applications distributed to customers. See web service security for details.
If you are currently using regular UserID and UserPassword credentials, you will need to update your application(s) to use an API UserID and API UserPassword instead, as support for the regular User ID and Password will be removed in the future.
Input
The values of these elements are as follows:
Parameter | Data Type | Required/Optional | Description |
---|---|---|---|
AuthorID | int | Required | SOLO Server Author ID. |
UserID | string | Required | The API User ID of the user from the given author using the service (previously the regular User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
UserPassword | string | Required | The API User Password for API User ID (previously the regular User Password for the User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
Global | bool | Optional | Whether to perform a global search or just a search against the specified author. Only applicable if the user account has global access permission. |
SearchField | string | Required | The search field(s). You can pass one or more search fields in the input to search on a combination of fields. The following search fields are available:
|
The input xml is in the following format:
- XML
- <CustomerSearch xmlns="">
<AuthorID></AuthorID></CustomerSearch>
<UserID></UserID>
<UserPassword></UserPassword>
<Global></Global>
<SearchField></SearchField>
<SearchField></SearchField>
<!-- ...additional SearchField elements -->
Output
The result is returned as XML in the following format:
- XML
- <?xml version="1.0" encoding="utf-8"?>
<Customers><ResultCode></ResultCode></Customers>
<ErrorMessage></ErrorMessage>
<Customer><CustomerID></CustomerID></Customer>
<Password></Password>
<CompanyName></CompanyName>
<ContactName></ContactName>
<FirstName></FirstName>
<LastName></LastName>
<MailAddr1></MailAddr1>
<MailAddr2></MailAddr2>
<City></City>
<StateProvince></StateProvince>
<PostalCode></PostalCode>
<Country></Country>
<EMail></EMail>
<Voice></Voice>
<Fax></Fax>
<OfferProduct></OfferProduct>
<OfferPartners></OfferPartners>
<!-- ...additional Customer elements when multiple matches found -->
If an error occurs, only the ResultCode and ErrorMessage elements will be returned, otherwise the Customer elements will be returned if any matches are found. In the case of an error, the ResultCode will contain one of the following error values:
Parameter | Data Type | Description |
---|---|---|
ResultCode | int | May contain one of the following values, each of which indicates a possible result:
|
ErrorMessage | string | Detailed error message for the result code. Only returned in error conditions (a non-zero result code) |
Customer | Xml | The following XML tages will be returned:
<CustomerID></CustomerID> <Password></Password> <CompanyName></CompanyName> <ContactName></ContactName> <FirstName></FirstName> <LastName></LastName> <MailAddr1></MailAddr1> <MailAddr2></MailAddr2> <City></City> <StateProvince></StateProvince> <PostalCode></PostalCode> <Country></Country> <EMail></EMail> <Voice></Voice> <Fax></Fax> <OfferProduct></OfferProduct> <OfferPartners></OfferPartners> Note that the Password element will be returned as SECURE for for customer accounts where the password was set by the customer if the user does not have View Password permission. |
CustomerLogin/CustomerLoginS
Used to verify customer login details.
This method requires passing in a SOLO Server AuthorID/API UserID/API UserPassword, but the user does not need any specific permissions.
CustomerLogin accepts an XmlDocument input parameter, while CustomerSearchS accepts a string input parameter for the xml so that it is accessible via http post.
Since this web method requires providing an AuthorID, API UserID, and API User Password as inputs, it should be used for internal applications only and should not be called by client applications distributed to customers. See web service security for details.
If you are currently using regular UserID and UserPassword credentials, you will need to update your application(s) to use an API UserID and API UserPassword instead, as support for the regular User ID and Password will be removed in the future.
Input
The values of these elements are as follows:
Parameter | Data Type | Required/Optional | Description |
---|---|---|---|
AuthorID | int | Required | SOLO Server Author ID. |
UserID | string | Required | The API User ID of the user from the given author using the service (previously the regular User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
UserPassword | string | Required | The API User Password for API User ID (previously the regular User Password for the User ID). The API User ID and Password need to be used, as support for the regular User ID and Password will be removed in the future. |
string | Optional | Customer email address | |
CustomerID | int | Optional | The Customer ID, which uniquely identifies the customer to which this License ID belongs. |
LicenseID | int | Optional | The License ID. |
InvoiceNo | int | Optional | Invoice Number |
Password | string | Required unless performing a login by LicenseID/ActivationPassword | The customer password. |
ActivationPassword | string | Required if performing a login by LicenseID/ActivationPassword | The license Activation Password. Only supported for use in conjunction with a LicenseID. |
The input xml is in the following format:
- XML
- <CustomerSearch xmlns="">
<AuthorID></AuthorID></CustomerSearch>
<UserID></UserID>
<UserPassword></UserPassword>
<Email></Email>
<CustomerID></CustomerID>
<LicenseID></LicenseID>
<InvoiceNo></InvoiceNo>
<Password></Password>
<ActivationPassword></ActivationPassword>
Note that only one of the Email, CustomerID, LicenseID, InvoiceNo, or Nickname elements is required when attempting a login using the customer Password, and ActivationPassword is only supported when attempting a login using LicenseID.
Output
The result is returned as XML in the following format:
- XML
- <?xmlversion="1.0" encoding="utf-8"?>
<LoginResult><ResultCode></ResultCode></LoginResult>
<CustomerID></CustomerID>
<ErrorMessage></ErrorMessage>
The ResultCode can take the following values:
Parameter | Data Type | Description |
---|---|---|
ResultCode | int | May contain one of the following values, each of which indicates a possible result:
|
CustomerID | int | The Customer ID. Only returned if login is successful (ResultCode 0). |
ErrorMessage | string | Detailed error message for the result code. Only returned in error conditions (a non-zero result code) |