def send_findings(
    self,
    findings: list[Finding] = None,
    project_key: str = None,
    issue_type: str = None,
):
    """
    Send the findings to Jira
    Args:
        - findings: The findings to send
        - project_key: The project key
        - issue_type: The issue type
    Raises:
        - JiraRefreshTokenError: Failed to refresh the access token
        - JiraRefreshTokenResponseError: Failed to refresh the access token, response code did not match 200
        - JiraCreateIssueError: Failed to create an issue in Jira
        - JiraSendFindingsResponseError: Failed to send the findings to Jira
    """
    try:
        access_token = self.get_access_token()
        if not access_token:
            raise JiraNoTokenError(
                message="No token was found",
                file=os.path.basename(__file__),
            )
        projects = self.get_projects()
        if project_key not in projects:
            logger.error("The project key is invalid")
            raise JiraInvalidProjectKeyError(
                message="The project key is invalid",
                file=os.path.basename(__file__),
            )
        available_issue_types = self.get_available_issue_types(project_key)
        if issue_type not in available_issue_types:
            logger.error("The issue type is invalid")
            raise JiraInvalidIssueTypeError(
                message="The issue type is invalid", file=os.path.basename(__file__)
            )
        headers = {
            "Authorization": f"Bearer {access_token}",
            "Content-Type": "application/json",
        }
        for finding in findings:
            status_color = self.get_color_from_status(finding.status.value)
            adf_description = self.get_adf_description(
                check_id=finding.metadata.CheckID,
                check_title=finding.metadata.CheckTitle,
                severity=finding.metadata.Severity.value.upper(),
                status=finding.status.value,
                status_color=status_color,
                status_extended=finding.status_extended,
                provider=finding.metadata.Provider,
                region=finding.region,
                resource_uid=finding.resource_uid,
                resource_name=finding.resource_name,
                risk=finding.metadata.Risk,
                recommendation_text=finding.metadata.Remediation.Recommendation.Text,
                recommendation_url=finding.metadata.Remediation.Recommendation.Url,
            )
            payload = {
                "fields": {
                    "project": {"key": project_key},
                    "summary": f"[Prowler] {finding.metadata.Severity.value.upper()} - {finding.metadata.CheckID} - {finding.resource_uid}",
                    "description": adf_description,
                    "issuetype": {"name": issue_type},
                }
            }
            response = requests.post(
                f"https://api.atlassian.com/ex/jira/{self.cloud_id}/rest/api/3/issue",
                json=payload,
                headers=headers,
            )
            if response.status_code != 201:
                response_error = f"Failed to send finding: {response.status_code} - {response.json()}"
                logger.warning(response_error)
                raise JiraSendFindingsResponseError(
                    message=response_error, file=os.path.basename(__file__)
                )
            else:
                logger.info(f"Finding sent successfully: {response.json()}")
    except JiraRefreshTokenError as refresh_error:
        raise refresh_error
    except JiraRefreshTokenResponseError as response_error:
        raise response_error
    except Exception as e:
        logger.error(f"Failed to send findings: {e}")
        raise JiraCreateIssueError(
            message="Failed to create an issue in Jira",
            file=os.path.basename(__file__),
        )