I am trying to expose a REST API so the field permission of permission set(s) can be updated. I am trying to use MetadataService as below:
@RestResource(urlMapping='/updateFieldPermission')
global class UtilitiesAPI {
@HttpPost
global static String updateFieldPermission(List<FieldPermisionPutRequestWrapper> fieldPermisionPutRequestWrapperList){
try{
System.debug('Started updateFieldPermission');
MetadataService.MetadataPort service = new MetadataService.MetadataPort();
Map<String, FieldAccess> objectFieldToFieldAccessMap = new Map<String, FieldAccess>();
service.SessionHeader = new MetadataService.SessionHeader_element();
service.SessionHeader.sessionId = UserInfo.getSessionId();
return null;
}
catch(Exception exceptionObject){
System.debug('Exception occurred. Error message=' + exceptionObject.getMessage());
System.debug('Stack trace=' + exceptionObject.getStackTraceString());
return null;
}
}
}
But getting error like this:
16:23:51.781 Starting SFDX: Deploy Source to Org
=== Deploy Errors
PROJECT PATH ERRORS
─────────────────────────────────────────────── ───────────────────────────────────────────────────────────
force-app\main\default\classes\UtilitiesAPI.cls Invalid type: MetadataService.MetadataPort (7:13)
force-app\main\default\classes\UtilitiesAPI.cls Invalid type: MetadataService.SessionHeader_element (9:37)
force-app\main\default\classes\UtilitiesAPI.cls Variable does not exist: service.SessionHeader (10:13)
force-app\main\default\classes\UtilitiesAPI.cls Variable does not exist: service (9:13)
16:23:54.589 ended SFDX: Deploy Source to Org
Can someone please help me know what I am missing here or should try other approach?