def METHOD_NAME(self, request: Request, organization_id, integration_id) -> HttpResponse:
    try:
        organization = Organization.objects.get_from_cache(id=organization_id)
    except Organization.DoesNotExist:
        logger.error(
            f"{PROVIDER_NAME}.webhook.invalid-organization",
            extra={"organization_id": organization_id, "integration_id": integration_id},
        )
        return HttpResponse(status=400)
    body = bytes(request.body)
    if not body:
        logger.error(
            f"{PROVIDER_NAME}.webhook.missing-body", extra={"organization_id": organization.id}
        )
        return HttpResponse(status=400)
    try:
        handler = self.get_handler(request.META["HTTP_X_EVENT_KEY"])
    except KeyError:
        logger.error(
            f"{PROVIDER_NAME}.webhook.missing-event",
            extra={"organization_id": organization.id, "integration_id": integration_id},
        )
        return HttpResponse(status=400)
    if not handler:
        return HttpResponse(status=204)
    try:
        event = json.loads(body.decode("utf-8"))
    except json.JSONDecodeError:
        logger.error(
            f"{PROVIDER_NAME}.webhook.invalid-json",
            extra={"organization_id": organization.id, "integration_id": integration_id},
            exc_info=True,
        )
        return HttpResponse(status=400)
    handler()(organization, integration_id, event)
    return HttpResponse(status=204)