1String salesOrg = '0001';
2String endpointName = 'UPDATE_PROMOTION';
3Id promoId = 'promotionId';
4cgcloud__Promotion__c promo = [SELECT Id, cgcloud__Anchor_Account__c, cgcloud__Date_From__c, cgcloud__Date_Thru__c, cgcloud__Delivery_Date_From__c, cgcloud__Delivery_Date_Thru__c, cgcloud__Placement_Date_From__c, cgcloud__Placement_Date_Thru__c, cgcloud__Commit_Date__c, cgcloud__Promotion_Template__c FROM cgcloud__Promotion__c WHERE Id=:promoId LIMIT 1];
5String payload = JSON.serialize(new Map<String, Object>{
6 'promotionid'=>promo.Id,
7 'phase'=>'Planning',
8 'active'=>true,
9 'version'=>2,
10 'isfrozen'=>false,
11 'accoundsetid'=>null,
12 'accountid'=>promo.cgcloud__Anchor_Account__c,
13 'commitdate'=>Datetime.newInstanceGmt(promo.cgcloud__cgcloud__Commit_Date__c.year(), promo.cgcloud__cgcloud__Commit_Date__c.month(), promo.cgcloud__cgcloud__Commit_Date__c.day()).getTime(),
14 'datefrom'=>Datetime.newInstanceGmt(promo.cgcloud__cgcloud__Date_From__c.year(), promo.cgcloud__Date_From__c.month(), promo.cgcloud__Date_From__c.day()).getTime(),
15 'datethru'=>Datetime.newInstanceGmt(promo.cgcloud__Date_Thru__c.year(), promo.cgcloud__Date_Thru__c.month(), promo.cgcloud__Date_Thru__c.day()).getTime(),
16 'manualcalculationinput'=>new Map<String, Object>(),
17 'instoredatefrom'=>Datetime.newInstanceGmt(promo.cgcloud__Placement_Date_From__c.year(), promo.cgcloud__Placement_Date_From__c.month(), promo.cgcloud__Placement_Date_From__c.day()).getTime(),
18 'instoredatethru'=>Datetime.newInstanceGmt(promo.cgcloud__Placement_Date_Thru__c.year(), promo.cgcloud__Placement_Date_Thru__c.month(), promo.cgcloud__Placement_Date_Thru__c.day()).getTime(),
19 'shipmentdatefrom'=>Datetime.newInstanceGmt(promo.cgcloud__Delivery_Date_From__c.year(), promo.cgcloud__Delivery_Date_From__c.month(), promo.cgcloud__Delivery_Date_From__c.day()).getTime(),
20 'shipmentdatethru'=>Datetime.newInstanceGmt(promo.cgcloud__Delivery_Date_Thru__c.year(), promo.cgcloud__Delivery_Date_Thru__c.month(), promo.cgcloud__Delivery_Date_Thru__c.day()).getTime(),
21 'promotiontemplateid'=>promo.cgcloud__Promotion_Template__c,
22 'salesorg'=>salesOrg,
23 'aggregationcategory'=>null,
24 'calculationmode' => 'Writeback',
25 'firstdayofweek' => 1,
26 'firstweekofyear' => 1,
27 'productgrouplevels' => new List<String>{'Category'}
28});
29<namespace>.OffPlatformCallout request = new <namespace>.OffPlatformCallout(endpointName, salesOrg);
30<namespace>.OffPlatformCalloutResponse response = request.execute(
31 <namespace>.TransactionHandler.getTransactionIdentifier(),
32 null,
33 payload
34);
35system.debug(JSON.serialize(response));