# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ScheduledOperationId(str, enum.Enum):
    ASSETS_QUERY_DEVICES = "assets_query_devices"
    EDR_QUERY_ALERTS = "edr_query_alerts"
    EDR_QUERY_APPLICATIONS = "edr_query_applications"
    EDR_QUERY_ENDPOINTS = "edr_query_endpoints"
    EDR_QUERY_IOCS = "edr_query_iocs"
    EDR_QUERY_POSTURE_SCORE = "edr_query_posture_score"
    EDR_QUERY_THREATEVENTS = "edr_query_threatevents"
    IDENTITY_QUERY_AUDIT_LOG = "identity_query_audit_log"
    IDENTITY_QUERY_GROUPS = "identity_query_groups"
    IDENTITY_QUERY_GROUPS_ENRICHED = "identity_query_groups_enriched"
    IDENTITY_QUERY_USERS = "identity_query_users"
    IDENTITY_QUERY_USERS_ENRICHED = "identity_query_users_enriched"
    SIEM_QUERY_EVENTS = "siem_query_events"
    SIEM_QUERY_INVESTIGATIONS = "siem_query_investigations"
    VULNERABILITIES_QUERY_ASSETS = "vulnerabilities_query_assets"
    VULNERABILITIES_QUERY_FINDINGS = "vulnerabilities_query_findings"
    VULNERABILITIES_QUERY_SCANS = "vulnerabilities_query_scans"
    APPSEC_QUERY_APPLICATIONS = "appsec_query_applications"
    APPSEC_QUERY_APPLICATION_FINDINGS = "appsec_query_application_findings"
    APPSEC_QUERY_FINDINGS = "appsec_query_findings"
    _UNKNOWN = "__SCHEDULEDOPERATIONID_UNKNOWN__"
    """
    This member is used for forward compatibility. If the value is not recognized by the enum, it will be stored here, and the raw value is accessible through `.value`.
    """

    @classmethod
    def _missing_(cls, value: typing.Any) -> "ScheduledOperationId":
        unknown = cls._UNKNOWN
        unknown._value_ = value
        return unknown

    def visit(
        self,
        assets_query_devices: typing.Callable[[], T_Result],
        edr_query_alerts: typing.Callable[[], T_Result],
        edr_query_applications: typing.Callable[[], T_Result],
        edr_query_endpoints: typing.Callable[[], T_Result],
        edr_query_iocs: typing.Callable[[], T_Result],
        edr_query_posture_score: typing.Callable[[], T_Result],
        edr_query_threatevents: typing.Callable[[], T_Result],
        identity_query_audit_log: typing.Callable[[], T_Result],
        identity_query_groups: typing.Callable[[], T_Result],
        identity_query_groups_enriched: typing.Callable[[], T_Result],
        identity_query_users: typing.Callable[[], T_Result],
        identity_query_users_enriched: typing.Callable[[], T_Result],
        siem_query_events: typing.Callable[[], T_Result],
        siem_query_investigations: typing.Callable[[], T_Result],
        vulnerabilities_query_assets: typing.Callable[[], T_Result],
        vulnerabilities_query_findings: typing.Callable[[], T_Result],
        vulnerabilities_query_scans: typing.Callable[[], T_Result],
        appsec_query_applications: typing.Callable[[], T_Result],
        appsec_query_application_findings: typing.Callable[[], T_Result],
        appsec_query_findings: typing.Callable[[], T_Result],
        _unknown_member: typing.Callable[[str], T_Result],
    ) -> T_Result:
        if self is ScheduledOperationId.ASSETS_QUERY_DEVICES:
            return assets_query_devices()
        if self is ScheduledOperationId.EDR_QUERY_ALERTS:
            return edr_query_alerts()
        if self is ScheduledOperationId.EDR_QUERY_APPLICATIONS:
            return edr_query_applications()
        if self is ScheduledOperationId.EDR_QUERY_ENDPOINTS:
            return edr_query_endpoints()
        if self is ScheduledOperationId.EDR_QUERY_IOCS:
            return edr_query_iocs()
        if self is ScheduledOperationId.EDR_QUERY_POSTURE_SCORE:
            return edr_query_posture_score()
        if self is ScheduledOperationId.EDR_QUERY_THREATEVENTS:
            return edr_query_threatevents()
        if self is ScheduledOperationId.IDENTITY_QUERY_AUDIT_LOG:
            return identity_query_audit_log()
        if self is ScheduledOperationId.IDENTITY_QUERY_GROUPS:
            return identity_query_groups()
        if self is ScheduledOperationId.IDENTITY_QUERY_GROUPS_ENRICHED:
            return identity_query_groups_enriched()
        if self is ScheduledOperationId.IDENTITY_QUERY_USERS:
            return identity_query_users()
        if self is ScheduledOperationId.IDENTITY_QUERY_USERS_ENRICHED:
            return identity_query_users_enriched()
        if self is ScheduledOperationId.SIEM_QUERY_EVENTS:
            return siem_query_events()
        if self is ScheduledOperationId.SIEM_QUERY_INVESTIGATIONS:
            return siem_query_investigations()
        if self is ScheduledOperationId.VULNERABILITIES_QUERY_ASSETS:
            return vulnerabilities_query_assets()
        if self is ScheduledOperationId.VULNERABILITIES_QUERY_FINDINGS:
            return vulnerabilities_query_findings()
        if self is ScheduledOperationId.VULNERABILITIES_QUERY_SCANS:
            return vulnerabilities_query_scans()
        if self is ScheduledOperationId.APPSEC_QUERY_APPLICATIONS:
            return appsec_query_applications()
        if self is ScheduledOperationId.APPSEC_QUERY_APPLICATION_FINDINGS:
            return appsec_query_application_findings()
        if self is ScheduledOperationId.APPSEC_QUERY_FINDINGS:
            return appsec_query_findings()
        return _unknown_member(self._value_)
