You need to sign in to do that
Don't have an account?
Calling SF existing Rest API's within apex.
I am trying to find ways to post Chatter private message to user.
Since there is no apex code directly to post Chatter private message to user, figured out there is a way in the REST APIs.
(Ref: http://www.salesforce.com/us/developer/docs/chatterapi/salesforce_chatter_rest_api.pdf)
/services/data/v24.0/chatter/users/me/messages?recipients=005D0000001GOYpIAO,
005D0000001GbdHIAS&Are+we+ready+for+next+week's+customer+meeting?
My question is, how do i call this in apex (Rest API's POST call)?
Since we are using internal salesforce rest api within the system, I am not sure if we should we use OAuth.
Can you please tell me how to call SF Rest api's using Apex?
Also, you don't have to perform OAuth, in Apex you already have a legal Session ID you can use instead. Add the following HTTP header to all your requests and they should work fine:
All Answers
You can use the HttpRequest/HttpResponse classes in Apex to call out to REST. There is info near the bottom of here: http://wiki.developerforce.com/page/Apex_Web_Services_and_Callouts Make sure the site you call into is enabled in your Remote Sites settings. Apex has a new JSON processor you can use to process the JSON responses : http://developer.force.com/releases/release/Winter12/JSON+Support+in+Apex
Also, you don't have to perform OAuth, in Apex you already have a legal Session ID you can use instead. Add the following HTTP header to all your requests and they should work fine:
Thanks Chris! That really helped.
But in Remote Site Settings we have to give our instance name like below:
https://<instancename>.salesforce.com
If i give generic test instance like below, it gives an error - Unauthorized Endpoint
https://test.salesforce.com
Is there any way/setting so that my Remote Site Setting can have the generic site name like https://test.salesforce.com
I believe that test.salesforce.com may just be a login server. When you actually log into it, are you redirected to a different server? If so, use that server instead.