---
schema_version: "1"
id: dd258d8390ea4f5deef7ee2928f4ee03bd3067c33fc4d4b19acbba617aeff296
title: Get Insurance Rating Input Action
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/insurance_developer_guide/actions_obj_get_insurance_rating_input.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.insurance_developer_guide.meta/insurance_developer_guide/actions_obj_get_insurance_rating_input.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 119ee27cf012a388eb6bac6c5f13e40031e64d47c8e03145d09b7e2891e3b557
description: Get the rating input data for the insurance products to support the pricing calculations and coverage analysis.
---
# Get Insurance Rating Input Action

Get the rating input data for the insurance products to support the pricing calculations and coverage analysis.

This action is available in API version 66.0 and later.

## Supported REST HTTP Methods

**URI**: /services/data/vXX.X/actions/standard/getInsuranceRatingInput

Where XX.X is the latest API version.

**Formats**: JSON, XML

**HTTP Methods**: POST

**Authentication**: Authorization: Bearer TOKEN

Where TOKEN is your OAuth access token.

## Inputs

| Input | Type | Description |
| --- | --- | --- |
| additionalFields | string | JSON string of additional fields to include in the rating context. |
| effectiveDate | date | Effective date for the rating calculation. |
| productIds | string | Required. IDs of the products to generate the rating input for. |
| ratingDate | date | Date to use for rating calculations. |
| rootProductCodes | string | List of root product codes. |
| salesTransactionTypeId | string | ID of the sales transaction type. |
| transactionType | string | Name of the transaction type. |

## Outputs

| Output | Type | Description |
| --- | --- | --- |
| getRatingInputOutputRep | Apex-defined | An Apex ConnectApi\_\_GetRatingInputOutputRep record that contains the details of the rating input for insurance products. |

## Example

**POST**

This sample request is for the Get Insurance Rating Input action.

{
  "inputs": \[
    {
      "additionalFields": {
        "QuoteAccount": "001ZM000002ZNnBYAW"
      },
      "effectiveDate": "2024-01-01",
      "productIds": \[
        "01tRM0000000001"
      \],
      "ratingDate": "2024-01-01",
      "rootProductCodes": \[
        "ProductCode1"
      \],
      "salesTransactionTypeId": "0k5RM0000000001",
      "transactionType": "NewBusiness"
    }
  \]
}

This is a sample request to call this invocable action from Apex code.

// Sample implementation to call insurance get rating input invocable action in Apex
public class InsuranceGetRatingInputApexService implements Callable {
    
    private static final String GET\_RATING\_INPUT\_METHOD = 'getRatingInput';
    
    /\*\*
     \* @description Implementation of Callable interface for OmniStudio
     \* @param action Method name to invoke
     \* @param args Map containing input, output, and options
     \* @return Object result of the method invocation
     \*/
    public Object call(String action, Map<String, Object> args) {
        System.debug('InsuranceGetRatingInputApexService: call ' + action);
        
        Map<String, Object> input = (Map<String, Object>) args.get('input');
        Map<String, Object> output = (Map<String, Object>) args.get('output');
        Map<String, Object> options = (Map<String, Object>) args.get('options');

        return invokeMethod(action, input, output, options);
    }     
        // Invoke methods, and if the method is not supported, it will be ignored.
    public Boolean invokeMethod(
        String methodName,
        Map<String, Object> inputs,
        Map<String, Object> output,
        Map<String, Object> options
    ) {
        Boolean response = false;
        
        System.debug('Insurance Get Rating Input Apex Service - Method: ' + methodName);
        
        try {
            if (GET\_RATING\_INPUT\_METHOD.equals(methodName)) {
                response = getRatingInput(inputs, output, options);
            } else {
                throw new UnsupportedOperationException('this method name is incorrect or not supported');
            }
        } catch (Exception e) {
            response = false;
            output.put('success', false);
            output.put('errorMessage', 'Exception occurred: ' + e.getMessage());
            System.debug(LoggingLevel.ERROR, 'Exception in invokeMethod: ' + methodName + ', Error: ' + e.getMessage());
            System.debug(LoggingLevel.ERROR, 'Stack trace: ' + e.getStackTraceString());
        }
        System.debug('Output from invoke:' + output);
        return response;
    }
    
    private Boolean getRatingInput(Map<String, Object> inputs, Map<String, Object> output, Map<String, Object> options) {
        
        Map<String, Object> getRatingInputPayload = inputs;
        // Handle null input
        if (getRatingInputPayload == null) {
            output.put('success', false);
            output.put('errorMessage', 'ratingInput is required in the payload for rating');
            output.put('errorType', 'VALIDATION\_ERROR');
            return false;
        }
        System.debug('Create Rating Input: ' + JSON.serialize(getRatingInputPayload));
        
        try {
            System.debug('Calling Invocable Action: getInsuranceRatingInput');

            // Create and configure the invocable action
            Invocable.Action action = Invocable.Action.createStandardAction('getInsuranceRatingInput');
            
            // productIds is required
            setInvocationParameter(action, getRatingInputPayload, 'productIds', true);

            // salesTransactionTypeId is optional    
            setInvocationParameter(action, getRatingInputPayload, 'salesTransactionTypeId', false);
            
            // transactionType is optional    
            setInvocationParameter(action, getRatingInputPayload, 'transactionType', false);
            
            // effectiveDate is optional    
            setInvocationParameter(action, getRatingInputPayload, 'effectiveDate', false);
            
            // ratingDate is optional    
            setInvocationParameter(action, getRatingInputPayload, 'ratingDate', false);
            
            // rootProductCodes is optional
            setInvocationParameter(action, getRatingInputPayload, 'rootProductCodes', true);

            // additionalFields is optional, but to be serialized
            setInvocationParameter(action, getRatingInputPayload, 'additionalFields', true);
            
            // Execute the action
            List<Invocable.Action.Result> results = action.invoke();
            
            if (results != null && !results.isEmpty()) {
                Invocable.Action.Result result = results\[0\];
                System.debug('IA result: ' + JSON.serialize(result));

                if (result.isSuccess()) {
                    System.debug('Get Rating Input created successfully from Invocable Action');
                    output.put('output', result.getOutputParameters());
                    
                    // Extract key information from the result
                    Map<String, Object> outputParams = result.getOutputParameters();
                    if (outputParams != null) {
                        if (outputParams.containsKey('getRatingInputOutputRep')) {
                            output.put('getRatingInputOutputRep', outputParams.get('getRatingInputOutputRep'));
                        }
                        System.debug('Rating Input data extracted: ' + outputParams);
                    }
                    List<Invocable.Action.Error> actionErrors = result.getErrors();
                    if (actionErrors != null && !actionErrors.isEmpty()) {
                        output.put('success', false);
                        output.put('error', result.getErrors());
                        return false;
                    }
                    output.put('success', true);
                    return true;
                    
                } else {
                    // Action failed - get error details
                    List<Invocable.Action.Error> actionErrors = result.getErrors();
                    String errorMessage = 'Get Rating Input Invocable Action failed';
                    
                    if (actionErrors != null && !actionErrors.isEmpty()) {
                        List<String> errorMessages = new List<String>();
                        List<Map<String, Object>> errorDetailsList = new List<Map<String, Object>>();
                        
                        for (Invocable.Action.Error actionError : actionErrors) {
                            errorMessages.add(actionError.getMessage());
                            errorDetailsList.add(new Map<String, Object>{
                                'message' => actionError.getMessage(),
                                'code' => actionError.getCode()
                            });
                        }
                        errorMessage = String.join(errorMessages, '; ');
                        output.put('actionErrors', errorDetailsList);
                    }
                    output.put('success', false);
                    output.put('errorMessage', errorMessage);

                    System.debug(LoggingLevel.ERROR, 'Get Rating Input Invocable Action failed: ' + errorMessage);
                    return false;
                }
                
            } else {
                output.put('success', false);
                output.put('errorMessage', 'Get Rating Input Invocable Action returned null or empty results');
                System.debug(LoggingLevel.WARN, 'Get Rating Input Invocable Action returned null/empty results');
            }
            return false;
            
        } catch (Exception e) {
            output.put('success', false);
            output.put('error', e.getMessage());
            return false;
        }
    } 
    
    private void setInvocationParameter(Invocable.Action action, Map<String, Object> quotePayload, String inputAttribute, boolean serializeJSON) {
        if (quotePayload.containsKey(inputAttribute) && quotePayload.get(inputAttribute) != null) {
            System.debug('InsuranceGetRatingInputApexService::' + inputAttribute + ': ' + JSON.serialize(quotePayload.get(inputAttribute)));
            if (serializeJSON) {
                action.setInvocationParameter(inputAttribute, JSON.serialize(quotePayload.get(inputAttribute)));
            } else {
                action.setInvocationParameter(inputAttribute, quotePayload.get(inputAttribute));
            }
        } else {
            System.debug('Payload does not contain attribute: ' + inputAttribute);
        }
    }
}

This sample response is for the Get Insurance Rating Input action.

\[
  {
    "actionName": "getInsuranceRatingInput",
    "errors": null,
    "invocationId": null,
    "isSuccess": true,
    "outputValues": {
      "isSuccess": true,
      "getRatingInputOutputRep": {
        "ratingInputs": \[
          {
            "additionalFields": {},
            "attributes": {},
            "instanceKeys": \[
              "Key1"
            \],
            "productCode": "ProductCode1"
          }
        \],
        "success": true,
        "message": "successful"
      },
      "errorsList": \[\]
    },
    "sortOrder": -1,
    "version": 1
  }
\]