async def METHOD_NAME(self, virtual_id) -> web.Response:
    """
    Get a virtual's full config
    """
    virtual = self._ledfx.virtuals.METHOD_NAME(virtual_id)
    if virtual is None:
        response = {
            "status": "failed",
            "reason": f"Virtual with ID {virtual_id} not found",
        }
        return web.json_response(data=response, status=404)
    response = {"status": "success"}
    response[virtual.id] = {
        "config": virtual.config,
        "id": virtual.id,
        "is_device": virtual.is_device,
        "auto_generated": virtual.auto_generated,
        "segments": virtual.segments,
        "pixel_count": virtual.pixel_count,
        "active": virtual.active,
        "effect": {},
    }
    # TODO: protect from DummyEffect, future consider side effects
    if virtual.active_effect and not isinstance(
        virtual.active_effect, DummyEffect
    ):
        effect_response = {}
        effect_response["config"] = virtual.active_effect.config
        effect_response["name"] = virtual.active_effect.name
        effect_response["type"] = virtual.active_effect.type
        response[virtual.id]["effect"] = effect_response
    return web.json_response(data=response, status=200)