# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
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
from . import outputs
from ._inputs import *

__all__ = [
    'GetCampaignResult',
    'AwaitableGetCampaignResult',
    'get_campaign',
    'get_campaign_output',
]

@pulumi.output_type
class GetCampaignResult:
    """
    A collection of values returned by getCampaign.
    """
    def __init__(__self__, campaign_type=None, created=None, created_by=None, description=None, id=None, last_updated=None, last_updated_by=None, name=None, notification_settings=None, principal_scope_settings=None, recurring_campaign_id=None, remediation_settings=None, resource_settings=None, reviewer_settings=None, schedule_settings=None, status=None):
        if campaign_type and not isinstance(campaign_type, str):
            raise TypeError("Expected argument 'campaign_type' to be a str")
        pulumi.set(__self__, "campaign_type", campaign_type)
        if created and not isinstance(created, str):
            raise TypeError("Expected argument 'created' to be a str")
        pulumi.set(__self__, "created", created)
        if created_by and not isinstance(created_by, str):
            raise TypeError("Expected argument 'created_by' to be a str")
        pulumi.set(__self__, "created_by", created_by)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if last_updated and not isinstance(last_updated, str):
            raise TypeError("Expected argument 'last_updated' to be a str")
        pulumi.set(__self__, "last_updated", last_updated)
        if last_updated_by and not isinstance(last_updated_by, str):
            raise TypeError("Expected argument 'last_updated_by' to be a str")
        pulumi.set(__self__, "last_updated_by", last_updated_by)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if notification_settings and not isinstance(notification_settings, dict):
            raise TypeError("Expected argument 'notification_settings' to be a dict")
        pulumi.set(__self__, "notification_settings", notification_settings)
        if principal_scope_settings and not isinstance(principal_scope_settings, dict):
            raise TypeError("Expected argument 'principal_scope_settings' to be a dict")
        pulumi.set(__self__, "principal_scope_settings", principal_scope_settings)
        if recurring_campaign_id and not isinstance(recurring_campaign_id, str):
            raise TypeError("Expected argument 'recurring_campaign_id' to be a str")
        pulumi.set(__self__, "recurring_campaign_id", recurring_campaign_id)
        if remediation_settings and not isinstance(remediation_settings, dict):
            raise TypeError("Expected argument 'remediation_settings' to be a dict")
        pulumi.set(__self__, "remediation_settings", remediation_settings)
        if resource_settings and not isinstance(resource_settings, dict):
            raise TypeError("Expected argument 'resource_settings' to be a dict")
        pulumi.set(__self__, "resource_settings", resource_settings)
        if reviewer_settings and not isinstance(reviewer_settings, dict):
            raise TypeError("Expected argument 'reviewer_settings' to be a dict")
        pulumi.set(__self__, "reviewer_settings", reviewer_settings)
        if schedule_settings and not isinstance(schedule_settings, dict):
            raise TypeError("Expected argument 'schedule_settings' to be a dict")
        pulumi.set(__self__, "schedule_settings", schedule_settings)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)

    @_builtins.property
    @pulumi.getter(name="campaignType")
    def campaign_type(self) -> _builtins.str:
        return pulumi.get(self, "campaign_type")

    @_builtins.property
    @pulumi.getter
    def created(self) -> _builtins.str:
        return pulumi.get(self, "created")

    @_builtins.property
    @pulumi.getter(name="createdBy")
    def created_by(self) -> _builtins.str:
        return pulumi.get(self, "created_by")

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        The ID of this resource.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="lastUpdated")
    def last_updated(self) -> _builtins.str:
        return pulumi.get(self, "last_updated")

    @_builtins.property
    @pulumi.getter(name="lastUpdatedBy")
    def last_updated_by(self) -> _builtins.str:
        return pulumi.get(self, "last_updated_by")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="notificationSettings")
    def notification_settings(self) -> Optional['outputs.GetCampaignNotificationSettingsResult']:
        return pulumi.get(self, "notification_settings")

    @_builtins.property
    @pulumi.getter(name="principalScopeSettings")
    def principal_scope_settings(self) -> Optional['outputs.GetCampaignPrincipalScopeSettingsResult']:
        return pulumi.get(self, "principal_scope_settings")

    @_builtins.property
    @pulumi.getter(name="recurringCampaignId")
    def recurring_campaign_id(self) -> _builtins.str:
        return pulumi.get(self, "recurring_campaign_id")

    @_builtins.property
    @pulumi.getter(name="remediationSettings")
    def remediation_settings(self) -> Optional['outputs.GetCampaignRemediationSettingsResult']:
        return pulumi.get(self, "remediation_settings")

    @_builtins.property
    @pulumi.getter(name="resourceSettings")
    def resource_settings(self) -> Optional['outputs.GetCampaignResourceSettingsResult']:
        return pulumi.get(self, "resource_settings")

    @_builtins.property
    @pulumi.getter(name="reviewerSettings")
    def reviewer_settings(self) -> Optional['outputs.GetCampaignReviewerSettingsResult']:
        return pulumi.get(self, "reviewer_settings")

    @_builtins.property
    @pulumi.getter(name="scheduleSettings")
    def schedule_settings(self) -> Optional['outputs.GetCampaignScheduleSettingsResult']:
        return pulumi.get(self, "schedule_settings")

    @_builtins.property
    @pulumi.getter
    def status(self) -> _builtins.str:
        return pulumi.get(self, "status")


class AwaitableGetCampaignResult(GetCampaignResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetCampaignResult(
            campaign_type=self.campaign_type,
            created=self.created,
            created_by=self.created_by,
            description=self.description,
            id=self.id,
            last_updated=self.last_updated,
            last_updated_by=self.last_updated_by,
            name=self.name,
            notification_settings=self.notification_settings,
            principal_scope_settings=self.principal_scope_settings,
            recurring_campaign_id=self.recurring_campaign_id,
            remediation_settings=self.remediation_settings,
            resource_settings=self.resource_settings,
            reviewer_settings=self.reviewer_settings,
            schedule_settings=self.schedule_settings,
            status=self.status)


def get_campaign(campaign_type: Optional[_builtins.str] = None,
                 description: Optional[_builtins.str] = None,
                 id: Optional[_builtins.str] = None,
                 notification_settings: Optional[Union['GetCampaignNotificationSettingsArgs', 'GetCampaignNotificationSettingsArgsDict']] = None,
                 principal_scope_settings: Optional[Union['GetCampaignPrincipalScopeSettingsArgs', 'GetCampaignPrincipalScopeSettingsArgsDict']] = None,
                 remediation_settings: Optional[Union['GetCampaignRemediationSettingsArgs', 'GetCampaignRemediationSettingsArgsDict']] = None,
                 resource_settings: Optional[Union['GetCampaignResourceSettingsArgs', 'GetCampaignResourceSettingsArgsDict']] = None,
                 reviewer_settings: Optional[Union['GetCampaignReviewerSettingsArgs', 'GetCampaignReviewerSettingsArgsDict']] = None,
                 schedule_settings: Optional[Union['GetCampaignScheduleSettingsArgs', 'GetCampaignScheduleSettingsArgsDict']] = None,
                 opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCampaignResult:
    """
    Get the campaign belonging to an Okta organization.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_okta as okta

    test = okta.get_campaign(id="<campaign id>")
    ```


    :param _builtins.str id: The ID of this resource.
    """
    __args__ = dict()
    __args__['campaignType'] = campaign_type
    __args__['description'] = description
    __args__['id'] = id
    __args__['notificationSettings'] = notification_settings
    __args__['principalScopeSettings'] = principal_scope_settings
    __args__['remediationSettings'] = remediation_settings
    __args__['resourceSettings'] = resource_settings
    __args__['reviewerSettings'] = reviewer_settings
    __args__['scheduleSettings'] = schedule_settings
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('okta:index/getCampaign:getCampaign', __args__, opts=opts, typ=GetCampaignResult).value

    return AwaitableGetCampaignResult(
        campaign_type=pulumi.get(__ret__, 'campaign_type'),
        created=pulumi.get(__ret__, 'created'),
        created_by=pulumi.get(__ret__, 'created_by'),
        description=pulumi.get(__ret__, 'description'),
        id=pulumi.get(__ret__, 'id'),
        last_updated=pulumi.get(__ret__, 'last_updated'),
        last_updated_by=pulumi.get(__ret__, 'last_updated_by'),
        name=pulumi.get(__ret__, 'name'),
        notification_settings=pulumi.get(__ret__, 'notification_settings'),
        principal_scope_settings=pulumi.get(__ret__, 'principal_scope_settings'),
        recurring_campaign_id=pulumi.get(__ret__, 'recurring_campaign_id'),
        remediation_settings=pulumi.get(__ret__, 'remediation_settings'),
        resource_settings=pulumi.get(__ret__, 'resource_settings'),
        reviewer_settings=pulumi.get(__ret__, 'reviewer_settings'),
        schedule_settings=pulumi.get(__ret__, 'schedule_settings'),
        status=pulumi.get(__ret__, 'status'))
def get_campaign_output(campaign_type: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                        description: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                        id: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                        notification_settings: Optional[pulumi.Input[Optional[Union['GetCampaignNotificationSettingsArgs', 'GetCampaignNotificationSettingsArgsDict']]]] = None,
                        principal_scope_settings: Optional[pulumi.Input[Optional[Union['GetCampaignPrincipalScopeSettingsArgs', 'GetCampaignPrincipalScopeSettingsArgsDict']]]] = None,
                        remediation_settings: Optional[pulumi.Input[Optional[Union['GetCampaignRemediationSettingsArgs', 'GetCampaignRemediationSettingsArgsDict']]]] = None,
                        resource_settings: Optional[pulumi.Input[Optional[Union['GetCampaignResourceSettingsArgs', 'GetCampaignResourceSettingsArgsDict']]]] = None,
                        reviewer_settings: Optional[pulumi.Input[Optional[Union['GetCampaignReviewerSettingsArgs', 'GetCampaignReviewerSettingsArgsDict']]]] = None,
                        schedule_settings: Optional[pulumi.Input[Optional[Union['GetCampaignScheduleSettingsArgs', 'GetCampaignScheduleSettingsArgsDict']]]] = None,
                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetCampaignResult]:
    """
    Get the campaign belonging to an Okta organization.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_okta as okta

    test = okta.get_campaign(id="<campaign id>")
    ```


    :param _builtins.str id: The ID of this resource.
    """
    __args__ = dict()
    __args__['campaignType'] = campaign_type
    __args__['description'] = description
    __args__['id'] = id
    __args__['notificationSettings'] = notification_settings
    __args__['principalScopeSettings'] = principal_scope_settings
    __args__['remediationSettings'] = remediation_settings
    __args__['resourceSettings'] = resource_settings
    __args__['reviewerSettings'] = reviewer_settings
    __args__['scheduleSettings'] = schedule_settings
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('okta:index/getCampaign:getCampaign', __args__, opts=opts, typ=GetCampaignResult)
    return __ret__.apply(lambda __response__: GetCampaignResult(
        campaign_type=pulumi.get(__response__, 'campaign_type'),
        created=pulumi.get(__response__, 'created'),
        created_by=pulumi.get(__response__, 'created_by'),
        description=pulumi.get(__response__, 'description'),
        id=pulumi.get(__response__, 'id'),
        last_updated=pulumi.get(__response__, 'last_updated'),
        last_updated_by=pulumi.get(__response__, 'last_updated_by'),
        name=pulumi.get(__response__, 'name'),
        notification_settings=pulumi.get(__response__, 'notification_settings'),
        principal_scope_settings=pulumi.get(__response__, 'principal_scope_settings'),
        recurring_campaign_id=pulumi.get(__response__, 'recurring_campaign_id'),
        remediation_settings=pulumi.get(__response__, 'remediation_settings'),
        resource_settings=pulumi.get(__response__, 'resource_settings'),
        reviewer_settings=pulumi.get(__response__, 'reviewer_settings'),
        schedule_settings=pulumi.get(__response__, 'schedule_settings'),
        status=pulumi.get(__response__, 'status')))
