def normalize(name, value, action_params=None, auto_dict=False):
            """The desired type is contained in the action meta-data, so we can look that up
            and call the desired "caster" function listed in the "transformer" dict
            """
            action_params = action_params or action.parameters

            # By default, this method uses a parameter which is defined in the action metadata.
            # This method assume to be called recursively for parsing values in an array of objects
            # type value according to the nested action metadata definition.
            #
            # This is a best practice to pass a list value as default argument to prevent
            # unforeseen consequence by being created a persistent object.

            # Users can also specify type for each array parameter inside an action metadata
            # (items: type: int for example) and this information is available here so we could
            # also leverage that to cast each array item to the correct type.
            param_type = get_param_type(name, action_params)
            if param_type == "array" and name in action_params:
                return transformer[param_type](
                    value, action_params[name], auto_dict=auto_dict
                )
            elif param_type:
                return transformer[param_type](value)

            return value
The desired type is contained in the action meta-data, so we can look that up
            and call the desired "caster" function listed in the "transformer" dict
            
st2client/st2client/commands/action.py