# 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
from . import outputs

__all__ = [
    'GetDomainsMyDeviceResult',
    'AwaitableGetDomainsMyDeviceResult',
    'get_domains_my_device',
    'get_domains_my_device_output',
]

@pulumi.output_type
class GetDomainsMyDeviceResult:
    """
    A collection of values returned by getDomainsMyDevice.
    """
    def __init__(__self__, additional_attributes=None, app_version=None, attribute_sets=None, attributes=None, authentication_factors=None, authentication_method=None, authorization=None, base_public_key=None, compartment_ocid=None, country_code=None, delete_in_progress=None, device_type=None, device_uuid=None, display_name=None, domain_ocid=None, expires_on=None, external_id=None, id=None, idcs_created_bies=None, idcs_endpoint=None, idcs_last_modified_bies=None, idcs_last_upgraded_in_release=None, idcs_prevented_operations=None, is_acc_rec_enabled=None, is_compliant=None, last_sync_time=None, last_validated_time=None, metas=None, my_device_id=None, non_compliances=None, ocid=None, package_id=None, phone_number=None, platform=None, push_notification_targets=None, reason=None, resource_type_schema_version=None, schemas=None, seed=None, seed_dek_id=None, status=None, tags=None, tenancy_ocid=None, third_party_factors=None, users=None):
        if additional_attributes and not isinstance(additional_attributes, list):
            raise TypeError("Expected argument 'additional_attributes' to be a list")
        pulumi.set(__self__, "additional_attributes", additional_attributes)
        if app_version and not isinstance(app_version, str):
            raise TypeError("Expected argument 'app_version' to be a str")
        pulumi.set(__self__, "app_version", app_version)
        if attribute_sets and not isinstance(attribute_sets, list):
            raise TypeError("Expected argument 'attribute_sets' to be a list")
        pulumi.set(__self__, "attribute_sets", attribute_sets)
        if attributes and not isinstance(attributes, str):
            raise TypeError("Expected argument 'attributes' to be a str")
        pulumi.set(__self__, "attributes", attributes)
        if authentication_factors and not isinstance(authentication_factors, list):
            raise TypeError("Expected argument 'authentication_factors' to be a list")
        pulumi.set(__self__, "authentication_factors", authentication_factors)
        if authentication_method and not isinstance(authentication_method, str):
            raise TypeError("Expected argument 'authentication_method' to be a str")
        pulumi.set(__self__, "authentication_method", authentication_method)
        if authorization and not isinstance(authorization, str):
            raise TypeError("Expected argument 'authorization' to be a str")
        pulumi.set(__self__, "authorization", authorization)
        if base_public_key and not isinstance(base_public_key, str):
            raise TypeError("Expected argument 'base_public_key' to be a str")
        pulumi.set(__self__, "base_public_key", base_public_key)
        if compartment_ocid and not isinstance(compartment_ocid, str):
            raise TypeError("Expected argument 'compartment_ocid' to be a str")
        pulumi.set(__self__, "compartment_ocid", compartment_ocid)
        if country_code and not isinstance(country_code, str):
            raise TypeError("Expected argument 'country_code' to be a str")
        pulumi.set(__self__, "country_code", country_code)
        if delete_in_progress and not isinstance(delete_in_progress, bool):
            raise TypeError("Expected argument 'delete_in_progress' to be a bool")
        pulumi.set(__self__, "delete_in_progress", delete_in_progress)
        if device_type and not isinstance(device_type, str):
            raise TypeError("Expected argument 'device_type' to be a str")
        pulumi.set(__self__, "device_type", device_type)
        if device_uuid and not isinstance(device_uuid, str):
            raise TypeError("Expected argument 'device_uuid' to be a str")
        pulumi.set(__self__, "device_uuid", device_uuid)
        if display_name and not isinstance(display_name, str):
            raise TypeError("Expected argument 'display_name' to be a str")
        pulumi.set(__self__, "display_name", display_name)
        if domain_ocid and not isinstance(domain_ocid, str):
            raise TypeError("Expected argument 'domain_ocid' to be a str")
        pulumi.set(__self__, "domain_ocid", domain_ocid)
        if expires_on and not isinstance(expires_on, int):
            raise TypeError("Expected argument 'expires_on' to be a int")
        pulumi.set(__self__, "expires_on", expires_on)
        if external_id and not isinstance(external_id, str):
            raise TypeError("Expected argument 'external_id' to be a str")
        pulumi.set(__self__, "external_id", external_id)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if idcs_created_bies and not isinstance(idcs_created_bies, list):
            raise TypeError("Expected argument 'idcs_created_bies' to be a list")
        pulumi.set(__self__, "idcs_created_bies", idcs_created_bies)
        if idcs_endpoint and not isinstance(idcs_endpoint, str):
            raise TypeError("Expected argument 'idcs_endpoint' to be a str")
        pulumi.set(__self__, "idcs_endpoint", idcs_endpoint)
        if idcs_last_modified_bies and not isinstance(idcs_last_modified_bies, list):
            raise TypeError("Expected argument 'idcs_last_modified_bies' to be a list")
        pulumi.set(__self__, "idcs_last_modified_bies", idcs_last_modified_bies)
        if idcs_last_upgraded_in_release and not isinstance(idcs_last_upgraded_in_release, str):
            raise TypeError("Expected argument 'idcs_last_upgraded_in_release' to be a str")
        pulumi.set(__self__, "idcs_last_upgraded_in_release", idcs_last_upgraded_in_release)
        if idcs_prevented_operations and not isinstance(idcs_prevented_operations, list):
            raise TypeError("Expected argument 'idcs_prevented_operations' to be a list")
        pulumi.set(__self__, "idcs_prevented_operations", idcs_prevented_operations)
        if is_acc_rec_enabled and not isinstance(is_acc_rec_enabled, bool):
            raise TypeError("Expected argument 'is_acc_rec_enabled' to be a bool")
        pulumi.set(__self__, "is_acc_rec_enabled", is_acc_rec_enabled)
        if is_compliant and not isinstance(is_compliant, bool):
            raise TypeError("Expected argument 'is_compliant' to be a bool")
        pulumi.set(__self__, "is_compliant", is_compliant)
        if last_sync_time and not isinstance(last_sync_time, str):
            raise TypeError("Expected argument 'last_sync_time' to be a str")
        pulumi.set(__self__, "last_sync_time", last_sync_time)
        if last_validated_time and not isinstance(last_validated_time, str):
            raise TypeError("Expected argument 'last_validated_time' to be a str")
        pulumi.set(__self__, "last_validated_time", last_validated_time)
        if metas and not isinstance(metas, list):
            raise TypeError("Expected argument 'metas' to be a list")
        pulumi.set(__self__, "metas", metas)
        if my_device_id and not isinstance(my_device_id, str):
            raise TypeError("Expected argument 'my_device_id' to be a str")
        pulumi.set(__self__, "my_device_id", my_device_id)
        if non_compliances and not isinstance(non_compliances, list):
            raise TypeError("Expected argument 'non_compliances' to be a list")
        pulumi.set(__self__, "non_compliances", non_compliances)
        if ocid and not isinstance(ocid, str):
            raise TypeError("Expected argument 'ocid' to be a str")
        pulumi.set(__self__, "ocid", ocid)
        if package_id and not isinstance(package_id, str):
            raise TypeError("Expected argument 'package_id' to be a str")
        pulumi.set(__self__, "package_id", package_id)
        if phone_number and not isinstance(phone_number, str):
            raise TypeError("Expected argument 'phone_number' to be a str")
        pulumi.set(__self__, "phone_number", phone_number)
        if platform and not isinstance(platform, str):
            raise TypeError("Expected argument 'platform' to be a str")
        pulumi.set(__self__, "platform", platform)
        if push_notification_targets and not isinstance(push_notification_targets, list):
            raise TypeError("Expected argument 'push_notification_targets' to be a list")
        pulumi.set(__self__, "push_notification_targets", push_notification_targets)
        if reason and not isinstance(reason, str):
            raise TypeError("Expected argument 'reason' to be a str")
        pulumi.set(__self__, "reason", reason)
        if resource_type_schema_version and not isinstance(resource_type_schema_version, str):
            raise TypeError("Expected argument 'resource_type_schema_version' to be a str")
        pulumi.set(__self__, "resource_type_schema_version", resource_type_schema_version)
        if schemas and not isinstance(schemas, list):
            raise TypeError("Expected argument 'schemas' to be a list")
        pulumi.set(__self__, "schemas", schemas)
        if seed and not isinstance(seed, str):
            raise TypeError("Expected argument 'seed' to be a str")
        pulumi.set(__self__, "seed", seed)
        if seed_dek_id and not isinstance(seed_dek_id, str):
            raise TypeError("Expected argument 'seed_dek_id' to be a str")
        pulumi.set(__self__, "seed_dek_id", seed_dek_id)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if tenancy_ocid and not isinstance(tenancy_ocid, str):
            raise TypeError("Expected argument 'tenancy_ocid' to be a str")
        pulumi.set(__self__, "tenancy_ocid", tenancy_ocid)
        if third_party_factors and not isinstance(third_party_factors, list):
            raise TypeError("Expected argument 'third_party_factors' to be a list")
        pulumi.set(__self__, "third_party_factors", third_party_factors)
        if users and not isinstance(users, list):
            raise TypeError("Expected argument 'users' to be a list")
        pulumi.set(__self__, "users", users)

    @property
    @pulumi.getter(name="additionalAttributes")
    def additional_attributes(self) -> Sequence['outputs.GetDomainsMyDeviceAdditionalAttributeResult']:
        """
        Device additional attributes
        """
        return pulumi.get(self, "additional_attributes")

    @property
    @pulumi.getter(name="appVersion")
    def app_version(self) -> str:
        """
        Mobile Authenticator App Version
        """
        return pulumi.get(self, "app_version")

    @property
    @pulumi.getter(name="attributeSets")
    def attribute_sets(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "attribute_sets")

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

    @property
    @pulumi.getter(name="authenticationFactors")
    def authentication_factors(self) -> Sequence['outputs.GetDomainsMyDeviceAuthenticationFactorResult']:
        """
        Authentication Factors
        """
        return pulumi.get(self, "authentication_factors")

    @property
    @pulumi.getter(name="authenticationMethod")
    def authentication_method(self) -> str:
        """
        Authentication method used in device. For FIDO, it will contain SECURITY_KEY/WINDOWS_HELLO etc
        """
        return pulumi.get(self, "authentication_method")

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

    @property
    @pulumi.getter(name="basePublicKey")
    def base_public_key(self) -> str:
        """
        Device base public Key
        """
        return pulumi.get(self, "base_public_key")

    @property
    @pulumi.getter(name="compartmentOcid")
    def compartment_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Compartment Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "compartment_ocid")

    @property
    @pulumi.getter(name="countryCode")
    def country_code(self) -> str:
        """
        Country code of user's Phone Number
        """
        return pulumi.get(self, "country_code")

    @property
    @pulumi.getter(name="deleteInProgress")
    def delete_in_progress(self) -> bool:
        """
        A boolean flag indicating this resource in the process of being deleted. Usually set to true when synchronous deletion of the resource would take too long.
        """
        return pulumi.get(self, "delete_in_progress")

    @property
    @pulumi.getter(name="deviceType")
    def device_type(self) -> str:
        """
        Device hardware name/model
        """
        return pulumi.get(self, "device_type")

    @property
    @pulumi.getter(name="deviceUuid")
    def device_uuid(self) -> str:
        """
        Unique id sent from device
        """
        return pulumi.get(self, "device_uuid")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        Device friendly display name
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="domainOcid")
    def domain_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Domain Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "domain_ocid")

    @property
    @pulumi.getter(name="expiresOn")
    def expires_on(self) -> int:
        """
        Attribute added for replication log, it is not used by IDCS, just added as place holder
        """
        return pulumi.get(self, "expires_on")

    @property
    @pulumi.getter(name="externalId")
    def external_id(self) -> str:
        """
        An identifier for the Resource as defined by the Service Consumer. The externalId may simplify identification of the Resource between Service Consumer and Service Provider by allowing the Consumer to refer to the Resource with its own identifier, obviating the need to store a local mapping between the local identifier of the Resource and the identifier used by the Service Provider. Each Resource MAY include a non-empty externalId value. The value of the externalId attribute is always issued be the Service Consumer and can never be specified by the Service Provider. The Service Provider MUST always interpret the externalId as scoped to the Service Consumer's tenant.
        """
        return pulumi.get(self, "external_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The provider-assigned unique ID for this managed resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="idcsCreatedBies")
    def idcs_created_bies(self) -> Sequence['outputs.GetDomainsMyDeviceIdcsCreatedByResult']:
        """
        The User or App who created the Resource
        """
        return pulumi.get(self, "idcs_created_bies")

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

    @property
    @pulumi.getter(name="idcsLastModifiedBies")
    def idcs_last_modified_bies(self) -> Sequence['outputs.GetDomainsMyDeviceIdcsLastModifiedByResult']:
        """
        The User or App who modified the Resource
        """
        return pulumi.get(self, "idcs_last_modified_bies")

    @property
    @pulumi.getter(name="idcsLastUpgradedInRelease")
    def idcs_last_upgraded_in_release(self) -> str:
        """
        The release number when the resource was upgraded.
        """
        return pulumi.get(self, "idcs_last_upgraded_in_release")

    @property
    @pulumi.getter(name="idcsPreventedOperations")
    def idcs_prevented_operations(self) -> Sequence[str]:
        """
        Each value of this attribute specifies an operation that only an internal client may perform on this particular resource.
        """
        return pulumi.get(self, "idcs_prevented_operations")

    @property
    @pulumi.getter(name="isAccRecEnabled")
    def is_acc_rec_enabled(self) -> bool:
        """
        Flag that indicates whether the device is enrolled for account recovery
        """
        return pulumi.get(self, "is_acc_rec_enabled")

    @property
    @pulumi.getter(name="isCompliant")
    def is_compliant(self) -> bool:
        """
        Device Compliance Status
        """
        return pulumi.get(self, "is_compliant")

    @property
    @pulumi.getter(name="lastSyncTime")
    def last_sync_time(self) -> str:
        """
        Last Sync time for device
        """
        return pulumi.get(self, "last_sync_time")

    @property
    @pulumi.getter(name="lastValidatedTime")
    def last_validated_time(self) -> str:
        """
        The most recent timestamp when the device was successfully validated using one time passcode
        """
        return pulumi.get(self, "last_validated_time")

    @property
    @pulumi.getter
    def metas(self) -> Sequence['outputs.GetDomainsMyDeviceMetaResult']:
        """
        A complex attribute that contains resource metadata. All sub-attributes are OPTIONAL.
        """
        return pulumi.get(self, "metas")

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

    @property
    @pulumi.getter(name="nonCompliances")
    def non_compliances(self) -> Sequence['outputs.GetDomainsMyDeviceNonComplianceResult']:
        """
        Device Non Compliances
        """
        return pulumi.get(self, "non_compliances")

    @property
    @pulumi.getter
    def ocid(self) -> str:
        """
        The OCID of the user
        """
        return pulumi.get(self, "ocid")

    @property
    @pulumi.getter(name="packageId")
    def package_id(self) -> str:
        """
        Mobile Authenticator App Package Id
        """
        return pulumi.get(self, "package_id")

    @property
    @pulumi.getter(name="phoneNumber")
    def phone_number(self) -> str:
        """
        User's Phone Number
        """
        return pulumi.get(self, "phone_number")

    @property
    @pulumi.getter
    def platform(self) -> str:
        """
        Device Platform
        """
        return pulumi.get(self, "platform")

    @property
    @pulumi.getter(name="pushNotificationTargets")
    def push_notification_targets(self) -> Sequence['outputs.GetDomainsMyDevicePushNotificationTargetResult']:
        """
        Push Notification target. Reference to Device notification related resource
        """
        return pulumi.get(self, "push_notification_targets")

    @property
    @pulumi.getter
    def reason(self) -> str:
        """
        Additional comments/reasons for the change in device status
        """
        return pulumi.get(self, "reason")

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

    @property
    @pulumi.getter
    def schemas(self) -> Sequence[str]:
        """
        REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \\"enterprise\\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior.
        """
        return pulumi.get(self, "schemas")

    @property
    @pulumi.getter
    def seed(self) -> str:
        """
        Attribute added for replication log, it is not used by IDCS, it is actual encrypted TOTP seed for the user
        """
        return pulumi.get(self, "seed")

    @property
    @pulumi.getter(name="seedDekId")
    def seed_dek_id(self) -> str:
        """
        Attribute added for replication log, it is not used by IDCS, the DEK that encrypts the specific seed for that user
        """
        return pulumi.get(self, "seed_dek_id")

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

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetDomainsMyDeviceTagResult']:
        """
        A list of tags on this resource.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="tenancyOcid")
    def tenancy_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Tenant Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "tenancy_ocid")

    @property
    @pulumi.getter(name="thirdPartyFactors")
    def third_party_factors(self) -> Sequence['outputs.GetDomainsMyDeviceThirdPartyFactorResult']:
        """
        User's third-party authentication factor details
        """
        return pulumi.get(self, "third_party_factors")

    @property
    @pulumi.getter
    def users(self) -> Sequence['outputs.GetDomainsMyDeviceUserResult']:
        """
        Device member
        """
        return pulumi.get(self, "users")


class AwaitableGetDomainsMyDeviceResult(GetDomainsMyDeviceResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDomainsMyDeviceResult(
            additional_attributes=self.additional_attributes,
            app_version=self.app_version,
            attribute_sets=self.attribute_sets,
            attributes=self.attributes,
            authentication_factors=self.authentication_factors,
            authentication_method=self.authentication_method,
            authorization=self.authorization,
            base_public_key=self.base_public_key,
            compartment_ocid=self.compartment_ocid,
            country_code=self.country_code,
            delete_in_progress=self.delete_in_progress,
            device_type=self.device_type,
            device_uuid=self.device_uuid,
            display_name=self.display_name,
            domain_ocid=self.domain_ocid,
            expires_on=self.expires_on,
            external_id=self.external_id,
            id=self.id,
            idcs_created_bies=self.idcs_created_bies,
            idcs_endpoint=self.idcs_endpoint,
            idcs_last_modified_bies=self.idcs_last_modified_bies,
            idcs_last_upgraded_in_release=self.idcs_last_upgraded_in_release,
            idcs_prevented_operations=self.idcs_prevented_operations,
            is_acc_rec_enabled=self.is_acc_rec_enabled,
            is_compliant=self.is_compliant,
            last_sync_time=self.last_sync_time,
            last_validated_time=self.last_validated_time,
            metas=self.metas,
            my_device_id=self.my_device_id,
            non_compliances=self.non_compliances,
            ocid=self.ocid,
            package_id=self.package_id,
            phone_number=self.phone_number,
            platform=self.platform,
            push_notification_targets=self.push_notification_targets,
            reason=self.reason,
            resource_type_schema_version=self.resource_type_schema_version,
            schemas=self.schemas,
            seed=self.seed,
            seed_dek_id=self.seed_dek_id,
            status=self.status,
            tags=self.tags,
            tenancy_ocid=self.tenancy_ocid,
            third_party_factors=self.third_party_factors,
            users=self.users)


def get_domains_my_device(attribute_sets: Optional[Sequence[str]] = None,
                          attributes: Optional[str] = None,
                          authorization: Optional[str] = None,
                          idcs_endpoint: Optional[str] = None,
                          my_device_id: Optional[str] = None,
                          resource_type_schema_version: Optional[str] = None,
                          opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDomainsMyDeviceResult:
    """
    This data source provides details about a specific My Device resource in Oracle Cloud Infrastructure Identity Domains service.

    Get a Device

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_my_device = oci.Identity.get_domains_my_device(idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        my_device_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str my_device_id: ID of the resource
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    __args__ = dict()
    __args__['attributeSets'] = attribute_sets
    __args__['attributes'] = attributes
    __args__['authorization'] = authorization
    __args__['idcsEndpoint'] = idcs_endpoint
    __args__['myDeviceId'] = my_device_id
    __args__['resourceTypeSchemaVersion'] = resource_type_schema_version
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('oci:Identity/getDomainsMyDevice:getDomainsMyDevice', __args__, opts=opts, typ=GetDomainsMyDeviceResult).value

    return AwaitableGetDomainsMyDeviceResult(
        additional_attributes=__ret__.additional_attributes,
        app_version=__ret__.app_version,
        attribute_sets=__ret__.attribute_sets,
        attributes=__ret__.attributes,
        authentication_factors=__ret__.authentication_factors,
        authentication_method=__ret__.authentication_method,
        authorization=__ret__.authorization,
        base_public_key=__ret__.base_public_key,
        compartment_ocid=__ret__.compartment_ocid,
        country_code=__ret__.country_code,
        delete_in_progress=__ret__.delete_in_progress,
        device_type=__ret__.device_type,
        device_uuid=__ret__.device_uuid,
        display_name=__ret__.display_name,
        domain_ocid=__ret__.domain_ocid,
        expires_on=__ret__.expires_on,
        external_id=__ret__.external_id,
        id=__ret__.id,
        idcs_created_bies=__ret__.idcs_created_bies,
        idcs_endpoint=__ret__.idcs_endpoint,
        idcs_last_modified_bies=__ret__.idcs_last_modified_bies,
        idcs_last_upgraded_in_release=__ret__.idcs_last_upgraded_in_release,
        idcs_prevented_operations=__ret__.idcs_prevented_operations,
        is_acc_rec_enabled=__ret__.is_acc_rec_enabled,
        is_compliant=__ret__.is_compliant,
        last_sync_time=__ret__.last_sync_time,
        last_validated_time=__ret__.last_validated_time,
        metas=__ret__.metas,
        my_device_id=__ret__.my_device_id,
        non_compliances=__ret__.non_compliances,
        ocid=__ret__.ocid,
        package_id=__ret__.package_id,
        phone_number=__ret__.phone_number,
        platform=__ret__.platform,
        push_notification_targets=__ret__.push_notification_targets,
        reason=__ret__.reason,
        resource_type_schema_version=__ret__.resource_type_schema_version,
        schemas=__ret__.schemas,
        seed=__ret__.seed,
        seed_dek_id=__ret__.seed_dek_id,
        status=__ret__.status,
        tags=__ret__.tags,
        tenancy_ocid=__ret__.tenancy_ocid,
        third_party_factors=__ret__.third_party_factors,
        users=__ret__.users)


@_utilities.lift_output_func(get_domains_my_device)
def get_domains_my_device_output(attribute_sets: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
                                 attributes: Optional[pulumi.Input[Optional[str]]] = None,
                                 authorization: Optional[pulumi.Input[Optional[str]]] = None,
                                 idcs_endpoint: Optional[pulumi.Input[str]] = None,
                                 my_device_id: Optional[pulumi.Input[str]] = None,
                                 resource_type_schema_version: Optional[pulumi.Input[Optional[str]]] = None,
                                 opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDomainsMyDeviceResult]:
    """
    This data source provides details about a specific My Device resource in Oracle Cloud Infrastructure Identity Domains service.

    Get a Device

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_my_device = oci.Identity.get_domains_my_device(idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        my_device_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str my_device_id: ID of the resource
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    ...
