SugarREST API returns a entry_list even when the record is not found

Calling the REST API get_entry for a record that does not exist, I would expect that the service returns a fault instead of a entry_list. See example shown below:

{
 entry_list: [
 {
 id: "bf700a80-6cdf-6587-d548-4d2d74f47d6",
 module_name: "Contacts",
 name_value_list: [
 {
 name: "warning",
 value: "Access to this object is denied since it has been deleted or does not exist"
 },
 {
 name: "deleted",
 value: "1"
 }
 ]
 }
 ],
 relationship_list: []}  

Source 1. JSON returned when th record is not found.

My proposal is that the service returns a fault when the event occurs: records not found. See the example of the desired fault follows.

{
 name: "Record not found or deleted",
 number: $error_number,
 description: "Access to this object is denied since it has been deleted or does not exist"
}

Source 2. Desired fault when record not found or deleted.

Managing abnormal situations through fault messages, simplifies error handling client side. See the output of a Java client Rest in case of error in the login process.

SugarCRM Login Fault

Figure 1. SugarCRM Login Fault

Figure 2. Get Entry Fault when Module does not exist

Figure 2. Get Entry Fault when Module does not exist

Following is an example of Java code that implements a client Rest managing all the fault the same way.

try {      
      SugarCRMInterface crmRestIf = new SugarCRMRestClient();
      // Try login
      System.out.println("Try login...");
      UserAuthLogin userAuth = new UserAuthLogin( new UserAuth("wil","18218139eec55d83cf82679934e5cd75","1.0"));
      EntryValue response = crmRestIf.login(userAuth, "RESTFulClient-1.0", null);
      ...

      // Get entry
      System.out.println("Get entry...");
      EntryResult contact = crmRestIf.getEntry(response.getId(), "Contact", "bf700a80-6cdf-6587-d548-4d2d74f47d6c", null, null);
      ...
} catch (FaultException fex) {
     System.out.println("Code: " + Integer.toString(fex.getCode()));
     System.out.println("Descrition: " + fex.getDescription());
     System.out.println("Detail: " + fex.getDetail());
     System.out.println("Detail Message: " + fex.getMessage());
} 

Source 3. Example of Java code that handles situations Fault.

The reference version is the 6.1 Community Edition, version 3 of the REST API.

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

You may also like...