Sterling Order Management System APIs or Services

The Sterling Order Management System APIs are provided out of the box for most of the business entities in Sterling Order Management System to perform READ operations. You can search for data, list data or get detailed information pertaining to the entity from the cloud database by calling these APIs. Sterling Order Management System applications are also using these APIs to publish data on its own UIs. The same APIs can be called from both XAPI and REST API testers that are available out of the box or from a customized UI or 3rd party REST client too. To call the APIs, you must provide the login credentials to authenticate the user. The API testers capture this information along with the API input. Whereas, the Sterling Order Management System UIs send the logged-in user’s credentials along with the request. The Sterling Order Management System backend authenticates the user first and then starts with the API request processing.

The API behavior and XML input/output specifications are given in the Sterling Order Management System Javadoc. View <runtime>/xapidocs/api_javadocs/index.html for details. Similarly, see the page <runtime>/xapidocs/restdoc/index.html for REST URL resources and input or output specifications.

The XML approach supports complex queries with AND or OR expressions and advanced query match like ‘Contains’, ‘Starts with’, Only Null and so on, and the relational operators. In the REST approach, complex queries are not supported in the GET request, but it is also possible to do a POST request with one or more complex criteria.

The API requests are processed synchronously in the application server JVM and responses are sent back to the browser. If you are calling an API with an empty criterion or passing some criteria which can fetch huge volume of data, you might choke the network traffic and sometimes even crash the application server. Therefore, IBM strongly recommends users to deter such situations and advises to input more specific criteria and retrieve only the relevant data.

A solution to this is to use Pagination. There are many Sterling Order Management System APIs that support pagination and you are advised to call those APIs with Pagination. Read Sterling Order Management System API Javadoc to know whether an API supports pagination or not. Almost all the APIs are template controlled and it is very critical to specify a tuned template with necessary attributes, when retrieving huge volume of data. In all the cases, it is better to get a count of records first to assess the quantum of data and then run APIs either in paginated mode or make the input criteria more specific. All list APIs can be called for ‘count’ by specifying an output template with the TotalNumberOfRecords attribute only.

Both the API testers are not available on the production environment. Therefore, you are advised to make REST calls from their customized UI or from a 3rd party REST client with supportive authentication credentials. Few 3rd party REST clients support download of the responses as well. It is better to download and analyze when the results are quite high.

Table 1. Sample REST APIs
API Pattern Sample REST URL
getOrderList – empty input GET
https://<ip>:<port>/smcfs/restapi/order
getOrderList - with input parameters GET
https://<ip>:<port>/smcfs/restapi/order?EnterpriseCode=~eq~Matrix&DocumentType=~eq~0001
getOrderList – with input parameters and order by sellers GET
https://<ip>:<port>/smcfs/restapi/order?EnterpriseCode=~eq~Matrix&DocumentType=~eq~0001
&sort(+SellerOrganizationCode)
getOrderList – with input parameters, order by sellers, paginate (get first 100) GET
https://<ip>:<port>/smcfs/restapi/order?EnterpriseCode=~eq~Matrix&DocumentType=~eq~0001
&sort(+SellerOrganizationCode)&_range=0-99
getOrderList – with input parameters, order by sellers, paginate and with an output template GET
https://<ip>:<port>/smcfs/restapi/order?EnterpriseCode=~eq~Matrix&DocumentType=~eq~0001
&sort(+SellerOrganizationCode)&_range=0-99&_templateKey=api_tpl_1
GetOrderLinesData - a custom service POST
https://<ip>:<port>/smcfs/executeFlow/GetOrderLinesData
Body: input in JSON format

User given API templates can be created in the database by calling the manageApiTemplate API . This can be called in the master config (lower) environment from the API testers and get this configuration to the production database by using the CDT or users can make another REST call for this API to insert the template into the database. For example, api_tpl_1 in the provided sample URL, is the identifier of a template for getOrderList API, created in the database before making this call.