API Reference
The EBSuite Web Service APIs expose powerful features and functionalities available to outside developers. To use these APIs you will need an account (subscription) that is active, a user with an 'Admin' role, and a set of API Credentials.

For details of getting started, and acquiring the API Credentials, please contact nzhong@ebsuite.com, with email subject "Web Service APIs".

APIs
EBSuite offers the following API operations.
API Methods Description
SessionAuthenticatorAPI

( WSDL Link )
simpleAuthenticate(), loginAuthenticate() A typical web service client application will call this API first, to create / obtain a session Id, and then perform a series of additional web service calls. The followup calls will use the session Id obtained here.
OrgAPI

( WSDL Link )
getAllOrganizations(), getOrganizationsByViewName(), getOrganizationsByViewNameWithSearchKeywords(), searchOrganizations(), searchOrganizationsByCustomField(), getOrganizationDetail(), saveOrganizationRecord() APIs to manipulate Organization records. You can retrieve, search, create, and update org records. Phones / Emails / Addresses / Notes / Custom Fields are supported.
PsnAPI

( WSDL Link )
getAllContacts(), getAllContactsSync(), getContactsByViewName(), getContactsByViewNameWithSearchKeywords(), searchContacts(), searchContactsByCustomField(), searchContactsByFirstAndLast(), getContactDetail(), getContactByContactNumber(), saveContactRecord(), saveContactRecordAllowDup(), saveContactRecordAndAssign(), saveContactRecordsAndCreatePortalAccount(), createSupportPortalAcount() APIs to manipulate Contact records. You can retrieve, search, create, and update contact records. Phones / Emails / Addresses / Notes / Custom Fields are supported.
OppAPI

( WSDL Link )
getAllOpportunities(), getOpportunitiesByViewName(), getOpportunitiesByViewNameWithSearchKeywords(), getAllOppsForCustomer(), searchOpportunitiesByCustomField(), quickCreateOppUsingQcProfile(), searchOpportunities(), getOpportunityDetail(), saveOpportunityRecord() APIs to manipulate Opportunity records. You can retrieve, search, create, and update opp records. Purchase Items/ Notes / Custom Fields are supported.
CseAPI

( WSDL Link )
getAllCases(), getAllOpenCases(), getCasesByAssignedUser(), getOpenCasesByAssignedUser(), getCaseDetail(), saveCaseRecord() APIs to manipulate Case records. You can retrieve, search, and update Case records. Notes / Custom Fields are supported.
SolAPI

( WSDL Link )
getAllSolutions(), getSolutionsByProductCategory(), getSolutionDetail(), saveSolutionRecord() APIs to manipulate Knowledge records. You can retrieve, search, and update Knowledge records. Notes / Custom Fields are supported.
ApptAPI

( WSDL Link )
getNextSequenceId(), getAllAppointmentsSync(), getAllAppointments(), getAllOpenAppointments(), getAppointmentsByUserName(), getOpenAppointmentsByUserName(), getAppointmentsByDayRange(), getOpenAppointmentsByDayRange(), getAppointmentsByUserNameAndDayRange(), getOpenAppointmentsByUserNameAndDayRange(), getAppointmentDetail(), saveAppointmentRecord(), saveAppointmentRecordSync() APIs to manipulate Appointment records. You can retrieve, search, and update Appointment records. Attendees / References / Notes / Custom Fields are supported. Support Sync functionality.
TaskAPI

( WSDL Link )
getAllTasksSync(), getAllTasks(), getAllOpenTasks(), getTasksByAssignedUser(), getOpenTasksByAssignedUser(), getTaskDetail(), saveTaskRecord() APIs to manipulate Task records. You can retrieve, search, and update Task records. Notes / Custom Fields are supported. Support Sync functionality.
LeadAPI

( WSDL Link )
getAllLeads(), getLeadsByViewName(), searchLeads(), searchLeadsByFirstAndLast(), getLeadDetail(), saveLeadRecord() APIs to manipulate Lead records.
CallAPI

( WSDL Link )
getAllCalls(), getAllCallsSince() APIs to manipulate Call entities.
CustomFieldAPI

( WSDL Link )
getAllCFForOwner(), saveCFRecord() APIs to manipulate Custom Field records.
NoteAPI

( WSDL Link )
getAllNotesForOwner(), getAllNotesSince(), saveNoteRecord() APIs to manipulate Note entities.
ProductAPI

( WSDL Link )
getAllProducts(), getAllProductsUnderCategory(), getAllProductCategories(), getProductDetail() APIs to manipulate Product records.
TemplateAPI

( WSDL Link )
getAllTemplates(), getMergedTemplateContentByCustomerEmail(), getMergedTemplateContentByCustomerId(), getTemplateContent() APIs to manipulate (Marketing) template entities.



SessionAuthenticatorAPI ( WSDL: https://ebsuite.com/cxf/SessionAuthenticatorAPI?wsdl )
A typical web service client application will call this API first, to create / obtain a session Id, and then perform a series of additional web service calls. The followup calls will use the session Id obtained here.
  • String simpleAuthenticate( String clientID, String clientPswd)
    INPUT: clientID / clientPswd, the API Credentials for your account ( subscription )
    OUTPUT: sessionId, to be used in subsequent api calls.

  • String loginAuthenticate( String companyName, String loginUN, String loginPW )
    INPUT: companyName / loginUN / loginPW, Your regular 3-point login ( company name, user name, password )
    OUTPUT: sessionId, to be used in subsequent api calls.

    ERROR HANDLING: If success, sessionId should start with "SESSIONID:" (without ""). Otherwise it should display the error message.

    NOTE: In subsequent calls, the valid sessionId should be minus "SESSIONID:" (without""). ( for example, sessionId = sessionId.substring("SESSIONID:".length()); )
    This is for backward compatibility.



  • OrgAPI ( WSDL: https://ebsuite.com/cxf/OrgAPI?wsdl )
    APIs to manipulate Organization records. You can retrieve, search, create, and update org records. Phones / Emails / Addresses / Notes / Custom Fields are supported.
    NOTE:
    - When you've been using EBSuite CRM for a while, and have a large number of organization records, we do not recomment using the getAllOrganizations() method, as it retrieves all records without any filter, thus slowing down the API.
    - Use searchOrganizations() to do simple name search, use getOrganizationsByViewName() to do complex search. ( You will have to define the view via browser first ).
    - getAllOrganizations(), searchOrganizations(), getOrganizationsByViewName() return Organization records with basic (built-in fields) information. getOrganizationDetail() returns basic + Phone/Email/Address/Custom Field/Note data.

  • OrganizationList getAllOrganizations( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: OrganizationList, an array of object of type Organization. (You should use a tool like WSDL2Java to generate Organization and OrganizationList )

  • OrganizationList getOrganizationsByViewName( String sessionId, String viewName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. viewName, the name of the view you defined via browser UI.
    OUTPUT: OrganizationList, an array of object of type Organization.
    You can define your search query and save it as a view, and use this API to retrieve the search result.

  • OrganizationList searchOrganizations( String sessionId, String searchStr )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. searchStr, search string, seperated by comma (,).
    OUTPUT: OrganizationList, an array of object of type Organization.
    This API will search by Organization Name, Email, Phone, and Address. For complex searches, you should define the search as a Custom View, and use the previous API getOrganizationsByViewName().

  • Organization getOrganizationDetail( String sessionId, int orgId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. orgId: the customer id, not the customer number. You can obtain the id from the previous 3 APIs.
    OUTPUT: an Organization record, complete with basic info, plus Phone/Email/Address/Custom Field/Note data.

  • Organization saveOrganizationRecord( String sessionId, Organization o )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. o, the Organization record.
    OUTPUT: an Organization record, updated version.
    This API can be used to both update an existing Organization record, or create a new one. to create a new record, pass in the Organization record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new OrganizationId and OrganizationNumber are populated.



  • PsnAPI ( WSDL: https://ebsuite.com/cxf/PsnAPI?wsdl )
    APIs to manipulate Contact records. You can retrieve, search, create, and update contact records. Phones / Emails / Addresses / Notes / Custom Fields are supported.
    NOTE:
    - When you've been using EBSuite CRM for a while, and have a large number of contact records, we do not recomment using the getAllContacts() method, as it retrieves all records without any filter, thus slowing down the API.
    - Use searchContacts() and/or searchContactsByFirstAndLast() to do simple name search, use getContactsByViewName() to do complex search. ( You will have to define the view via browser first ).
    - getAllContacts(), getAllContactsSync(), searchContacts(), searchContactsByFirstAndLast(), getContactsByViewName() return Contact records with basic (built-in fields) information. getContactDetail() returns basic + Phone/Email/Address/Custom Field/Note data.

  • ContactList getAllContacts( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: ContactList, an array of object of type Contact. (You should use a tool like WSDL2Java to generate Contact and ContactList )

  • ContactList getAllContactsSync( String sessionId, String lastTouchDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. lastTouchDate, in "MM/dd/yyyy HH:mm:ss" format.
    OUTPUT: ContactList, an array of object of type Contact.
    Used in Sync routine. Retrieve only the recently touched (newly created, or recently updated since lastTouchDate).

  • ContactList getContactsByViewName( String sessionId, String viewName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. viewName, the name of the view you defined via browser UI.
    OUTPUT: ContactList, an array of object of type Contact.
    You can define your search query and save it as a view, and use this API to retrieve the search result.

  • ContactList searchContacts( String sessionId, String searchStr )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. searchStr, search string, seperated by comma (,).
    OUTPUT: ContactList, an array of object of type Contact.
    This API will search by Contact Name, Email, Phone, and Address. For complex searches, you should define the search as a Custom View, and use the previous API getContactsByViewName().

  • ContactList searchContactsByFirstAndLast( String sessionId, String firstName, String lastName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. firstName, lastName, pass in partial/full name, or empty string.
    OUTPUT: ContactList, an array of object of type Contact.
    If you know the (partial/full) FirstName and/or LastName, you can call this API to perform the search. You can pass in one value as an empty string to only search by Last Name for example.

  • Contact getContactDetail( String sessionId, int contactId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. contactId: the contact id, not the contact number. You can obtain the id from the previous query APIs.
    OUTPUT: a Contact record, complete with basic info, plus Phone/Email/Address/Custom Field/Note data.

  • Contact saveContactRecord( String sessionId, Contact c )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. c, the Contact record.
    OUTPUT: an Contact record, updated version.
    This API can be used to both update an existing Contact record, or create a new one. to create a new record, pass in the Contact record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new ContactId and ContactNumber are populated.

  • Contact saveContactRecordAllowDup( String sessionId, Contact c, String allowDup )
    The above saveContactRecord() will fail if there is a duplicate firstName/LastName pair. If you need to create a different contact record with the same firstName/LastName pair, you should call saveContactRecordAllowDup() with allowDup = "Y".



  • OppAPI ( WSDL: https://ebsuite.com/cxf/OppAPI?wsdl )
    APIs to manipulate Opportunity records. You can retrieve, search, create, and update opp records. Purchase Items/ Notes / Custom Fields are supported.
    NOTE:
    - When you've been using EBSuite CRM for a while, and have a large number of opportunity records, we do not recomment using the getAllOpportunities() method, as it retrieves all records without any filter, thus slowing down the API.
    - Use searchOpportunities() to do simple name search, use getOpportunitiesByViewName() to do complex search. ( You will have to define the view via browser first ).
    - getAllOpportunities(), searchOpportunities(), getOpportunitiesByViewName() return Opportunity records with basic (built-in fields) information. getOpportunityDetail() returns basic + Custom Field/Note data.

  • OpportunityList getAllOpportunities( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: OpportunityList, an array of object of type Opportunity. ( You should use a tool like WSDL2Java to generate Opportunity and OpportunityList )

  • OpportunityList getOpportunitiesByViewName( String sessionId, String viewName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. viewName, the name of the view you defined via browser UI.
    OUTPUT: OpportunityList, an array of object of type Opportunity.
    You can define your search query and save it as a view, and use this API to retrieve the search result.

  • OpportunityList searchOpportunities( String sessionId, String searchStr )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. searchStr, search string, seperated by comma (,).
    OUTPUT: OpportunityList, an array of object of type Opportunity.
    This API will search by Opportunity Name and Description. For complex searches, you should define the search as a Custom View, and use the previous API getOpportunitiesByViewName().

  • Opportunity getOpportunityDetail( String sessionId, int oppId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. oppId: the opportunity id, not the opp number. You can obtain the id from the previous query APIs.
    OUTPUT: a Opportunity record, complete with basic info, plus Purchase Item/Custom Field/Note data.

  • Opportunity saveOpportunityRecord( String sessionId, Opportunity opp )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. opp, the Opportunity record.
    OUTPUT: an Opportunity record, updated version.
    This API can be used to both update an existing Opp record, or create a new one. to create a new record, pass in the Opportunity record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new oppId and oppNumber are populated.



  • CseAPI ( WSDL: https://ebsuite.com/cxf/CseAPI?wsdl )
    APIs to manipulate Case records. You can retrieve, search, and update Case records. Notes / Custom Fields are supported.
    NOTE:
    - When you've been using EBSuite CRM for a while, and have a large number of case records, we do not recomment using the getAllCases() method, as it retrieves all records without any filter, thus slowing down the API. You can use getAllOpenCases() instead.
    - getAllCases(), getAllOpenCases(), getCasesByAssignedUser(), getOpenCasesByAssignedUser() return Case records with basic (built-in fields) information. getCaseDetail() returns basic + Custom Field/Note data.

  • CaseList getAllCases( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: CaseList, an array of object of type CaseEO. ( You should use a tool like WSDL2Java to generate CaseEO and CaseList )

  • CaseList getAllOpenCases( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: CaseList, an array of object of type CaseEO. ( You should use a tool like WSDL2Java to generate CaseEO and CaseList )
    Get all cases that have not been closed.

  • CaseList getCasesByAssignedUser( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, the assignee's username
    OUTPUT: CaseList, an array of object of type CaseEO.

  • CaseList getOpenCasesByAssignedUser( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, the assignee's username
    OUTPUT: CaseList, an array of object of type CaseEO.

  • CaseEO getCaseDetail( String sessionId, int cseId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. cseId: the case id, not the case number. You can obtain the id from the previous query APIs.
    OUTPUT: a CaseEO record, complete with basic info, plus Custom Field/Note data.

  • CaseEO saveCaseRecord( String sessionId, CaseEO c )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. c, the CaseEO record.
    OUTPUT: an CaseEO record, updated version.
    This API can be used to both update an existing case record, or create a new one. to create a new record, pass in the CaseEO record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new caseId and caseNumber are populated.



  • SolAPI ( WSDL: https://ebsuite.com/cxf/SolAPI?wsdl )
    APIs to manipulate Knowledge records. You can retrieve, search, and update Knowledge records. Notes / Custom Fields are supported.
    NOTE:
    - getAllSolutions(), getSolutionsByProductCategory() return knowledge records with basic (built-in fields) information. getSolutionDetail() returns basic + Custom Field/Note data.

  • SolutionList getAllSolutions( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: SolutionList, an array of object of type SolutionEO. ( You should use a tool like WSDL2Java to generate SolutionEO and SolutionList )

  • SolutionList getSolutionsByProductCategory( String sessionId, String pcatName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. pcatName, either the category name, or the category key.
    OUTPUT: SolutionList, an array of object of type SolutionEO. This API will return all knowledges under the given product category.

  • SolutionEO getSolutionDetail( String sessionId, int solId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. solId: the solution id. You can obtain the id from the previous query APIs.
    OUTPUT: a SolutionEO record, complete with basic info, plus Custom Field/Note data.

  • SolutionEO saveSolutionRecord( String sessionId, SolutionEO s )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. s, the SolutionEO record.
    OUTPUT: an SolutionEO record, updated version.
    This API can be used to both update an existing knowledge record, or create a new one. to create a new record, pass in the SolutionEO record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new solutionId and solutionNumber are populated.



  • ApptAPI ( WSDL: https://ebsuite.com/cxf/ApptAPI?wsdl )
    APIs to manipulate Appointment records. You can retrieve, search, and update Appointment records. Attendees / References / Notes / Custom Fields are supported. Support Sync functionality.

  • int getNextSequenceId( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: an integer representing the next sequence id for a calendar appointment Sync. This is purly for sync purpose, and you should not use it unless you are sure you need to call this method.

  • AppointmentList getAllAppointmentsSync( String sessionId, String lastTouchDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. lastTouchDate, in "MM/dd/yyyy HH:mm:ss" format.
    OUTPUT: AppointmentList, an array of object of type Appointment.
    Used in Sync routine. Retrieve only the recently touched records (newly created, or recently updated since lastTouchDate).

  • AppointmentList getAllAppointments( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: AppointmentList, an array of object of type Appointment. ( You should use a tool like WSDL2Java to generate Appointment and AppointmentList )

  • AppointmentList getAllOpenAppointments( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getAppointmentsByUserName( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, return all appointments which has this user as an attendee.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getOpenAppointmentsByUserName( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, return all open appointments which has this user as an attendee.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getAppointmentsByDayRange( String sessionId, String startDate, String endDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. startDate, endDate in"2008.JAN.01" format.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getOpenAppointmentsByDayRange( String sessionId, String startDate, String endDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. startDate, endDate in"2008.JAN.01" format.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getAppointmentsByUserNameAndDayRange( String sessionId, String userName, String startDate, String endDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. startDate, endDate in"2008.JAN.01" format.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • AppointmentList getOpenAppointmentsByUserNameAndDayRange( String sessionId, String userName, String startDate, String endDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. startDate, endDate in"2008.JAN.01" format.
    OUTPUT: AppointmentList, an array of object of type Appointment.

  • Appointment getAppointmentDetail( String sessionId, int apptId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. apptId: the appointment id. You can obtain the id from the previous query APIs.
    OUTPUT: a Appointment record, complete with basic info, plus Attendees/References/Custom Field/Note data.

  • Appointment saveAppointmentRecord( String sessionId, Appointment appt )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. appt, the Appointment record.
    OUTPUT: an Appointment record, updated version.
    This API can be used to both update an existing appointment record, or create a new one. to create a new record, pass in the Appointment record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new appointmentId are populated.

  • Appointment saveAppointmentRecordSync( String sessionId, Appointment appt )
    Call saveAppointmentRecord, as well as add the current user (authenticating with the web service API) as an attendee.



  • TaskAPI ( WSDL: https://ebsuite.com/cxf/TaskAPI?wsdl )
    APIs to manipulate Task records. You can retrieve, search, and update Task records. Notes / Custom Fields are supported. Support Sync functionality.

  • TaskList getAllTasksSync( String sessionId, String lastTouchDate )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. lastTouchDate, in "MM/dd/yyyy HH:mm:ss" format.
    OUTPUT: TaskList, an array of object of type Task.
    Used in Sync routine. Retrieve only the recently touched records (newly created, or recently updated since lastTouchDate).

  • TaskList getAllTasks( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: TaskList, an array of object of type Task. ( You should use a tool like WSDL2Java to generate Task and TaskList )

  • TaskList getAllOpenTasks( String sessionId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI
    OUTPUT: TaskList, an array of object of type Task.

  • TaskList getTasksByAssignedUser( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, return all tasks assigned to this user.
    OUTPUT: TaskList, an array of object of type Task.

  • TaskList getOpenTasksByAssignedUser( String sessionId, String userName )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. userName, return all open tasks assigned to this user.
    OUTPUT: TaskList, an array of object of type Task.

  • Task getTaskDetail( String sessionId, int taskId )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. taskId: the Task id. You can obtain the id from the previous query APIs.
    OUTPUT: a Task record, complete with basic info, plus Custom Field/Note data.

  • Task saveTaskRecord( String sessionId, Task t )
    INPUT: sessionId, obtained from SessionAuthenticatorAPI. t, the Task record.
    OUTPUT: an Task record, updated version.
    This API can be used to both update an existing task record, or create a new one. to create a new record, pass in the Task record with ID <= 0. to update, pass with a positive ID.
    The return parameter is an updated version of record passed in. In case of a Create, the new taskId and taskNumber are populated.



  • Please see here and here for some java sample code tutorials.