# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities

__all__ = ['SentryIssueAlertArgs', 'SentryIssueAlert']

@pulumi.input_type
class SentryIssueAlertArgs:
    def __init__(__self__, *,
                 action_match: pulumi.Input[str],
                 actions: pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]],
                 conditions: pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]],
                 filter_match: pulumi.Input[str],
                 frequency: pulumi.Input[int],
                 organization: pulumi.Input[str],
                 project: pulumi.Input[str],
                 environment: Optional[pulumi.Input[str]] = None,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 name: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a SentryIssueAlert resource.
        :param pulumi.Input[str] action_match: Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] actions: List of actions.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] conditions: List of conditions.
        :param pulumi.Input[str] filter_match: Trigger actions if `all`, `any`, or `none` of the specified filters match.
        :param pulumi.Input[int] frequency: Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        :param pulumi.Input[str] organization: The slug of the organization the issue alert belongs to.
        :param pulumi.Input[str] project: The slug of the project to create the issue alert for.
        :param pulumi.Input[str] environment: Perform issue alert in a specific environment.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] filters: List of filters.
        :param pulumi.Input[str] name: The issue alert name.
        """
        pulumi.set(__self__, "action_match", action_match)
        pulumi.set(__self__, "actions", actions)
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "filter_match", filter_match)
        pulumi.set(__self__, "frequency", frequency)
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "project", project)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="actionMatch")
    def action_match(self) -> pulumi.Input[str]:
        """
        Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        """
        return pulumi.get(self, "action_match")

    @action_match.setter
    def action_match(self, value: pulumi.Input[str]):
        pulumi.set(self, "action_match", value)

    @property
    @pulumi.getter
    def actions(self) -> pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]:
        """
        List of actions.
        """
        return pulumi.get(self, "actions")

    @actions.setter
    def actions(self, value: pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]):
        pulumi.set(self, "actions", value)

    @property
    @pulumi.getter
    def conditions(self) -> pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]:
        """
        List of conditions.
        """
        return pulumi.get(self, "conditions")

    @conditions.setter
    def conditions(self, value: pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]):
        pulumi.set(self, "conditions", value)

    @property
    @pulumi.getter(name="filterMatch")
    def filter_match(self) -> pulumi.Input[str]:
        """
        Trigger actions if `all`, `any`, or `none` of the specified filters match.
        """
        return pulumi.get(self, "filter_match")

    @filter_match.setter
    def filter_match(self, value: pulumi.Input[str]):
        pulumi.set(self, "filter_match", value)

    @property
    @pulumi.getter
    def frequency(self) -> pulumi.Input[int]:
        """
        Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        """
        return pulumi.get(self, "frequency")

    @frequency.setter
    def frequency(self, value: pulumi.Input[int]):
        pulumi.set(self, "frequency", value)

    @property
    @pulumi.getter
    def organization(self) -> pulumi.Input[str]:
        """
        The slug of the organization the issue alert belongs to.
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: pulumi.Input[str]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter
    def project(self) -> pulumi.Input[str]:
        """
        The slug of the project to create the issue alert for.
        """
        return pulumi.get(self, "project")

    @project.setter
    def project(self, value: pulumi.Input[str]):
        pulumi.set(self, "project", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input[str]]:
        """
        Perform issue alert in a specific environment.
        """
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter
    def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]:
        """
        List of filters.
        """
        return pulumi.get(self, "filters")

    @filters.setter
    def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]):
        pulumi.set(self, "filters", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The issue alert name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)


@pulumi.input_type
class _SentryIssueAlertState:
    def __init__(__self__, *,
                 action_match: Optional[pulumi.Input[str]] = None,
                 actions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 environment: Optional[pulumi.Input[str]] = None,
                 filter_match: Optional[pulumi.Input[str]] = None,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 frequency: Optional[pulumi.Input[int]] = None,
                 internal_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 project: Optional[pulumi.Input[str]] = None,
                 projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        Input properties used for looking up and filtering SentryIssueAlert resources.
        :param pulumi.Input[str] action_match: Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] actions: List of actions.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] conditions: List of conditions.
        :param pulumi.Input[str] environment: Perform issue alert in a specific environment.
        :param pulumi.Input[str] filter_match: Trigger actions if `all`, `any`, or `none` of the specified filters match.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] filters: List of filters.
        :param pulumi.Input[int] frequency: Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        :param pulumi.Input[str] internal_id: The internal ID for this issue alert.
        :param pulumi.Input[str] name: The issue alert name.
        :param pulumi.Input[str] organization: The slug of the organization the issue alert belongs to.
        :param pulumi.Input[str] project: The slug of the project to create the issue alert for.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] projects: Use `project` (singular) instead.
        """
        if action_match is not None:
            pulumi.set(__self__, "action_match", action_match)
        if actions is not None:
            pulumi.set(__self__, "actions", actions)
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if filter_match is not None:
            pulumi.set(__self__, "filter_match", filter_match)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if frequency is not None:
            pulumi.set(__self__, "frequency", frequency)
        if internal_id is not None:
            pulumi.set(__self__, "internal_id", internal_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if organization is not None:
            pulumi.set(__self__, "organization", organization)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if projects is not None:
            warnings.warn("""Use `project` (singular) instead.""", DeprecationWarning)
            pulumi.log.warn("""projects is deprecated: Use `project` (singular) instead.""")
        if projects is not None:
            pulumi.set(__self__, "projects", projects)

    @property
    @pulumi.getter(name="actionMatch")
    def action_match(self) -> Optional[pulumi.Input[str]]:
        """
        Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        """
        return pulumi.get(self, "action_match")

    @action_match.setter
    def action_match(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "action_match", value)

    @property
    @pulumi.getter
    def actions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]:
        """
        List of actions.
        """
        return pulumi.get(self, "actions")

    @actions.setter
    def actions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]):
        pulumi.set(self, "actions", value)

    @property
    @pulumi.getter
    def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]:
        """
        List of conditions.
        """
        return pulumi.get(self, "conditions")

    @conditions.setter
    def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]):
        pulumi.set(self, "conditions", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input[str]]:
        """
        Perform issue alert in a specific environment.
        """
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter(name="filterMatch")
    def filter_match(self) -> Optional[pulumi.Input[str]]:
        """
        Trigger actions if `all`, `any`, or `none` of the specified filters match.
        """
        return pulumi.get(self, "filter_match")

    @filter_match.setter
    def filter_match(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "filter_match", value)

    @property
    @pulumi.getter
    def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]:
        """
        List of filters.
        """
        return pulumi.get(self, "filters")

    @filters.setter
    def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]]):
        pulumi.set(self, "filters", value)

    @property
    @pulumi.getter
    def frequency(self) -> Optional[pulumi.Input[int]]:
        """
        Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        """
        return pulumi.get(self, "frequency")

    @frequency.setter
    def frequency(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "frequency", value)

    @property
    @pulumi.getter(name="internalId")
    def internal_id(self) -> Optional[pulumi.Input[str]]:
        """
        The internal ID for this issue alert.
        """
        return pulumi.get(self, "internal_id")

    @internal_id.setter
    def internal_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "internal_id", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The issue alert name.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def organization(self) -> Optional[pulumi.Input[str]]:
        """
        The slug of the organization the issue alert belongs to.
        """
        return pulumi.get(self, "organization")

    @organization.setter
    def organization(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization", value)

    @property
    @pulumi.getter
    def project(self) -> Optional[pulumi.Input[str]]:
        """
        The slug of the project to create the issue alert for.
        """
        return pulumi.get(self, "project")

    @project.setter
    def project(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "project", value)

    @property
    @pulumi.getter
    @_utilities.deprecated("""Use `project` (singular) instead.""")
    def projects(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Use `project` (singular) instead.
        """
        return pulumi.get(self, "projects")

    @projects.setter
    def projects(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "projects", value)


class SentryIssueAlert(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 action_match: Optional[pulumi.Input[str]] = None,
                 actions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 environment: Optional[pulumi.Input[str]] = None,
                 filter_match: Optional[pulumi.Input[str]] = None,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 frequency: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 project: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        Sentry Issue Alert resource. Note that there's no public documentation for the values of conditions, filters, and actions. You can either inspect the request payload sent when creating or editing an issue alert on Sentry or inspect [Sentry's rules registry in the source code](https://github.com/getsentry/sentry/tree/master/src/sentry/rules). Since v0.11.2, you should also omit the name property of each condition, filter, and action.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_sentry as sentry
        import pulumiverse_sentry as sentry

        # Retrieve a Slack integration
        slack = sentry.get_sentry_organization_integration(organization=test["organization"],
            provider_key="slack",
            name="Slack Workspace")
        main = sentry.SentryIssueAlert("main",
            organization=main_sentry_project["organization"],
            project=main_sentry_project["id"],
            name="My issue alert",
            action_match="any",
            filter_match="any",
            frequency=30,
            conditions=[
                {
                    "id": "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition",
                },
                {
                    "id": "sentry.rules.conditions.regression_event.RegressionEventCondition",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventFrequencyCondition",
                    "value": "100",
                    "comparisonType": "count",
                    "interval": "1h",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition",
                    "value": "100",
                    "comparisonType": "count",
                    "interval": "1h",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition",
                    "value": "50.0",
                    "comparisonType": "count",
                    "interval": "1h",
                },
            ],
            filters=[
                {
                    "id": "sentry.rules.filters.age_comparison.AgeComparisonFilter",
                    "value": "10",
                    "time": "minute",
                    "comparison_type": "older",
                },
                {
                    "id": "sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter",
                    "value": "10",
                },
                {
                    "id": "sentry.rules.filters.assigned_to.AssignedToFilter",
                    "targetType": "Team",
                    "targetIdentifier": main_sentry_team["teamId"],
                },
                {
                    "id": "sentry.rules.filters.latest_release.LatestReleaseFilter",
                },
                {
                    "id": "sentry.rules.filters.event_attribute.EventAttributeFilter",
                    "attribute": "message",
                    "match": "co",
                    "value": "test",
                },
                {
                    "id": "sentry.rules.filters.tagged_event.TaggedEventFilter",
                    "key": "test",
                    "match": "co",
                    "value": "test",
                },
                {
                    "id": "sentry.rules.filters.level.LevelFilter",
                    "match": "eq",
                    "level": "50",
                },
            ],
            actions=[
                {
                    "id": "sentry.mail.actions.NotifyEmailAction",
                    "targetType": "IssueOwners",
                    "targetIdentifier": "",
                },
                {
                    "id": "sentry.mail.actions.NotifyEmailAction",
                    "targetType": "Team",
                    "targetIdentifier": main_sentry_team["teamId"],
                },
                {
                    "id": "sentry.rules.actions.notify_event.NotifyEventAction",
                },
                {
                    "id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction",
                    "channel": "#general",
                    "workspace": slack.internal_id,
                },
            ])
        ```

        ## Import

        import using the organization, project slugs and rule id from the URL:

        https://sentry.io/organizations/[org-slug]/alerts/rules/[project-slug]/[rule-id]/details/

        ```sh
        $ pulumi import sentry:index/sentryIssueAlert:SentryIssueAlert default org-slug/project-slug/rule-id
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] action_match: Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] actions: List of actions.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] conditions: List of conditions.
        :param pulumi.Input[str] environment: Perform issue alert in a specific environment.
        :param pulumi.Input[str] filter_match: Trigger actions if `all`, `any`, or `none` of the specified filters match.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] filters: List of filters.
        :param pulumi.Input[int] frequency: Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        :param pulumi.Input[str] name: The issue alert name.
        :param pulumi.Input[str] organization: The slug of the organization the issue alert belongs to.
        :param pulumi.Input[str] project: The slug of the project to create the issue alert for.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: SentryIssueAlertArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Sentry Issue Alert resource. Note that there's no public documentation for the values of conditions, filters, and actions. You can either inspect the request payload sent when creating or editing an issue alert on Sentry or inspect [Sentry's rules registry in the source code](https://github.com/getsentry/sentry/tree/master/src/sentry/rules). Since v0.11.2, you should also omit the name property of each condition, filter, and action.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_sentry as sentry
        import pulumiverse_sentry as sentry

        # Retrieve a Slack integration
        slack = sentry.get_sentry_organization_integration(organization=test["organization"],
            provider_key="slack",
            name="Slack Workspace")
        main = sentry.SentryIssueAlert("main",
            organization=main_sentry_project["organization"],
            project=main_sentry_project["id"],
            name="My issue alert",
            action_match="any",
            filter_match="any",
            frequency=30,
            conditions=[
                {
                    "id": "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition",
                },
                {
                    "id": "sentry.rules.conditions.regression_event.RegressionEventCondition",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventFrequencyCondition",
                    "value": "100",
                    "comparisonType": "count",
                    "interval": "1h",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition",
                    "value": "100",
                    "comparisonType": "count",
                    "interval": "1h",
                },
                {
                    "id": "sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition",
                    "value": "50.0",
                    "comparisonType": "count",
                    "interval": "1h",
                },
            ],
            filters=[
                {
                    "id": "sentry.rules.filters.age_comparison.AgeComparisonFilter",
                    "value": "10",
                    "time": "minute",
                    "comparison_type": "older",
                },
                {
                    "id": "sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter",
                    "value": "10",
                },
                {
                    "id": "sentry.rules.filters.assigned_to.AssignedToFilter",
                    "targetType": "Team",
                    "targetIdentifier": main_sentry_team["teamId"],
                },
                {
                    "id": "sentry.rules.filters.latest_release.LatestReleaseFilter",
                },
                {
                    "id": "sentry.rules.filters.event_attribute.EventAttributeFilter",
                    "attribute": "message",
                    "match": "co",
                    "value": "test",
                },
                {
                    "id": "sentry.rules.filters.tagged_event.TaggedEventFilter",
                    "key": "test",
                    "match": "co",
                    "value": "test",
                },
                {
                    "id": "sentry.rules.filters.level.LevelFilter",
                    "match": "eq",
                    "level": "50",
                },
            ],
            actions=[
                {
                    "id": "sentry.mail.actions.NotifyEmailAction",
                    "targetType": "IssueOwners",
                    "targetIdentifier": "",
                },
                {
                    "id": "sentry.mail.actions.NotifyEmailAction",
                    "targetType": "Team",
                    "targetIdentifier": main_sentry_team["teamId"],
                },
                {
                    "id": "sentry.rules.actions.notify_event.NotifyEventAction",
                },
                {
                    "id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction",
                    "channel": "#general",
                    "workspace": slack.internal_id,
                },
            ])
        ```

        ## Import

        import using the organization, project slugs and rule id from the URL:

        https://sentry.io/organizations/[org-slug]/alerts/rules/[project-slug]/[rule-id]/details/

        ```sh
        $ pulumi import sentry:index/sentryIssueAlert:SentryIssueAlert default org-slug/project-slug/rule-id
        ```

        :param str resource_name: The name of the resource.
        :param SentryIssueAlertArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(SentryIssueAlertArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 action_match: Optional[pulumi.Input[str]] = None,
                 actions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 environment: Optional[pulumi.Input[str]] = None,
                 filter_match: Optional[pulumi.Input[str]] = None,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
                 frequency: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 organization: Optional[pulumi.Input[str]] = None,
                 project: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = SentryIssueAlertArgs.__new__(SentryIssueAlertArgs)

            if action_match is None and not opts.urn:
                raise TypeError("Missing required property 'action_match'")
            __props__.__dict__["action_match"] = action_match
            if actions is None and not opts.urn:
                raise TypeError("Missing required property 'actions'")
            __props__.__dict__["actions"] = actions
            if conditions is None and not opts.urn:
                raise TypeError("Missing required property 'conditions'")
            __props__.__dict__["conditions"] = conditions
            __props__.__dict__["environment"] = environment
            if filter_match is None and not opts.urn:
                raise TypeError("Missing required property 'filter_match'")
            __props__.__dict__["filter_match"] = filter_match
            __props__.__dict__["filters"] = filters
            if frequency is None and not opts.urn:
                raise TypeError("Missing required property 'frequency'")
            __props__.__dict__["frequency"] = frequency
            __props__.__dict__["name"] = name
            if organization is None and not opts.urn:
                raise TypeError("Missing required property 'organization'")
            __props__.__dict__["organization"] = organization
            if project is None and not opts.urn:
                raise TypeError("Missing required property 'project'")
            __props__.__dict__["project"] = project
            __props__.__dict__["internal_id"] = None
            __props__.__dict__["projects"] = None
        super(SentryIssueAlert, __self__).__init__(
            'sentry:index/sentryIssueAlert:SentryIssueAlert',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            action_match: Optional[pulumi.Input[str]] = None,
            actions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
            conditions: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
            environment: Optional[pulumi.Input[str]] = None,
            filter_match: Optional[pulumi.Input[str]] = None,
            filters: Optional[pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]]] = None,
            frequency: Optional[pulumi.Input[int]] = None,
            internal_id: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            organization: Optional[pulumi.Input[str]] = None,
            project: Optional[pulumi.Input[str]] = None,
            projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'SentryIssueAlert':
        """
        Get an existing SentryIssueAlert resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] action_match: Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] actions: List of actions.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] conditions: List of conditions.
        :param pulumi.Input[str] environment: Perform issue alert in a specific environment.
        :param pulumi.Input[str] filter_match: Trigger actions if `all`, `any`, or `none` of the specified filters match.
        :param pulumi.Input[Sequence[pulumi.Input[Mapping[str, pulumi.Input[str]]]]] filters: List of filters.
        :param pulumi.Input[int] frequency: Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        :param pulumi.Input[str] internal_id: The internal ID for this issue alert.
        :param pulumi.Input[str] name: The issue alert name.
        :param pulumi.Input[str] organization: The slug of the organization the issue alert belongs to.
        :param pulumi.Input[str] project: The slug of the project to create the issue alert for.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] projects: Use `project` (singular) instead.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _SentryIssueAlertState.__new__(_SentryIssueAlertState)

        __props__.__dict__["action_match"] = action_match
        __props__.__dict__["actions"] = actions
        __props__.__dict__["conditions"] = conditions
        __props__.__dict__["environment"] = environment
        __props__.__dict__["filter_match"] = filter_match
        __props__.__dict__["filters"] = filters
        __props__.__dict__["frequency"] = frequency
        __props__.__dict__["internal_id"] = internal_id
        __props__.__dict__["name"] = name
        __props__.__dict__["organization"] = organization
        __props__.__dict__["project"] = project
        __props__.__dict__["projects"] = projects
        return SentryIssueAlert(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="actionMatch")
    def action_match(self) -> pulumi.Output[str]:
        """
        Trigger actions when an event is captured by Sentry and `any` or `all` of the specified conditions happen.
        """
        return pulumi.get(self, "action_match")

    @property
    @pulumi.getter
    def actions(self) -> pulumi.Output[Sequence[Mapping[str, str]]]:
        """
        List of actions.
        """
        return pulumi.get(self, "actions")

    @property
    @pulumi.getter
    def conditions(self) -> pulumi.Output[Sequence[Mapping[str, str]]]:
        """
        List of conditions.
        """
        return pulumi.get(self, "conditions")

    @property
    @pulumi.getter
    def environment(self) -> pulumi.Output[str]:
        """
        Perform issue alert in a specific environment.
        """
        return pulumi.get(self, "environment")

    @property
    @pulumi.getter(name="filterMatch")
    def filter_match(self) -> pulumi.Output[str]:
        """
        Trigger actions if `all`, `any`, or `none` of the specified filters match.
        """
        return pulumi.get(self, "filter_match")

    @property
    @pulumi.getter
    def filters(self) -> pulumi.Output[Optional[Sequence[Mapping[str, str]]]]:
        """
        List of filters.
        """
        return pulumi.get(self, "filters")

    @property
    @pulumi.getter
    def frequency(self) -> pulumi.Output[int]:
        """
        Perform actions at most once every `X` minutes for this issue. Defaults to `30`.
        """
        return pulumi.get(self, "frequency")

    @property
    @pulumi.getter(name="internalId")
    def internal_id(self) -> pulumi.Output[str]:
        """
        The internal ID for this issue alert.
        """
        return pulumi.get(self, "internal_id")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        The issue alert name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def organization(self) -> pulumi.Output[str]:
        """
        The slug of the organization the issue alert belongs to.
        """
        return pulumi.get(self, "organization")

    @property
    @pulumi.getter
    def project(self) -> pulumi.Output[str]:
        """
        The slug of the project to create the issue alert for.
        """
        return pulumi.get(self, "project")

    @property
    @pulumi.getter
    @_utilities.deprecated("""Use `project` (singular) instead.""")
    def projects(self) -> pulumi.Output[Sequence[str]]:
        """
        Use `project` (singular) instead.
        """
        return pulumi.get(self, "projects")

