# 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 pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'ClassificationExportConfigurationS3DestinationArgs',
    'ClassificationJobS3JobDefinitionArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs',
    'ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs',
    'ClassificationJobS3JobDefinitionBucketDefinitionArgs',
    'ClassificationJobS3JobDefinitionScopingArgs',
    'ClassificationJobS3JobDefinitionScopingExcludesArgs',
    'ClassificationJobS3JobDefinitionScopingExcludesAndArgs',
    'ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs',
    'ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs',
    'ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs',
    'ClassificationJobS3JobDefinitionScopingIncludesArgs',
    'ClassificationJobS3JobDefinitionScopingIncludesAndArgs',
    'ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs',
    'ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs',
    'ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs',
    'ClassificationJobScheduleFrequencyArgs',
    'ClassificationJobUserPausedDetailArgs',
]

@pulumi.input_type
class ClassificationExportConfigurationS3DestinationArgs:
    def __init__(__self__, *,
                 bucket_name: pulumi.Input[str],
                 kms_key_arn: pulumi.Input[str],
                 key_prefix: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] bucket_name: The Amazon S3 bucket name in which Amazon Macie exports the data classification results.
        :param pulumi.Input[str] kms_key_arn: Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.
        :param pulumi.Input[str] key_prefix: The object key for the bucket in which Amazon Macie exports the data classification results.
        """
        pulumi.set(__self__, "bucket_name", bucket_name)
        pulumi.set(__self__, "kms_key_arn", kms_key_arn)
        if key_prefix is not None:
            pulumi.set(__self__, "key_prefix", key_prefix)

    @property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> pulumi.Input[str]:
        """
        The Amazon S3 bucket name in which Amazon Macie exports the data classification results.
        """
        return pulumi.get(self, "bucket_name")

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

    @property
    @pulumi.getter(name="kmsKeyArn")
    def kms_key_arn(self) -> pulumi.Input[str]:
        """
        Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.
        """
        return pulumi.get(self, "kms_key_arn")

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

    @property
    @pulumi.getter(name="keyPrefix")
    def key_prefix(self) -> Optional[pulumi.Input[str]]:
        """
        The object key for the bucket in which Amazon Macie exports the data classification results.
        """
        return pulumi.get(self, "key_prefix")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionArgs:
    def __init__(__self__, *,
                 bucket_criteria: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaArgs']] = None,
                 bucket_definitions: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketDefinitionArgs']]]] = None,
                 scoping: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaArgs'] bucket_criteria: The property- and tag-based conditions that determine which S3 buckets to include or exclude from the analysis. Conflicts with `bucket_definitions`. (documented below)
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketDefinitionArgs']]] bucket_definitions: An array of objects, one for each AWS account that owns buckets to analyze. Each object specifies the account ID for an account and one or more buckets to analyze for the account. Conflicts with `bucket_criteria`. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingArgs'] scoping: The property- and tag-based conditions that determine which objects to include or exclude from the analysis. (documented below)
        """
        if bucket_criteria is not None:
            pulumi.set(__self__, "bucket_criteria", bucket_criteria)
        if bucket_definitions is not None:
            pulumi.set(__self__, "bucket_definitions", bucket_definitions)
        if scoping is not None:
            pulumi.set(__self__, "scoping", scoping)

    @property
    @pulumi.getter(name="bucketCriteria")
    def bucket_criteria(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaArgs']]:
        """
        The property- and tag-based conditions that determine which S3 buckets to include or exclude from the analysis. Conflicts with `bucket_definitions`. (documented below)
        """
        return pulumi.get(self, "bucket_criteria")

    @bucket_criteria.setter
    def bucket_criteria(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaArgs']]):
        pulumi.set(self, "bucket_criteria", value)

    @property
    @pulumi.getter(name="bucketDefinitions")
    def bucket_definitions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketDefinitionArgs']]]]:
        """
        An array of objects, one for each AWS account that owns buckets to analyze. Each object specifies the account ID for an account and one or more buckets to analyze for the account. Conflicts with `bucket_criteria`. (documented below)
        """
        return pulumi.get(self, "bucket_definitions")

    @bucket_definitions.setter
    def bucket_definitions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketDefinitionArgs']]]]):
        pulumi.set(self, "bucket_definitions", value)

    @property
    @pulumi.getter
    def scoping(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingArgs']]:
        """
        The property- and tag-based conditions that determine which objects to include or exclude from the analysis. (documented below)
        """
        return pulumi.get(self, "scoping")

    @scoping.setter
    def scoping(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingArgs']]):
        pulumi.set(self, "scoping", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaArgs:
    def __init__(__self__, *,
                 excludes: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs']] = None,
                 includes: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs'] excludes: The property- or tag-based conditions that determine which S3 buckets to exclude from the analysis. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs'] includes: The property- or tag-based conditions that determine which S3 buckets to include in the analysis. (documented below)
        """
        if excludes is not None:
            pulumi.set(__self__, "excludes", excludes)
        if includes is not None:
            pulumi.set(__self__, "includes", includes)

    @property
    @pulumi.getter
    def excludes(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs']]:
        """
        The property- or tag-based conditions that determine which S3 buckets to exclude from the analysis. (documented below)
        """
        return pulumi.get(self, "excludes")

    @excludes.setter
    def excludes(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs']]):
        pulumi.set(self, "excludes", value)

    @property
    @pulumi.getter
    def includes(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs']]:
        """
        The property- or tag-based conditions that determine which S3 buckets to include in the analysis. (documented below)
        """
        return pulumi.get(self, "includes")

    @includes.setter
    def includes(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs']]):
        pulumi.set(self, "includes", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaExcludesArgs:
    def __init__(__self__, *,
                 ands: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs']]] ands: An array of conditions, one for each condition that determines which objects to include or exclude from the job. (documented below)
        """
        if ands is not None:
            pulumi.set(__self__, "ands", ands)

    @property
    @pulumi.getter
    def ands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs']]]]:
        """
        An array of conditions, one for each condition that determines which objects to include or exclude from the job. (documented below)
        """
        return pulumi.get(self, "ands")

    @ands.setter
    def ands(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs']]]]):
        pulumi.set(self, "ands", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndArgs:
    def __init__(__self__, *,
                 simple_criterion: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs']] = None,
                 tag_criterion: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs'] simple_criterion: A property-based condition that defines a property, operator, and one or more values for including or excluding an S3 buckets from the job. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs'] tag_criterion: A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an S3 buckets from the job. (documented below)
        """
        if simple_criterion is not None:
            pulumi.set(__self__, "simple_criterion", simple_criterion)
        if tag_criterion is not None:
            pulumi.set(__self__, "tag_criterion", tag_criterion)

    @property
    @pulumi.getter(name="simpleCriterion")
    def simple_criterion(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs']]:
        """
        A property-based condition that defines a property, operator, and one or more values for including or excluding an S3 buckets from the job. (documented below)
        """
        return pulumi.get(self, "simple_criterion")

    @simple_criterion.setter
    def simple_criterion(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs']]):
        pulumi.set(self, "simple_criterion", value)

    @property
    @pulumi.getter(name="tagCriterion")
    def tag_criterion(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs']]:
        """
        A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an S3 buckets from the job. (documented below)
        """
        return pulumi.get(self, "tag_criterion")

    @tag_criterion.setter
    def tag_criterion(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs']]):
        pulumi.set(self, "tag_criterion", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndSimpleCriterionArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in a condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        :param pulumi.Input[str] key: The object property to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionkeyforjob)
        :param pulumi.Input[Sequence[pulumi.Input[str]]] values: An array that lists the values to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionforjob)
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in a condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The object property to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionkeyforjob)
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that lists the values to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionforjob)
        """
        return pulumi.get(self, "values")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 tag_values: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs']]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in the condition. Valid combination and values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs']]] tag_values: The  tag key and value pairs to use in the condition. One or more blocks are allowed. (documented below)
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if tag_values is not None:
            pulumi.set(__self__, "tag_values", tag_values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in the condition. Valid combination and values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter(name="tagValues")
    def tag_values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs']]]]:
        """
        The  tag key and value pairs to use in the condition. One or more blocks are allowed. (documented below)
        """
        return pulumi.get(self, "tag_values")

    @tag_values.setter
    def tag_values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs']]]]):
        pulumi.set(self, "tag_values", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaExcludesAndTagCriterionTagValueArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] key: The tag key.
        :param pulumi.Input[str] value: The tag value.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

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

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

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

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaIncludesArgs:
    def __init__(__self__, *,
                 ands: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs']]] ands: An array of conditions, one for each condition that determines which S3 buckets to include or exclude from the job. (documented below)
        """
        if ands is not None:
            pulumi.set(__self__, "ands", ands)

    @property
    @pulumi.getter
    def ands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs']]]]:
        """
        An array of conditions, one for each condition that determines which S3 buckets to include or exclude from the job. (documented below)
        """
        return pulumi.get(self, "ands")

    @ands.setter
    def ands(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs']]]]):
        pulumi.set(self, "ands", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndArgs:
    def __init__(__self__, *,
                 simple_criterion: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs']] = None,
                 tag_criterion: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs'] simple_criterion: A property-based condition that defines a property, operator, and one or more values for including or excluding an S3 buckets from the job. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs'] tag_criterion: A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an S3 buckets from the job. (documented below)
        """
        if simple_criterion is not None:
            pulumi.set(__self__, "simple_criterion", simple_criterion)
        if tag_criterion is not None:
            pulumi.set(__self__, "tag_criterion", tag_criterion)

    @property
    @pulumi.getter(name="simpleCriterion")
    def simple_criterion(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs']]:
        """
        A property-based condition that defines a property, operator, and one or more values for including or excluding an S3 buckets from the job. (documented below)
        """
        return pulumi.get(self, "simple_criterion")

    @simple_criterion.setter
    def simple_criterion(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs']]):
        pulumi.set(self, "simple_criterion", value)

    @property
    @pulumi.getter(name="tagCriterion")
    def tag_criterion(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs']]:
        """
        A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an S3 buckets from the job. (documented below)
        """
        return pulumi.get(self, "tag_criterion")

    @tag_criterion.setter
    def tag_criterion(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs']]):
        pulumi.set(self, "tag_criterion", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndSimpleCriterionArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in a condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        :param pulumi.Input[str] key: The object property to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionkeyforjob)
        :param pulumi.Input[Sequence[pulumi.Input[str]]] values: An array that lists the values to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionforjob)
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in a condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The object property to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionkeyforjob)
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that lists the values to use in the condition. Valid combination of values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-simplecriterionforjob)
        """
        return pulumi.get(self, "values")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 tag_values: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs']]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in the condition. Valid combination and values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs']]] tag_values: The  tag key and value pairs to use in the condition. One or more blocks are allowed. (documented below)
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if tag_values is not None:
            pulumi.set(__self__, "tag_values", tag_values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in the condition. Valid combination and values are available in the [AWS Documentation](https://docs.aws.amazon.com/macie/latest/APIReference/jobs.html#jobs-model-jobcomparator)
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter(name="tagValues")
    def tag_values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs']]]]:
        """
        The  tag key and value pairs to use in the condition. One or more blocks are allowed. (documented below)
        """
        return pulumi.get(self, "tag_values")

    @tag_values.setter
    def tag_values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs']]]]):
        pulumi.set(self, "tag_values", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketCriteriaIncludesAndTagCriterionTagValueArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] key: The tag key.
        :param pulumi.Input[str] value: The tag value.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

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

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

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

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionBucketDefinitionArgs:
    def __init__(__self__, *,
                 account_id: pulumi.Input[str],
                 buckets: pulumi.Input[Sequence[pulumi.Input[str]]]):
        """
        :param pulumi.Input[str] account_id: The unique identifier for the AWS account that owns the buckets.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] buckets: An array that lists the names of the buckets.
        """
        pulumi.set(__self__, "account_id", account_id)
        pulumi.set(__self__, "buckets", buckets)

    @property
    @pulumi.getter(name="accountId")
    def account_id(self) -> pulumi.Input[str]:
        """
        The unique identifier for the AWS account that owns the buckets.
        """
        return pulumi.get(self, "account_id")

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

    @property
    @pulumi.getter
    def buckets(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        An array that lists the names of the buckets.
        """
        return pulumi.get(self, "buckets")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingArgs:
    def __init__(__self__, *,
                 excludes: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesArgs']] = None,
                 includes: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesArgs'] excludes: The property- or tag-based conditions that determine which objects to exclude from the analysis. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesArgs'] includes: The property- or tag-based conditions that determine which objects to include in the analysis. (documented below)
        """
        if excludes is not None:
            pulumi.set(__self__, "excludes", excludes)
        if includes is not None:
            pulumi.set(__self__, "includes", includes)

    @property
    @pulumi.getter
    def excludes(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesArgs']]:
        """
        The property- or tag-based conditions that determine which objects to exclude from the analysis. (documented below)
        """
        return pulumi.get(self, "excludes")

    @excludes.setter
    def excludes(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesArgs']]):
        pulumi.set(self, "excludes", value)

    @property
    @pulumi.getter
    def includes(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesArgs']]:
        """
        The property- or tag-based conditions that determine which objects to include in the analysis. (documented below)
        """
        return pulumi.get(self, "includes")

    @includes.setter
    def includes(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesArgs']]):
        pulumi.set(self, "includes", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingExcludesArgs:
    def __init__(__self__, *,
                 ands: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndArgs']]] ands: An array of conditions, one for each condition that determines which objects to include or exclude from the job. (documented below)
        """
        if ands is not None:
            pulumi.set(__self__, "ands", ands)

    @property
    @pulumi.getter
    def ands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndArgs']]]]:
        """
        An array of conditions, one for each condition that determines which objects to include or exclude from the job. (documented below)
        """
        return pulumi.get(self, "ands")

    @ands.setter
    def ands(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndArgs']]]]):
        pulumi.set(self, "ands", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingExcludesAndArgs:
    def __init__(__self__, *,
                 simple_scope_term: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs']] = None,
                 tag_scope_term: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs'] simple_scope_term: A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs'] tag_scope_term: A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job. (documented below)
        """
        if simple_scope_term is not None:
            pulumi.set(__self__, "simple_scope_term", simple_scope_term)
        if tag_scope_term is not None:
            pulumi.set(__self__, "tag_scope_term", tag_scope_term)

    @property
    @pulumi.getter(name="simpleScopeTerm")
    def simple_scope_term(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs']]:
        """
        A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job. (documented below)
        """
        return pulumi.get(self, "simple_scope_term")

    @simple_scope_term.setter
    def simple_scope_term(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs']]):
        pulumi.set(self, "simple_scope_term", value)

    @property
    @pulumi.getter(name="tagScopeTerm")
    def tag_scope_term(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs']]:
        """
        A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job. (documented below)
        """
        return pulumi.get(self, "tag_scope_term")

    @tag_scope_term.setter
    def tag_scope_term(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs']]):
        pulumi.set(self, "tag_scope_term", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingExcludesAndSimpleScopeTermArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in a condition. Valid values are: `EQ`, `GT`, `GTE`, `LT`, `LTE`, `NE`, `CONTAINS`, `STARTS_WITH`
        :param pulumi.Input[str] key: The object property to use in the condition.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] values: An array that lists the values to use in the condition.
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in a condition. Valid values are: `EQ`, `GT`, `GTE`, `LT`, `LTE`, `NE`, `CONTAINS`, `STARTS_WITH`
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The object property to use in the condition.
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that lists the values to use in the condition.
        """
        return pulumi.get(self, "values")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 tag_values: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs']]]] = None,
                 target: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in the condition.
        :param pulumi.Input[str] key: The tag key to use in the condition. The only valid value is `TAG`.
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs']]] tag_values: The tag keys or tag key and value pairs to use in the condition.
        :param pulumi.Input[str] target: The type of object to apply the condition to. The only valid value is `S3_OBJECT`.
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if tag_values is not None:
            pulumi.set(__self__, "tag_values", tag_values)
        if target is not None:
            pulumi.set(__self__, "target", target)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in the condition.
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The tag key to use in the condition. The only valid value is `TAG`.
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter(name="tagValues")
    def tag_values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs']]]]:
        """
        The tag keys or tag key and value pairs to use in the condition.
        """
        return pulumi.get(self, "tag_values")

    @tag_values.setter
    def tag_values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs']]]]):
        pulumi.set(self, "tag_values", value)

    @property
    @pulumi.getter
    def target(self) -> Optional[pulumi.Input[str]]:
        """
        The type of object to apply the condition to. The only valid value is `S3_OBJECT`.
        """
        return pulumi.get(self, "target")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingExcludesAndTagScopeTermTagValueArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] key: The tag key.
        :param pulumi.Input[str] value: The tag value.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

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

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

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

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingIncludesArgs:
    def __init__(__self__, *,
                 ands: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndArgs']]] ands: An array of conditions, one for each condition that determines which S3 buckets to include or exclude from the job. (documented below)
        """
        if ands is not None:
            pulumi.set(__self__, "ands", ands)

    @property
    @pulumi.getter
    def ands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndArgs']]]]:
        """
        An array of conditions, one for each condition that determines which S3 buckets to include or exclude from the job. (documented below)
        """
        return pulumi.get(self, "ands")

    @ands.setter
    def ands(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndArgs']]]]):
        pulumi.set(self, "ands", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingIncludesAndArgs:
    def __init__(__self__, *,
                 simple_scope_term: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs']] = None,
                 tag_scope_term: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs']] = None):
        """
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs'] simple_scope_term: A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job. (documented below)
        :param pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs'] tag_scope_term: A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job. (documented below)
        """
        if simple_scope_term is not None:
            pulumi.set(__self__, "simple_scope_term", simple_scope_term)
        if tag_scope_term is not None:
            pulumi.set(__self__, "tag_scope_term", tag_scope_term)

    @property
    @pulumi.getter(name="simpleScopeTerm")
    def simple_scope_term(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs']]:
        """
        A property-based condition that defines a property, operator, and one or more values for including or excluding an object from the job. (documented below)
        """
        return pulumi.get(self, "simple_scope_term")

    @simple_scope_term.setter
    def simple_scope_term(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs']]):
        pulumi.set(self, "simple_scope_term", value)

    @property
    @pulumi.getter(name="tagScopeTerm")
    def tag_scope_term(self) -> Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs']]:
        """
        A tag-based condition that defines the operator and tag keys or tag key and value pairs for including or excluding an object from the job. (documented below)
        """
        return pulumi.get(self, "tag_scope_term")

    @tag_scope_term.setter
    def tag_scope_term(self, value: Optional[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs']]):
        pulumi.set(self, "tag_scope_term", value)


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingIncludesAndSimpleScopeTermArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in a condition. Valid values are: `EQ`, `GT`, `GTE`, `LT`, `LTE`, `NE`, `CONTAINS`, `STARTS_WITH`
        :param pulumi.Input[str] key: The object property to use in the condition.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] values: An array that lists the values to use in the condition.
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in a condition. Valid values are: `EQ`, `GT`, `GTE`, `LT`, `LTE`, `NE`, `CONTAINS`, `STARTS_WITH`
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The object property to use in the condition.
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that lists the values to use in the condition.
        """
        return pulumi.get(self, "values")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[str]] = None,
                 key: Optional[pulumi.Input[str]] = None,
                 tag_values: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs']]]] = None,
                 target: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] comparator: The operator to use in the condition.
        :param pulumi.Input[str] key: The tag key to use in the condition. The only valid value is `TAG`.
        :param pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs']]] tag_values: The tag keys or tag key and value pairs to use in the condition.
        :param pulumi.Input[str] target: The type of object to apply the condition to. The only valid value is `S3_OBJECT`.
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if tag_values is not None:
            pulumi.set(__self__, "tag_values", tag_values)
        if target is not None:
            pulumi.set(__self__, "target", target)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[str]]:
        """
        The operator to use in the condition.
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[str]]:
        """
        The tag key to use in the condition. The only valid value is `TAG`.
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter(name="tagValues")
    def tag_values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs']]]]:
        """
        The tag keys or tag key and value pairs to use in the condition.
        """
        return pulumi.get(self, "tag_values")

    @tag_values.setter
    def tag_values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs']]]]):
        pulumi.set(self, "tag_values", value)

    @property
    @pulumi.getter
    def target(self) -> Optional[pulumi.Input[str]]:
        """
        The type of object to apply the condition to. The only valid value is `S3_OBJECT`.
        """
        return pulumi.get(self, "target")

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


@pulumi.input_type
class ClassificationJobS3JobDefinitionScopingIncludesAndTagScopeTermTagValueArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] key: The tag key.
        :param pulumi.Input[str] value: The tag value.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

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

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

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

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


@pulumi.input_type
class ClassificationJobScheduleFrequencyArgs:
    def __init__(__self__, *,
                 daily_schedule: Optional[pulumi.Input[bool]] = None,
                 monthly_schedule: Optional[pulumi.Input[int]] = None,
                 weekly_schedule: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[bool] daily_schedule: Specifies a daily recurrence pattern for running the job.
        :param pulumi.Input[int] monthly_schedule: Specifies a monthly recurrence pattern for running the job.
        :param pulumi.Input[str] weekly_schedule: Specifies a weekly recurrence pattern for running the job.
        """
        if daily_schedule is not None:
            pulumi.set(__self__, "daily_schedule", daily_schedule)
        if monthly_schedule is not None:
            pulumi.set(__self__, "monthly_schedule", monthly_schedule)
        if weekly_schedule is not None:
            pulumi.set(__self__, "weekly_schedule", weekly_schedule)

    @property
    @pulumi.getter(name="dailySchedule")
    def daily_schedule(self) -> Optional[pulumi.Input[bool]]:
        """
        Specifies a daily recurrence pattern for running the job.
        """
        return pulumi.get(self, "daily_schedule")

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

    @property
    @pulumi.getter(name="monthlySchedule")
    def monthly_schedule(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies a monthly recurrence pattern for running the job.
        """
        return pulumi.get(self, "monthly_schedule")

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

    @property
    @pulumi.getter(name="weeklySchedule")
    def weekly_schedule(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies a weekly recurrence pattern for running the job.
        """
        return pulumi.get(self, "weekly_schedule")

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


@pulumi.input_type
class ClassificationJobUserPausedDetailArgs:
    def __init__(__self__, *,
                 job_expires_at: Optional[pulumi.Input[str]] = None,
                 job_imminent_expiration_health_event_arn: Optional[pulumi.Input[str]] = None,
                 job_paused_at: Optional[pulumi.Input[str]] = None):
        if job_expires_at is not None:
            pulumi.set(__self__, "job_expires_at", job_expires_at)
        if job_imminent_expiration_health_event_arn is not None:
            pulumi.set(__self__, "job_imminent_expiration_health_event_arn", job_imminent_expiration_health_event_arn)
        if job_paused_at is not None:
            pulumi.set(__self__, "job_paused_at", job_paused_at)

    @property
    @pulumi.getter(name="jobExpiresAt")
    def job_expires_at(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "job_expires_at")

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

    @property
    @pulumi.getter(name="jobImminentExpirationHealthEventArn")
    def job_imminent_expiration_health_event_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "job_imminent_expiration_health_event_arn")

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

    @property
    @pulumi.getter(name="jobPausedAt")
    def job_paused_at(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "job_paused_at")

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


