Services Overview

Before getting started, you'll need the following from Engineered Software:

  • A user name and password created specifically for your application
  • The catalog ID's for all catalogs you'd like to access from your service client. (Please note that each catalog ID must be explicitly associated with your user name and password. Unassociated ID's will return an error.)

PUMP-FLO Web Services is actually a collection of three SOAP services. In a typical pump selection they are called in the following order.

  1. fluid.svc - Use the set_table_fluid or the set_custom_fluid method to create a new fluid entity and get back its ID.
  2. selection_list.svc - Pass your fluid ID, catalog ID, and any optional criteria to the search method to generate a selection list. Then, using the returned list ID, use the get_list method to retrieve its contents. There are additional methods for adding or removing pumps, etc.
  3. pumps_v2.svc - Call this service to retrieve the data for a particular pump in your list, change its characteristics, retrieve a graph image, etc.

Service Addresses: 

HTML views of the WSDL files for each service may be obtained by appending ?wsdl or ?singleWsdl to the end of the address. It is generally not necessary to append these strings to a SOAP client when associating a service reference.

Each service has two valid endpoints, /cub and /x509. These are generally discovered automatically by SOAP client software. x509 is the preferred, encrypted endpoint. CUB may be used in circumstances where x509 proves problematic, but users should be aware that communication between the client and the server remains unencrypted. In the future we will likely move to a plain text over SSL transport in order to eliminate this weakness while still providing secure communications.

The full service API reference can be found online at This is largely an auto-generated resource so navigation can be difficult. To get started, take a look at the following pages:

The workflow for basic pump selection is as follows:

  1. Gather selection criteria. This includes creating a fluid object to pass to the pump selector.
  2. Call search() to create a selection list on the PUMP-FLO server.
  3. Pass the selection list id created by search() to the get_list() method to retrieve the list of pumps.
  4. Select a pump from the list and pass its PumpStateID to get_pump() to retrieve the pump's data and to graph() to retrieve the curve image.

In pseudo code, the above would look something like:

//establish fluid state for to be used in search criteria. May re-use fluid ID's in multiple searches.
fluid_id = Ifluid.set_table_fluid( name_str, temperature_value_obj );

//Do the actual selection, getting back the ID for entire set of results.
list_id =, fluid_id, catalog_id, unit_system, optional_criteria_obj);

//Retrieve a table full of pump results for all pumps in the list
list_table = selection_list_service.get_list(list_id);

//individual pumps on the list may be manipulated using their PumpStateID's. 
psid = list_table[0]["PumpStateID"];       //first pump on the list
pump_data_table = get_pump(list_id, psid); //Useful for retrieving data on a single pump, without
                                           //getting the entire list. Not necessary if you have the list already.

//Additional calls to the pump may be made for graphing, retrieving notes and warnings, etc.
//Check the pump service methods listed above for details.

You can also use the add_pump() function to do a manual pump selection.

fluid_id = Ifluid.set_table_fluid( name_str, temperature_value_obj );

//create an empty list with no pumps. may also add to an existing list if you already have its ID.
//Note that if you specify a design point, it will be used as the point at which you would like to
//see data for all pumps in the catalog, however, pumps may be added this way whether or not they
//are actually capable of meeting the specified design point. 
list_id = selection_list_service.new_list( design_point, fluid_id, unit_sytem );

//add a particular pump from a given catalog to a list. note that PUMP_ID here is a guid found in
//the pump catalog, not a pumpstate_id like you'd get from a selection result. Pumpstate_id's
//represent pumps with state. The guids are refrences to specific entries within the catalog.
selection_list_service.add_pump( list_id, CATALOG_ID, PUMP_ID );

//Everything else about this list and the pumps that are on it works exactly like normally selected pumps.
list_table = selection_list_service.get_list(list_id);
psid = list_table[0]["PumpStateID"];