Jagan
Jagan

Reputation: 620

Querying Data from SUGARCRM

I have SugarCRM trail account. I can able to get Authenticate and get the AccessToken by the following url.

https://xxxxxxx.trial.sugarcrm.eu/rest/v10/oauth2/token

Method : POST POST Data : postData: { "grant_type":"password", "client_id":"sugar", "client_secret":"", "username":"admin", "password":"Admin123", "platform":"base" }

Code I used to get the AccessToken

public static String getAccessToken() throws JSONException {
    HttpURLConnection connection = null;

    JSONObject requestBody = new JSONObject();
    requestBody.put("grant_type", "password");
    requestBody.put("client_id", CLIENT_ID);
    requestBody.put("client_secret", CLIENT_SECRET);
    requestBody.put("username", USERNAME);
    requestBody.put("password", PASSWORD);
    requestBody.put("platform", "base");

    try {
        URL url = new URL(HOST_URL + AUTH_URL);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setUseCaches(false);
        connection.setDoOutput(true);
        connection.connect();

        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
        out.write(requestBody.toString());
        out.close();

        int responseCode = connection.getResponseCode();

        BufferedReader in = new BufferedReader(
                new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        JSONObject jObject = new JSONObject(response.toString());
        if(!jObject.has("access_token")){
            return null;
        }
        String accessToken = jObject.getString("access_token");

        return accessToken;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

Now I have retrive Leads from CRM using rest API I can not able to find the appropriate method and Url to do the thing.

I can see the list rest of API's from /help but I cant understand what should be my module name and what I have to :record and how do I pass my access token for authentication.

Can anyone please help me?

Upvotes: 2

Views: 371

Answers (2)

Reisclef
Reisclef

Reputation: 2148

You need to include your retrieved token into an OAuth-Token header for subsequent requests, and then just use the module name as the endpoint i.e. in your case: "rest/v10/Leads" and call the GET method to retrieve them. Try something akin to this:

    String token = getAccessToken();
    HttpURLConnection connection = null;
    try {

        URL url = new URL(HOST_URL + "/rest/v10/Leads");
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("OAuth-Token", token);
        connection.setUseCaches(false);
        connection.setDoOutput(true);
        connection.connect();


        int responseCode = connection.getResponseCode();

        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        JSONObject jObject = new JSONObject(response.toString());

        System.out.println(jObject);


    } catch (Exception e) {
        e.printStackTrace();
    }

In the case you want to filter it down to specific id's to cut down on the amount of returned data, you can specify it after the module name i.e. "rest/v10/Leads/{Id}"

Upvotes: 2

osk
osk

Reputation: 312

The module name is simply the module you which to fetch records from, so in your case you'll want to do a GET request to rest/v10/Leads for a list of Leads. If you want to fetch a specific Lead you replace :record with the id of a Lead - for example: GET rest/v10/Leads/LEAD-ID-HERE

SugarCRM's documentation has a lot of relevant information that might not be included in /help plus working examples.

http://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.8/Integration/Web_Services/v10/Endpoints/module_GET/

http://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.8/Integration/Web_Services/v10/Examples/PHP/How_to_Fetch_Related_Records/

Upvotes: 2

Related Questions