Zoho CRM API Update - Important

Zoho CRM API Update - Important

We are very happy to announce the GA release of API for Zoho CRM service. Our API is available in XML and JSON formats, which helps the developer community to build applications using their favorite programming language (such as Java, C, C++, PHP, Python etc.). Now we are ready with robust and much better API methods to cater to the needs of real-time deployments. Your valuable contribution towards identifying bugs, coming up with new business scenarios and publishing examples really helped us to come up with a better API for our CRM system.
 
In addition to the GA release, we are also making some major changes in our existing API implementation that allows us to fulfill the future needs of our developer community. Some of these changes include, deprecation of search methods, new response format, restriction of API requests and new API methods for implementing additional CRM business logic. We sincerely believe, these changes will greatly help us to provide a better experience to the developer community and take Zoho CRM developer platform to the next level.
 

Important Changes

  • Deprecation of existing search methods - getAllSearchRecords and getMySearchRecords
       
  • Implementation of new response format  for all the methods


  • Restriction of API requests based on the Zoho CRM edition


  • Introduction of new methods for Search, Lead Conversion and Delete functions

1. Deprecation of API Methods


Keeping the future community growth, better developer service and optimization of the high performance-intensive operations in view, we are phasing out the following API methods:
  • getAllSearchRecords
  • getMySearchRecords
API Method
Purpose
getAllSearchRecords Used to fetch all data with respect to the search word specified irrespective of the ownership.
getMySearchRecords Used to fetch data owned by the loginname with respect to the search word specified in the request.
getAllRecords Name has been changed to getRecords
getEntityRecord Name has been changed to getRecordById

Of late, we are encountering a huge amount of resource utilization while implementing the getAllSearchRecords and getMySearchRecords than expected. To overcome this kind of situation, we are introducing new search methods, getSearchRecords and getSearchRecordsByPDC , which serves the similar purpose. We have optimized these new methods for better performance.

End of Life: December 07, 2009 

Note:



From Dec 7, 2009 (12.00 AM PST) these methods will be nonfunctional and if you still use them, system will throw the following error message in your application:


Unable to process your request. Kindly verify whether you have entered proper method name, parameter and parameter values.

Important Note:

Before end of life, you are strongly recommended to update your application with the new search methods -  getSearchRecords or getSearchRecordsByPDC . For any help or clarification, please mail us at: support@zohocrm.com

For more details about the deprecated methods, please refer our API Guide
 

2. New Response Format


At present, XML format for the API response is <fieldlabel value="LEADID">Field Value</fieldlabel>, which contains about 26 characters (including space) in the opening and closing tags. In our new implementation, we have shortened the tag size by changing the XML tags to <FL val="LEADID">Field Value</FL> - total 8 characters, which saves about 18 bytes per field. This will greatly help us to optimize the utilization of bandwidth.

Till Dec 7, 2009, by default, you will get the response in the old format. If you want to get the response in the new format, you must pass the extra argument with newFormat=1 or 2 in API request.

Parameter Purpose
newFormat=1 To exclude fields with "null" values while fetching data from your CRM account.
newFormat=2 To include fields with "null" values while fetching data from your CRM account.

Old Format:

                    
  1.  <response uri="/crm/private/xml/Leads/getAllRecords">
    <result>
    <Leads>
         <row no="1">

    < fieldlabel value="LEADID">1111111111</ fieldlabel>
    <fieldlabel value="SMOWNERID">222222222</fieldlabel>
    <fieldlabel value="Lead Owner">soori</fieldlabel>
    <fieldlabel value="Company">NiveSoft</fieldlabel>
    <fieldlabel value="First Name">Mutha</fieldlabel>
    <fieldlabel value="Last Name">Raja</fieldlabel>
    <fieldlabel value="Designation">null</fieldlabel>
    <fieldlabel value="Email">null</fieldlabel>
    <fieldlabel value="Phone">3434343</fieldlabel>
    <fieldlabel value="Fax">null</fieldlabel>
    <fieldlabel value="Mobile">null</fieldlabel>
    <fieldlabel value="Website">null</fieldlabel>
    <fieldlabel value="Lead Source">null</fieldlabel>
    <fieldlabel value="Lead Status">null</fieldlabel>
    <fieldlabel value="Industry">null</fieldlabel>
    <fieldlabel value="No of Employees">0</fieldlabel>
    <fieldlabel value="Annual Revenue">0.0</fieldlabel>
    <fieldlabel value="Rating">null</fieldlabel>
    <fieldlabel value="CAMPAIGNID">null</fieldlabel>
    <fieldlabel value="Campaign Source">null</fieldlabel>
    <fieldlabel value="SMCREATORID">22222222</fieldlabel>
    <fieldlabel value="Created By">jkbmahesh</fieldlabel>
    <fieldlabel value="MODIFIEDBY">22222222</fieldlabel>
    <fieldlabel value="Modified By">jkbmahesh</fieldlabel>
    <fieldlabel value="Created Time">2009-02-22 18:20:38</fieldlabel>
    <fieldlabel value="Modified Time">2009-10-05 16:01:32</fieldlabel>
    <fieldlabel value="Street">null</fieldlabel>
    <fieldlabel value="City">null</fieldlabel>
    <fieldlabel value="State">null</fieldlabel>
    <fieldlabel value="Zip Code">null</fieldlabel>
    <fieldlabel value="Country">null</fieldlabel>
    <fieldlabel value="Description">null</fieldlabel>
    <fieldlabel value="Skype ID">null</fieldlabel>
    <fieldlabel value="Email Opt Out">false</fieldlabel>
    <fieldlabel value="Salutation">null</fieldlabel>
    <fieldlabel value="rrr">null</fieldlabel>
    <fieldlabel value="int field">null</fieldlabel>
    <fieldlabel value="Currency (Round Up)">null</fieldlabel>
    <fieldlabel value="Auto Num">1</fieldlabel>






































         </row>
        <row no="2">
        ...
        </row>
    </Leads>




    </result>
    </response>




In this example, all fields are fetched in spite of there are "null" values in the record. If you have 150 fields in a module, we have to fetch data for all the fields, which require unnecessary bandwidth utilization.

New format:
                     
  1.  <response uri="/crm/private/xml/Leads/getAllRecords">
        <result>
            <Leads>
                <row no="1">
                    <FL val="LEADID">1111111111</FL>
                    <FL val="SMOWNERID">1111122222</FL>
                    <FL val="Lead Owner">soori</FL>
                    <FL val="Company">NiveSoft</FL>
                    <FL val="First Name">Mutha</FL>
                    <FL val="Last Name">Raja</FL>
                    <FL val="Email"></FL>
                    <FL val="Phone">3434343</FL>
                    <FL val="No of Employees">0</FL>
                    <FL val="Annual Revenue">0.0</FL>
                    <FL val="SMCREATORID">22222222</FL>
                    <FL val="Created By">jkbmahesh</FL>
                    <FL val="MODIFIEDBY">22222222</FL>
                    <FL val="Modified By">jkbmahesh</FL>
                    <FL val="Created Time">2009-02-22 18:20:38</FL>
                    <FL val="Modified Time">2009-10-05 16:01:32</FL>
                    <FL val="Email Opt Out">false</FL>
                    <FL val="Auto Num">1</FL>
                </row>
                <row no="2">
                 .... 
                 </row>
           </Leads>
        </result>
    </response>




























In this example, we are not fetching the fields containing " Null " values by passing the  newFormat=1 parameter.  

Key Points:
  • XML tag has been changed from <fieldlable value=""> field value </fieldlable> to <FL val=""> field value <FL>


  • You can stop fetching records with "null" values by passing the newFormat=1 in API request. If you want to fetch data for all the fields (including null values), use the newFormat=2 parameter.

New Response Format - Available from Oct 22, 2009

EOL of Old Response Format - Dec 07, 2009






3. No. of API Requests

For a better performance and developer service, we will be limiting the number of API requests as given below:

Zoho CRM Edition API Requests - Upper Limit
Free Edition
(3 users free)
250 calls / day / organization
Professional Edition
(USD 12 / user /month)
250 calls/day / user license OR
5,000 calls /day /organization
, whichever is lower
Enterprise Edition
(USD 25 / user /month)
250 /day/ user license OR
15,000 calls/day /organization
, whichever is lower

For example, in Free Edition, if you are using the getSearchRecords method, you can fetch a maximum of 200 records per request, in turn, a total of 50,000 records per day (250 x 200 = 50,000 records).

Please note that if you are using the getSearchRecords or getCVRecords methods, you can send a maximum of 250 calls per day irrespective of your Zoho CRM edition.

Important Note:

The above restrictions are applicable for all our existing and new users. In future, we are planning to notify the CRM administrator (Primary Contact of the Zoho CRM account) if your organization exceeds the above mentioned limit. In addition, we will also provide API Statistics for better assessment of your integration requirements.

Implementation Date: Dec 07, 2009

From Dec 07, 2009 (12.00 AM PST), you can request API calls as per your Zoho CRM Edition. In case, your application requires more than upper limit, your additional API requests will not be processed. To avoid data transfer issues, please assess your API requirements well in advance. If you need any help, please contact our Support at support@zohocrm.com or call us:+1 888 900 9646.





4. New API Methods


We are really excited to introduce the following new methods for the benefit of growing developer community:
  • getSearchRecords
  • getSearchRecordsByPDC
  • deleteRecords
  • convertLead
API Method
Purpose
getSearchRecords

To fetch all users data specified in the API request.

getSearchRecordsByPDC

To search the values based on the default pre-defined columns of Zoho CRM entities.

deleteRecords

To delete a record by passing its ID.

convertLead To convert lead to account, contact and potential.

We are confident, the above methods will be very useful in implementation of search functions and allows you to develop additional business logic through our API. These methods will be made available for all editions immediately.

Available From: Oct 22, 2009

For more information on new API methods, please refer our API Guide



5. Other Changes


In addition, we are incorporating the following minor changes: 
  • Fetch a maximum of 200 records per API request
  • New Response format is applicable to all API methods (existing as well as new methods)
  • Fetch records with the specified fields using the selectColumns parameter.
  • We have also updated API Guide and launched official Developer Forums .
We take this opportunity to request you to share your suggestions, post your integration needs and publish your completed works for the benefit of the developer community.

Thank you in advance for your kind cooperation.

Best Regards,
Gopal
(Team Zoho CRM)

UPDATE on Nov 26, 2009:

Extended End of Life Date for another 45 days - from Dec 07, 2009 to Jan 21, 2010. Now the total duration is 90 days.

Published On: Oct 22, 2009
Last Updated On: Nov 26, 2009