• kathiravan R 1
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 2
    Replies
Here is my code,

@RestResource (urlMapping='/rateupdate/test/*')
global class SampleRESTService {
    @HttpPost
    global static void doPost(){
        
        
        RestRequest req = RestContext.request;
        
        Map<String, Object> body = new Map<String, Object>(); 
        String cur = '';
        Double rate = 0.00;
        String id;
        String jsonBody = req.requestBody.toString();
        
        if (!String.isBlank(jsonBody)) {
            body = (Map<String, Object>)JSON.deserializeUntyped(jsonBody);
            if (body.containsKey('currency')) {
                cur = (String)body.get('currency');
                CurrencyType ct =  [Select id,IsoCode,ConversionRate From CurrencyType where isActive=true And IsoCode=:cur];
                system.debug('currencyType====='+ct);
                id = ct.Id;
            }
            
            if (body.containsKey('rate')) {
                rate = (Double)body.get('rate');
             }
        
        
        }
   
        Http h = new Http();
        HttpRequest req1 = new HttpRequest();
        req1.setEndpoint(URL.getSalesforceBaseUrl().toExternalForm() + '/services/data/v28.0/sobjects/CurrencyType/'+id+'?_HttpMethod=PATCH');
        
        Map<String,double> rateMap =new Map<String,double>();
        
        rateMap.put('ConversionRate',rate);
        
        String body1=JSON.serialize(rateMap);
        system.debug('body==='+JSON.serialize(rateMap));
        
        req1.setBody(body1);  
        req1.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
        req1.setHeader('Content-Type', 'application/json');
        req1.setMethod('POST');
        HttpResponse res = h.send(req1);
        
        system.debug('response====='+res);
     
    }

}

Json i am posting from workbench:;

{
    "currency": "USD", 
    "rate": 9.00
                
}