async def METHOD_NAME(self, request) -> web.Response:
    """
    Get complete ledfx config.
    You may ask for a specific key/keys in the request body
    eg. "audio" will return audio config
    eg. ["audio", "melbanks"] will return audio and melbanks config
    """
    keys = set()
    if request.can_read_body:
        try:
            wanted_keys = await request.json()
        except JSONDecodeError:
            response = {
                "status": "failed",
                "reason": "JSON Decoding failed",
            }
            return web.json_response(data=response, status=400)
        if isinstance(wanted_keys, list):
            keys.update(wanted_keys)
        elif isinstance(wanted_keys, str):
            keys.add(wanted_keys)
        keys = keys & CORE_CONFIG_KEYS
    # if no keys left after filtering, or none requested, send them all
    if not keys:
        keys = CORE_CONFIG_KEYS
    response = {}
    for key in keys:
        config = self._ledfx.config.METHOD_NAME(key)
        if key == "audio":
            config = AudioInputSource.AUDIO_CONFIG_SCHEMA.fget()(config)
        elif key == "melbanks":
            config = Melbanks.CONFIG_SCHEMA(config)
        elif key == "wled_preferences":
            config = WLED_CONFIG_SCHEMA(config)
        response[key] = config
    return web.json_response(data=response, status=200)