def METHOD_NAME(self) -> Union[str, Tuple[str, Dict[str, int]]]:
    start_time = self._get_param("StartTime")
    end_time = self._get_param("EndTime")
    if start_time is None:
        msg = "Parameter StartTime is missing"
        return (
            json.dumps({"__type": "MissingParameter", "message": msg}),
            dict(status=400),
        )
    if end_time is None:
        msg = "Parameter EndTime is missing"
        return (
            json.dumps({"__type": "MissingParameter", "message": msg}),
            dict(status=400),
        )
    filter_expression = self._get_param("FilterExpression")
    try:
        start_time = datetime.datetime.fromtimestamp(int(start_time))
        end_time = datetime.datetime.fromtimestamp(int(end_time))
    except ValueError:
        msg = "start_time and end_time are not integers"
        return (
            json.dumps({"__type": "InvalidParameterValue", "message": msg}),
            dict(status=400),
        )
    except Exception as err:
        return (
            json.dumps({"__type": "InternalFailure", "message": str(err)}),
            dict(status=500),
        )
    try:
        result = self.xray_backend.get_trace_summary(
            start_time, end_time, filter_expression
        )
    except AWSError as err:
        raise err
    except Exception as err:
        return (
            json.dumps({"__type": "InternalFailure", "message": str(err)}),
            dict(status=500),
        )
    return json.dumps(result)