Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleSample Apex genericQuery
@RestResource(urlMapping='/jtelACD/getEmailTasks')
global with sharing class JTELACD_GetEmailTasks {
    // Class to decode the parameters
    public class GenericQueryParams {
        public String Param1;
        public String Param2;
        public String Param3;
        public String Param4;
        public String Query;
    }
    
    @HttpPost
    global static Stringvoid doPost() {
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        res.addHeader('Content-Type', 'application/json');
        //
 Deserialize the JSON (not used in this example// -Deserialize just for illustration purposes)the JSON
        GenericQueryParams genericQueryParams = (GenericQueryParams) System.JSON.deserialize( req.requestBody.toString(), GenericQueryParams.class );
 
        //List<Task> Findtasks next task to schedule in jtel system.
        // Note - the exact logic of this will be dependent on the Salesforce installation - this is JUST AN EXAMPLE.
        List<Task> tasks = [= [
            SELECT FIELDS(STANDARD),
                                   TYPEOF Who
                                         WHEN Lead THEN FirstName, LastName, Email
                                         WHEN Contact THEN FirstName, LastName, Email
                                   END
                          FROM Task
                          WHERE Status = 'Inbound Email'
                          WITH USER_MODE
            LIMIT    1
          LIMIT 1];
                          
        if ( tasks.size() >= 0 ) {
            res.statusCode = 200;
      
      res.responseBody      return = Blob.valueOf(JSON.serialize( tasks[0] )));
            return;
        }

        res.statusCode = 404;
        return null res.responseBody = Blob.valueOf('{"error":"No task found"}');
    }
}

The second example sets Task objects to "In Progress" in Salesforce:

Code Block
titleSample Apex genericQuery
@RestResource(urlMapping='/jtelACD/setEmailTaskStatus')
global with sharing class JTELACD_SetEmailTaskStatus {
 
    // Class to decode the parameters
    public class GenericQueryParams {
        public String Param1;
        public String Param2;
        public String Param3;
        public String Param4;
        public String Query;
    }
    
 
    @HttpPost
    global static Stringvoid doPost() {

        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;

   
      res.addHeader('Content-Type', 'application/json');

        // Deserialize the JSON
        GenericQueryParams genericQueryParams = (GenericQueryParams) System.JSON.deserialize( req.requestBody.toString(), GenericQueryParams.class );

        if (String.isBlank(genericQueryParams.Param1)) {
            res.statusCode = 400;
            Task task = [res.responseBody = Blob.valueOf('{"error":"Missing task id"}');
            return;
        }

        if (String.isBlank(genericQueryParams.Param2)) {
            res.statusCode = 400;
            res.responseBody = Blob.valueOf('{"error":"Missing status"}');
            return;
        }

        List<Task> tasks = [
            SELECT FIELDS(STANDARD)
            FROM Task
            WHERE idId = :genericQueryParams.Param1
            LIMIT 1
        ];

        if (tasks.isEmpty()) {
            res.statusCode = 404;
            res.responseBody = genericQueryParams.Param1Blob.valueOf('{"error":"Task not found"}');
            return;
        }

        Task task = tasks[0];
        task.Status = genericQuerygenericQueryParams.Param2;

        update task;

        res.statusCode = 200;
        res.responseBody return= SystemBlob.valueOf(JSON.serialize(task));
    }
}

CURL Test

First of all, obtain an OAUTH Token, see Testing with CURL.

...