def list_params(
    client,
    file_=None,
    name=None,
    type_=None,
    no_datum=None,
    inc_unnamed=None,
    no_comp=None,
    param=None,
    value=None,
    encoded=None,
):
    """List feature parameters that match criteria.

    Args:
        client (obj):
            creopyson Client.
        `file_` (str, optional):
            File name. Defaults is the currently active model.
        name (str|int, optional):
            str: Feature name (wildcards allowed: True).
            int: Feature ID.
            Defaults: All features are listed.
        `type_` (str, optional):
            Feature type patter (wildcards allowed: True).
            Defaults: All feature types.
        no_datum (boolean, optional):
            Whether to exclude datum-type features from the list;
            these are COORD_SYS, CURVE, DATUM_AXIS, DATUM_PLANE, DATUM_POINT,
            DATUM_QUILT, and DATUM_SURFACE features.
            Defaults is False.
        inc_unnamed (boolean, optional):
            Whether to include unnamed features in the list.
            Defaults is False.
        no_comp (boolean, optional):
            Whether to include component-type features in the list.
            Defaults is False.
        param (str|list:str, optional):
            Parameter name; (wildcards allowed: True)
            if empty all parameters are listed.
        value (str, optional):
            Parameter value filter (wildcards allowed: True).
            Defaults is no filter.
        encoded (boolean, optional):
            Whether to return the values Base64-encoded.
            Defaults is False.

    Returns:
        (list:dict): List of parameter information.
            name (str):
                Parameter nam.
            value (depends on data type):
                Parameter value.
            type (string):
                Data type. Valid values: STRING, DOUBLE, INTEGER, BOOL, NOTE.
            designate (boolean):
                Value is designated.
            encoded (boolean):
                Value is Base64-encoded.
            owner_name (str):
                Owner Name.
            owner_id (int):
                Owner ID.
            owner_type (str):
                Owner type.
            description (str):
                List of parameter information.

    """
    data = {}
    if file_ is not None:
        data["file"] = file_
    else:
        active_file = client.file_get_active()
        if active_file:
            data["file"] = active_file["file"]
    if name:
        if isinstance(param, (str)):
            data["name"] = name
        elif isinstance(param, (list)):
            data["feat_id"] = name
    if type_:
        data["type"] = type_
    if no_datum:
        data["no_datum"] = no_datum
    if inc_unnamed:
        data["inc_unnamed"] = inc_unnamed
    if no_comp:
        data["no_comp"] = no_comp
    if param:
        if isinstance(param, (str)):
            data["param"] = param
        elif isinstance(param, (list)):
            data["params"] = param
    if value:
        data["value"] = value
    if encoded:
        data["encoded"] = encoded
    return client._creoson_post("feature", "list_params", data, "paramlist")