# 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__ = [
    'GetDeviceResult',
    'AwaitableGetDeviceResult',
    'get_device',
    'get_device_output',
]

@pulumi.output_type
class GetDeviceResult:
    """
    A collection of values returned by getDevice.
    """
    def __init__(__self__, created=None, id=None, last_updated=None, profile=None, resource_alternate_id=None, resource_display_name=None, resource_id=None, resource_type=None, status=None):
        if created and not isinstance(created, str):
            raise TypeError("Expected argument 'created' to be a str")
        pulumi.set(__self__, "created", created)
        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 profile and not isinstance(profile, dict):
            raise TypeError("Expected argument 'profile' to be a dict")
        pulumi.set(__self__, "profile", profile)
        if resource_alternate_id and not isinstance(resource_alternate_id, str):
            raise TypeError("Expected argument 'resource_alternate_id' to be a str")
        pulumi.set(__self__, "resource_alternate_id", resource_alternate_id)
        if resource_display_name and not isinstance(resource_display_name, dict):
            raise TypeError("Expected argument 'resource_display_name' to be a dict")
        pulumi.set(__self__, "resource_display_name", resource_display_name)
        if resource_id and not isinstance(resource_id, str):
            raise TypeError("Expected argument 'resource_id' to be a str")
        pulumi.set(__self__, "resource_id", resource_id)
        if resource_type and not isinstance(resource_type, str):
            raise TypeError("Expected argument 'resource_type' to be a str")
        pulumi.set(__self__, "resource_type", resource_type)
        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
    def created(self) -> _builtins.str:
        """
        The creation timestamp of the device.
        """
        return pulumi.get(self, "created")

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

    @_builtins.property
    @pulumi.getter(name="lastUpdated")
    def last_updated(self) -> _builtins.str:
        """
        The last updated timestamp of the device.
        """
        return pulumi.get(self, "last_updated")

    @_builtins.property
    @pulumi.getter
    def profile(self) -> Optional['outputs.GetDeviceProfileResult']:
        return pulumi.get(self, "profile")

    @_builtins.property
    @pulumi.getter(name="resourceAlternateId")
    def resource_alternate_id(self) -> _builtins.str:
        """
        The alternate ID of the device resource.
        """
        return pulumi.get(self, "resource_alternate_id")

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

    @_builtins.property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> _builtins.str:
        """
        Alternate key for the id.
        """
        return pulumi.get(self, "resource_id")

    @_builtins.property
    @pulumi.getter(name="resourceType")
    def resource_type(self) -> _builtins.str:
        """
        The resource type of the device.
        """
        return pulumi.get(self, "resource_type")

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


class AwaitableGetDeviceResult(GetDeviceResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDeviceResult(
            created=self.created,
            id=self.id,
            last_updated=self.last_updated,
            profile=self.profile,
            resource_alternate_id=self.resource_alternate_id,
            resource_display_name=self.resource_display_name,
            resource_id=self.resource_id,
            resource_type=self.resource_type,
            status=self.status)


def get_device(id: Optional[_builtins.str] = None,
               profile: Optional[Union['GetDeviceProfileArgs', 'GetDeviceProfileArgsDict']] = None,
               resource_display_name: Optional[Union['GetDeviceResourceDisplayNameArgs', 'GetDeviceResourceDisplayNameArgsDict']] = None,
               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDeviceResult:
    """
    Get information about a device in Okta.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_okta as okta

    example = okta.get_device(id="<device_id>")
    ```


    :param _builtins.str id: The ID of the device.
    """
    __args__ = dict()
    __args__['id'] = id
    __args__['profile'] = profile
    __args__['resourceDisplayName'] = resource_display_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('okta:index/getDevice:getDevice', __args__, opts=opts, typ=GetDeviceResult).value

    return AwaitableGetDeviceResult(
        created=pulumi.get(__ret__, 'created'),
        id=pulumi.get(__ret__, 'id'),
        last_updated=pulumi.get(__ret__, 'last_updated'),
        profile=pulumi.get(__ret__, 'profile'),
        resource_alternate_id=pulumi.get(__ret__, 'resource_alternate_id'),
        resource_display_name=pulumi.get(__ret__, 'resource_display_name'),
        resource_id=pulumi.get(__ret__, 'resource_id'),
        resource_type=pulumi.get(__ret__, 'resource_type'),
        status=pulumi.get(__ret__, 'status'))
def get_device_output(id: Optional[pulumi.Input[_builtins.str]] = None,
                      profile: Optional[pulumi.Input[Optional[Union['GetDeviceProfileArgs', 'GetDeviceProfileArgsDict']]]] = None,
                      resource_display_name: Optional[pulumi.Input[Optional[Union['GetDeviceResourceDisplayNameArgs', 'GetDeviceResourceDisplayNameArgsDict']]]] = None,
                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDeviceResult]:
    """
    Get information about a device in Okta.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_okta as okta

    example = okta.get_device(id="<device_id>")
    ```


    :param _builtins.str id: The ID of the device.
    """
    __args__ = dict()
    __args__['id'] = id
    __args__['profile'] = profile
    __args__['resourceDisplayName'] = resource_display_name
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('okta:index/getDevice:getDevice', __args__, opts=opts, typ=GetDeviceResult)
    return __ret__.apply(lambda __response__: GetDeviceResult(
        created=pulumi.get(__response__, 'created'),
        id=pulumi.get(__response__, 'id'),
        last_updated=pulumi.get(__response__, 'last_updated'),
        profile=pulumi.get(__response__, 'profile'),
        resource_alternate_id=pulumi.get(__response__, 'resource_alternate_id'),
        resource_display_name=pulumi.get(__response__, 'resource_display_name'),
        resource_id=pulumi.get(__response__, 'resource_id'),
        resource_type=pulumi.get(__response__, 'resource_type'),
        status=pulumi.get(__response__, 'status')))
