def METHOD_NAME(self, path, query_string, payload):
    if payload and payload['state'] == 'alerting':
        return [parse_grafana(query_string, payload, match) for match in payload.get('evalMatches', [])]
    elif payload and payload['state'] == 'ok' and payload.get('ruleId'):
        try:
            query = qb.alerts.from_params(MultiDict([('attributes.ruleId', str(payload['ruleId']))]))
            existingAlerts = Alert.find_all(query)
        except Exception as e:
            raise ApiError(str(e), 500)
        alerts = []
        for updateAlert in existingAlerts:
            updateAlert.severity = alarm_model.DEFAULT_NORMAL_SEVERITY
            updateAlert.status = 'closed'
            try:
                alert = process_alert(updateAlert)
            except RejectException as e:
                raise ApiError(str(e), 403)
            except Exception as e:
                raise ApiError(str(e), 500)
            alerts.append(alert)
        return alerts
    else:
        raise ApiError('no alerts in Grafana notification payload', 400)