# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

import datetime
from typing import Dict, List, Optional, Union

from azure.core.exceptions import HttpResponseError
import msrest.serialization

from ._identity_sign_ins_enums import *


class collectionofactivitybasedtimeoutpolicy(msrest.serialization.Model):
    """Collection of activityBasedTimeoutPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphactivitybasedtimeoutpolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphactivitybasedtimeoutpolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphactivitybasedtimeoutpolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofactivitybasedtimeoutpolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofcertificatebasedauthconfiguration(msrest.serialization.Model):
    """Collection of certificateBasedAuthConfiguration.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphcertificatebasedauthconfiguration]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphcertificatebasedauthconfiguration]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphcertificatebasedauthconfiguration"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofcertificatebasedauthconfiguration, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofclaimsmappingpolicy(msrest.serialization.Model):
    """Collection of claimsMappingPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphclaimsmappingpolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphclaimsmappingpolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphclaimsmappingpolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofclaimsmappingpolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofconditionalaccesspolicy(msrest.serialization.Model):
    """Collection of conditionalAccessPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphconditionalaccesspolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphconditionalaccesspolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphconditionalaccesspolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofconditionalaccesspolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofconditionalaccesspolicy0(msrest.serialization.Model):
    """Collection of conditionalAccessPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphconditionalaccesspolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphconditionalaccesspolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphconditionalaccesspolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofconditionalaccesspolicy0, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofdatapolicyoperation(msrest.serialization.Model):
    """Collection of dataPolicyOperation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphdatapolicyoperation]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphdatapolicyoperation]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphdatapolicyoperation"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofdatapolicyoperation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofhomerealmdiscoverypolicy(msrest.serialization.Model):
    """Collection of homeRealmDiscoveryPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphhomerealmdiscoverypolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphhomerealmdiscoverypolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphhomerealmdiscoverypolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofhomerealmdiscoverypolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofidentityprovider(msrest.serialization.Model):
    """Collection of identityProvider.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphidentityprovider]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphidentityprovider]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphidentityprovider"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofidentityprovider, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofinvitation(msrest.serialization.Model):
    """Collection of invitation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphinvitation]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphinvitation]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphinvitation"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofinvitation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionoflinksofcertificatebasedauthconfiguration(msrest.serialization.Model):
    """Collection of links of certificateBasedAuthConfiguration.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[str]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[str]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List[str]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionoflinksofcertificatebasedauthconfiguration, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofnamedlocation(msrest.serialization.Model):
    """Collection of namedLocation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphnamedlocation]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphnamedlocation]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphnamedlocation"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofnamedlocation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofoauth2permissiongrant(msrest.serialization.Model):
    """Collection of oAuth2PermissionGrant.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphoauth2permissiongrant]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphoauth2permissiongrant]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphoauth2permissiongrant"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofoauth2permissiongrant, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofpermissiongrantconditionset(msrest.serialization.Model):
    """Collection of permissionGrantConditionSet.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphpermissiongrantconditionset]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphpermissiongrantconditionset]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphpermissiongrantconditionset"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofpermissiongrantconditionset, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofpermissiongrantconditionset0(msrest.serialization.Model):
    """Collection of permissionGrantConditionSet.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphpermissiongrantconditionset]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphpermissiongrantconditionset]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphpermissiongrantconditionset"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofpermissiongrantconditionset0, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofpermissiongrantpolicy(msrest.serialization.Model):
    """Collection of permissionGrantPolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphpermissiongrantpolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphpermissiongrantpolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphpermissiongrantpolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofpermissiongrantpolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofthreatassessmentrequest(msrest.serialization.Model):
    """Collection of threatAssessmentRequest.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphthreatassessmentrequest]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphthreatassessmentrequest]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphthreatassessmentrequest"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofthreatassessmentrequest, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionofthreatassessmentresult(msrest.serialization.Model):
    """Collection of threatAssessmentResult.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphthreatassessmentresult]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphthreatassessmentresult]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphthreatassessmentresult"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionofthreatassessmentresult, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionoftokenissuancepolicy(msrest.serialization.Model):
    """Collection of tokenIssuancePolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphtokenissuancepolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphtokenissuancepolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphtokenissuancepolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionoftokenissuancepolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class collectionoftokenlifetimepolicy(msrest.serialization.Model):
    """Collection of tokenLifetimePolicy.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value:
    :type value: list[~identity_sign_ins.models.microsoftgraphtokenlifetimepolicy]
    :param odata_next_link:
    :type odata_next_link: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[microsoftgraphtokenlifetimepolicy]'},
        'odata_next_link': {'key': '@odata\\.nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List["microsoftgraphtokenlifetimepolicy"]] = None,
        odata_next_link: Optional[str] = None,
        **kwargs
    ):
        super(collectionoftokenlifetimepolicy, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.odata_next_link = odata_next_link


class microsoftgraphentity(msrest.serialization.Model):
    """entity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param id: Read-only.
    :type id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphentity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.id = id


class microsoftgraphdirectoryobject(microsoftgraphentity):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphdirectoryobject, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.deleted_date_time = deleted_date_time


class microsoftgraphpolicybase(microsoftgraphdirectoryobject):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpolicybase, self).__init__(id=id, deleted_date_time=deleted_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.description = description
        self.display_name = display_name


class microsoftgraphstspolicy(microsoftgraphpolicybase):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        **kwargs
    ):
        super(microsoftgraphstspolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, **kwargs)
        self.additional_properties = additional_properties
        self.definition = definition
        self.is_organization_default = is_organization_default
        self.applies_to = applies_to


class microsoftgraphactivitybasedtimeoutpolicy(microsoftgraphstspolicy):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphactivitybasedtimeoutpolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, definition=definition, is_organization_default=is_organization_default, applies_to=applies_to, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphactivityhistoryitem(microsoftgraphentity):
    """activityHistoryItem.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param active_duration_seconds: Optional. The duration of active user engagement. if not
     supplied, this is calculated from the startedDateTime and lastActiveDateTime.
    :type active_duration_seconds: int
    :param created_date_time: Set by the server. DateTime in UTC when the object was created on the
     server.
    :type created_date_time: ~datetime.datetime
    :param expiration_date_time: Optional. UTC DateTime when the historyItem will undergo hard-
     delete. Can be set by the client.
    :type expiration_date_time: ~datetime.datetime
    :param last_active_date_time: Optional. UTC DateTime when the historyItem (activity session)
     was last understood as active or finished - if null, historyItem status should be Ongoing.
    :type last_active_date_time: ~datetime.datetime
    :param last_modified_date_time: Set by the server. DateTime in UTC when the object was modified
     on the server.
    :type last_modified_date_time: ~datetime.datetime
    :param started_date_time: Required. UTC DateTime when the historyItem (activity session) was
     started. Required for timeline history.
    :type started_date_time: ~datetime.datetime
    :param status:  Possible values include: "active", "updated", "deleted", "ignored",
     "unknownFutureValue".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphstatus
    :param user_timezone: Optional. The timezone in which the user's device used to generate the
     activity was located at activity creation time. Values supplied as Olson IDs in order to
     support cross-platform representation.
    :type user_timezone: str
    :param activity: userActivity.
    :type activity: ~identity_sign_ins.models.microsoftgraphuseractivity
    """

    _validation = {
        'active_duration_seconds': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'active_duration_seconds': {'key': 'activeDurationSeconds', 'type': 'int'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'expiration_date_time': {'key': 'expirationDateTime', 'type': 'iso-8601'},
        'last_active_date_time': {'key': 'lastActiveDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'started_date_time': {'key': 'startedDateTime', 'type': 'iso-8601'},
        'status': {'key': 'status', 'type': 'str'},
        'user_timezone': {'key': 'userTimezone', 'type': 'str'},
        'activity': {'key': 'activity', 'type': 'microsoftgraphuseractivity'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        active_duration_seconds: Optional[int] = None,
        created_date_time: Optional[datetime.datetime] = None,
        expiration_date_time: Optional[datetime.datetime] = None,
        last_active_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        started_date_time: Optional[datetime.datetime] = None,
        status: Optional[Union[str, "Microsoftgraphstatus"]] = None,
        user_timezone: Optional[str] = None,
        activity: Optional["microsoftgraphuseractivity"] = None,
        **kwargs
    ):
        super(microsoftgraphactivityhistoryitem, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.active_duration_seconds = active_duration_seconds
        self.created_date_time = created_date_time
        self.expiration_date_time = expiration_date_time
        self.last_active_date_time = last_active_date_time
        self.last_modified_date_time = last_modified_date_time
        self.started_date_time = started_date_time
        self.status = status
        self.user_timezone = user_timezone
        self.activity = activity


class microsoftgraphconditionalaccesssessioncontrol(msrest.serialization.Model):
    """conditionalAccessSessionControl.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param is_enabled: Specifies whether the session control is enabled.
    :type is_enabled: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        is_enabled: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccesssessioncontrol, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.is_enabled = is_enabled


class microsoftgraphapplicationenforcedrestrictionssessioncontrol(microsoftgraphconditionalaccesssessioncontrol):
    """applicationEnforcedRestrictionsSessionControl.

    :param is_enabled: Specifies whether the session control is enabled.
    :type is_enabled: bool
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        is_enabled: Optional[bool] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphapplicationenforcedrestrictionssessioncontrol, self).__init__(is_enabled=is_enabled, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphapproleassignment(microsoftgraphdirectoryobject):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param app_role_id: The identifier (id) for the app role which is assigned to the principal.
     This app role must be exposed in the appRoles property on the resource application's service
     principal (resourceId). If the resource application has not declared any app roles, a default
     app role ID of 00000000-0000-0000-0000-000000000000 can be specified to signal that the
     principal is assigned to the resource app without any specific app roles. Required on create.
     Does not support $filter.
    :type app_role_id: str
    :param created_date_time:
    :type created_date_time: ~datetime.datetime
    :param principal_display_name: The display name of the user, group, or service principal that
     was granted the app role assignment. Read-only. Supports $filter (eq and startswith).
    :type principal_display_name: str
    :param principal_id: The unique identifier (id) for the user, group or service principal being
     granted the app role. Required on create. Does not support $filter.
    :type principal_id: str
    :param principal_type: The type of the assigned principal. This can either be 'User', 'Group'
     or 'ServicePrincipal'. Read-only. Does not support $filter.
    :type principal_type: str
    :param resource_display_name: The display name of the resource app's service principal to which
     the assignment is made. Does not support $filter.
    :type resource_display_name: str
    :param resource_id: The unique identifier (id) for the resource service principal for which the
     assignment is made. Required on create. Supports $filter (eq only).
    :type resource_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'app_role_id': {'key': 'appRoleId', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'principal_display_name': {'key': 'principalDisplayName', 'type': 'str'},
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'principal_type': {'key': 'principalType', 'type': 'str'},
        'resource_display_name': {'key': 'resourceDisplayName', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        app_role_id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        principal_display_name: Optional[str] = None,
        principal_id: Optional[str] = None,
        principal_type: Optional[str] = None,
        resource_display_name: Optional[str] = None,
        resource_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphapproleassignment, self).__init__(id=id, deleted_date_time=deleted_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.app_role_id = app_role_id
        self.created_date_time = created_date_time
        self.principal_display_name = principal_display_name
        self.principal_id = principal_id
        self.principal_type = principal_type
        self.resource_display_name = resource_display_name
        self.resource_id = resource_id


class microsoftgraphassignedlabel(msrest.serialization.Model):
    """assignedLabel.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The display name of the label. Read-only.
    :type display_name: str
    :param label_id: The unique identifier of the label.
    :type label_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'label_id': {'key': 'labelId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        label_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphassignedlabel, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.label_id = label_id


class microsoftgraphassignedlicense(msrest.serialization.Model):
    """assignedLicense.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param disabled_plans: A collection of the unique identifiers for plans that have been
     disabled.
    :type disabled_plans: list[str]
    :param sku_id: The unique identifier for the SKU.
    :type sku_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'disabled_plans': {'key': 'disabledPlans', 'type': '[str]'},
        'sku_id': {'key': 'skuId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        disabled_plans: Optional[List[str]] = None,
        sku_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphassignedlicense, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.disabled_plans = disabled_plans
        self.sku_id = sku_id


class microsoftgraphassignedplan(msrest.serialization.Model):
    """assignedPlan.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assigned_date_time: The date and time at which the plan was assigned; for example:
     2013-01-02T19:32:30Z. The Timestamp type represents date and time information using ISO 8601
     format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type assigned_date_time: ~datetime.datetime
    :param capability_status: For example, 'Enabled'.
    :type capability_status: str
    :param service: The name of the service; for example, 'Exchange'.
    :type service: str
    :param service_plan_id: A GUID that identifies the service plan.
    :type service_plan_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'assigned_date_time': {'key': 'assignedDateTime', 'type': 'iso-8601'},
        'capability_status': {'key': 'capabilityStatus', 'type': 'str'},
        'service': {'key': 'service', 'type': 'str'},
        'service_plan_id': {'key': 'servicePlanId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        assigned_date_time: Optional[datetime.datetime] = None,
        capability_status: Optional[str] = None,
        service: Optional[str] = None,
        service_plan_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphassignedplan, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.assigned_date_time = assigned_date_time
        self.capability_status = capability_status
        self.service = service
        self.service_plan_id = service_plan_id


class microsoftgraphattachment(microsoftgraphentity):
    """attachment.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content_type: The MIME type.
    :type content_type: str
    :param is_inline: true if the attachment is an inline attachment; otherwise, false.
    :type is_inline: bool
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The attachment's file name.
    :type name: str
    :param size: The length of the attachment in bytes.
    :type size: int
    """

    _validation = {
        'size': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content_type': {'key': 'contentType', 'type': 'str'},
        'is_inline': {'key': 'isInline', 'type': 'bool'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'size': {'key': 'size', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content_type: Optional[str] = None,
        is_inline: Optional[bool] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        size: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphattachment, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.content_type = content_type
        self.is_inline = is_inline
        self.last_modified_date_time = last_modified_date_time
        self.name = name
        self.size = size


class microsoftgraphrecipient(msrest.serialization.Model):
    """recipient.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param email_address: emailAddress.
    :type email_address: ~identity_sign_ins.models.microsoftgraphemailaddress
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'email_address': {'key': 'emailAddress', 'type': 'microsoftgraphemailaddress'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        email_address: Optional["microsoftgraphemailaddress"] = None,
        **kwargs
    ):
        super(microsoftgraphrecipient, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.email_address = email_address


class microsoftgraphattendeebase(microsoftgraphrecipient):
    """attendeeBase.

    :param email_address: emailAddress.
    :type email_address: ~identity_sign_ins.models.microsoftgraphemailaddress
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param type:  Possible values include: "required", "optional", "resource".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphattendeetype
    """

    _attribute_map = {
        'email_address': {'key': 'emailAddress', 'type': 'microsoftgraphemailaddress'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        email_address: Optional["microsoftgraphemailaddress"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        type: Optional[Union[str, "Microsoftgraphattendeetype"]] = None,
        **kwargs
    ):
        super(microsoftgraphattendeebase, self).__init__(email_address=email_address, **kwargs)
        self.additional_properties = additional_properties
        self.type = type


class microsoftgraphattendee(microsoftgraphattendeebase):
    """attendee.

    :param email_address: emailAddress.
    :type email_address: ~identity_sign_ins.models.microsoftgraphemailaddress
    :param type:  Possible values include: "required", "optional", "resource".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphattendeetype
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param proposed_new_time: timeSlot.
    :type proposed_new_time: ~identity_sign_ins.models.microsoftgraphtimeslot
    :param status: responseStatus.
    :type status: ~identity_sign_ins.models.microsoftgraphresponsestatus
    """

    _attribute_map = {
        'email_address': {'key': 'emailAddress', 'type': 'microsoftgraphemailaddress'},
        'type': {'key': 'type', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'proposed_new_time': {'key': 'proposedNewTime', 'type': 'microsoftgraphtimeslot'},
        'status': {'key': 'status', 'type': 'microsoftgraphresponsestatus'},
    }

    def __init__(
        self,
        *,
        email_address: Optional["microsoftgraphemailaddress"] = None,
        type: Optional[Union[str, "Microsoftgraphattendeetype"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        proposed_new_time: Optional["microsoftgraphtimeslot"] = None,
        status: Optional["microsoftgraphresponsestatus"] = None,
        **kwargs
    ):
        super(microsoftgraphattendee, self).__init__(email_address=email_address, type=type, **kwargs)
        self.additional_properties = additional_properties
        self.proposed_new_time = proposed_new_time
        self.status = status


class microsoftgraphaudio(msrest.serialization.Model):
    """audio.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param album: The title of the album for this audio file.
    :type album: str
    :param album_artist: The artist named on the album for the audio file.
    :type album_artist: str
    :param artist: The performing artist for the audio file.
    :type artist: str
    :param bitrate: Bitrate expressed in kbps.
    :type bitrate: long
    :param composers: The name of the composer of the audio file.
    :type composers: str
    :param copyright: Copyright information for the audio file.
    :type copyright: str
    :param disc: The number of the disc this audio file came from.
    :type disc: int
    :param disc_count: The total number of discs in this album.
    :type disc_count: int
    :param duration: Duration of the audio file, expressed in milliseconds.
    :type duration: long
    :param genre: The genre of this audio file.
    :type genre: str
    :param has_drm: Indicates if the file is protected with digital rights management.
    :type has_drm: bool
    :param is_variable_bitrate: Indicates if the file is encoded with a variable bitrate.
    :type is_variable_bitrate: bool
    :param title: The title of the audio file.
    :type title: str
    :param track: The number of the track on the original disc for this audio file.
    :type track: int
    :param track_count: The total number of tracks on the original disc for this audio file.
    :type track_count: int
    :param year: The year the audio file was recorded.
    :type year: int
    """

    _validation = {
        'disc': {'maximum': 32767, 'minimum': -32768},
        'disc_count': {'maximum': 32767, 'minimum': -32768},
        'track': {'maximum': 2147483647, 'minimum': -2147483648},
        'track_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'year': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'album': {'key': 'album', 'type': 'str'},
        'album_artist': {'key': 'albumArtist', 'type': 'str'},
        'artist': {'key': 'artist', 'type': 'str'},
        'bitrate': {'key': 'bitrate', 'type': 'long'},
        'composers': {'key': 'composers', 'type': 'str'},
        'copyright': {'key': 'copyright', 'type': 'str'},
        'disc': {'key': 'disc', 'type': 'int'},
        'disc_count': {'key': 'discCount', 'type': 'int'},
        'duration': {'key': 'duration', 'type': 'long'},
        'genre': {'key': 'genre', 'type': 'str'},
        'has_drm': {'key': 'hasDrm', 'type': 'bool'},
        'is_variable_bitrate': {'key': 'isVariableBitrate', 'type': 'bool'},
        'title': {'key': 'title', 'type': 'str'},
        'track': {'key': 'track', 'type': 'int'},
        'track_count': {'key': 'trackCount', 'type': 'int'},
        'year': {'key': 'year', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        album: Optional[str] = None,
        album_artist: Optional[str] = None,
        artist: Optional[str] = None,
        bitrate: Optional[int] = None,
        composers: Optional[str] = None,
        copyright: Optional[str] = None,
        disc: Optional[int] = None,
        disc_count: Optional[int] = None,
        duration: Optional[int] = None,
        genre: Optional[str] = None,
        has_drm: Optional[bool] = None,
        is_variable_bitrate: Optional[bool] = None,
        title: Optional[str] = None,
        track: Optional[int] = None,
        track_count: Optional[int] = None,
        year: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphaudio, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.album = album
        self.album_artist = album_artist
        self.artist = artist
        self.bitrate = bitrate
        self.composers = composers
        self.copyright = copyright
        self.disc = disc
        self.disc_count = disc_count
        self.duration = duration
        self.genre = genre
        self.has_drm = has_drm
        self.is_variable_bitrate = is_variable_bitrate
        self.title = title
        self.track = track
        self.track_count = track_count
        self.year = year


class microsoftgraphaudioconferencing(msrest.serialization.Model):
    """audioConferencing.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param conference_id:
    :type conference_id: str
    :param dialin_url: A URL to the externally-accessible web page that contains dial-in
     information.
    :type dialin_url: str
    :param toll_free_number: The toll-free number that connects to the Audio Conference Provider.
    :type toll_free_number: str
    :param toll_number: The toll number that connects to the Audio Conference Provider.
    :type toll_number: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'conference_id': {'key': 'conferenceId', 'type': 'str'},
        'dialin_url': {'key': 'dialinUrl', 'type': 'str'},
        'toll_free_number': {'key': 'tollFreeNumber', 'type': 'str'},
        'toll_number': {'key': 'tollNumber', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        conference_id: Optional[str] = None,
        dialin_url: Optional[str] = None,
        toll_free_number: Optional[str] = None,
        toll_number: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphaudioconferencing, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.conference_id = conference_id
        self.dialin_url = dialin_url
        self.toll_free_number = toll_free_number
        self.toll_number = toll_number


class microsoftgraphautomaticrepliessetting(msrest.serialization.Model):
    """automaticRepliesSetting.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param external_audience:  Possible values include: "none", "contactsOnly", "all".
    :type external_audience: str or ~identity_sign_ins.models.Microsoftgraphexternalaudiencescope
    :param external_reply_message: The automatic reply to send to the specified external audience,
     if Status is AlwaysEnabled or Scheduled.
    :type external_reply_message: str
    :param internal_reply_message: The automatic reply to send to the audience internal to the
     signed-in user's organization, if Status is AlwaysEnabled or Scheduled.
    :type internal_reply_message: str
    :param scheduled_end_date_time: dateTimeTimeZone.
    :type scheduled_end_date_time: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param scheduled_start_date_time: dateTimeTimeZone.
    :type scheduled_start_date_time: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param status:  Possible values include: "disabled", "alwaysEnabled", "scheduled".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphautomaticrepliesstatus
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'external_audience': {'key': 'externalAudience', 'type': 'str'},
        'external_reply_message': {'key': 'externalReplyMessage', 'type': 'str'},
        'internal_reply_message': {'key': 'internalReplyMessage', 'type': 'str'},
        'scheduled_end_date_time': {'key': 'scheduledEndDateTime', 'type': 'microsoftgraphdatetimezone'},
        'scheduled_start_date_time': {'key': 'scheduledStartDateTime', 'type': 'microsoftgraphdatetimezone'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        external_audience: Optional[Union[str, "Microsoftgraphexternalaudiencescope"]] = None,
        external_reply_message: Optional[str] = None,
        internal_reply_message: Optional[str] = None,
        scheduled_end_date_time: Optional["microsoftgraphdatetimezone"] = None,
        scheduled_start_date_time: Optional["microsoftgraphdatetimezone"] = None,
        status: Optional[Union[str, "Microsoftgraphautomaticrepliesstatus"]] = None,
        **kwargs
    ):
        super(microsoftgraphautomaticrepliessetting, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.external_audience = external_audience
        self.external_reply_message = external_reply_message
        self.internal_reply_message = internal_reply_message
        self.scheduled_end_date_time = scheduled_end_date_time
        self.scheduled_start_date_time = scheduled_start_date_time
        self.status = status


class microsoftgraphbaseitem(microsoftgraphentity):
    """baseItem.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        **kwargs
    ):
        super(microsoftgraphbaseitem, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_by = created_by
        self.created_date_time = created_date_time
        self.description = description
        self.e_tag = e_tag
        self.last_modified_by = last_modified_by
        self.last_modified_date_time = last_modified_date_time
        self.name = name
        self.parent_reference = parent_reference
        self.web_url = web_url
        self.created_by_user = created_by_user
        self.last_modified_by_user = last_modified_by_user


class microsoftgraphbaseitemversion(microsoftgraphentity):
    """baseItemVersion.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the version was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param publication: publicationFacet.
    :type publication: ~identity_sign_ins.models.microsoftgraphpublicationfacet
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'publication': {'key': 'publication', 'type': 'microsoftgraphpublicationfacet'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        publication: Optional["microsoftgraphpublicationfacet"] = None,
        **kwargs
    ):
        super(microsoftgraphbaseitemversion, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.last_modified_by = last_modified_by
        self.last_modified_date_time = last_modified_date_time
        self.publication = publication


class microsoftgraphcalculatedcolumn(msrest.serialization.Model):
    """calculatedColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param format: For dateTime output types, the format of the value. Must be one of dateOnly or
     dateTime.
    :type format: str
    :param formula: The formula used to compute the value for this column.
    :type formula: str
    :param output_type: The output type used to format values in this column. Must be one of
     boolean, currency, dateTime, number, or text.
    :type output_type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'format': {'key': 'format', 'type': 'str'},
        'formula': {'key': 'formula', 'type': 'str'},
        'output_type': {'key': 'outputType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        format: Optional[str] = None,
        formula: Optional[str] = None,
        output_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphcalculatedcolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.format = format
        self.formula = formula
        self.output_type = output_type


class microsoftgraphcalendar(microsoftgraphentity):
    """calendar.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allowed_online_meeting_providers: Represent the online meeting service providers that
     can be used to create online meetings in this calendar. Possible values are: unknown,
     skypeForBusiness, skypeForConsumer, teamsForBusiness.
    :type allowed_online_meeting_providers: list[str or
     ~identity_sign_ins.models.Microsoftgraphonlinemeetingprovidertype]
    :param can_edit: True if the user can write to the calendar, false otherwise. This property is
     true for the user who created the calendar. This property is also true for a user who has been
     shared a calendar and granted write access.
    :type can_edit: bool
    :param can_share: True if the user has the permission to share the calendar, false otherwise.
     Only the user who created the calendar can share it.
    :type can_share: bool
    :param can_view_private_items: True if the user can read calendar items that have been marked
     private, false otherwise.
    :type can_view_private_items: bool
    :param change_key: Identifies the version of the calendar object. Every time the calendar is
     changed, changeKey changes as well. This allows Exchange to apply changes to the correct
     version of the object. Read-only.
    :type change_key: str
    :param color:  Possible values include: "lightBlue", "lightGreen", "auto", "lightOrange",
     "lightGray", "lightYellow", "lightTeal", "lightPink", "lightBrown", "lightRed", "maxColor".
    :type color: str or ~identity_sign_ins.models.Microsoftgraphcalendarcolor
    :param default_online_meeting_provider:  Possible values include: "unknown",
     "skypeForBusiness", "skypeForConsumer", "teamsForBusiness".
    :type default_online_meeting_provider: str or
     ~identity_sign_ins.models.Microsoftgraphonlinemeetingprovidertype
    :param is_removable: Indicates whether this user calendar can be deleted from the user mailbox.
    :type is_removable: bool
    :param is_tallying_responses: Indicates whether this user calendar supports tracking of meeting
     responses. Only meeting invites sent from users' primary calendars support tracking of meeting
     responses.
    :type is_tallying_responses: bool
    :param name: The calendar name.
    :type name: str
    :param owner: emailAddress.
    :type owner: ~identity_sign_ins.models.microsoftgraphemailaddress
    :param calendar_permissions: The permissions of the users with whom the calendar is shared.
    :type calendar_permissions: list[~identity_sign_ins.models.microsoftgraphcalendarpermission]
    :param calendar_view: The calendar view for the calendar. Navigation property. Read-only.
    :type calendar_view: list[~identity_sign_ins.models.microsoftgraphevent]
    :param events: The events in the calendar. Navigation property. Read-only.
    :type events: list[~identity_sign_ins.models.microsoftgraphevent]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the calendar. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the calendar. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'allowed_online_meeting_providers': {'key': 'allowedOnlineMeetingProviders', 'type': '[str]'},
        'can_edit': {'key': 'canEdit', 'type': 'bool'},
        'can_share': {'key': 'canShare', 'type': 'bool'},
        'can_view_private_items': {'key': 'canViewPrivateItems', 'type': 'bool'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'color': {'key': 'color', 'type': 'str'},
        'default_online_meeting_provider': {'key': 'defaultOnlineMeetingProvider', 'type': 'str'},
        'is_removable': {'key': 'isRemovable', 'type': 'bool'},
        'is_tallying_responses': {'key': 'isTallyingResponses', 'type': 'bool'},
        'name': {'key': 'name', 'type': 'str'},
        'owner': {'key': 'owner', 'type': 'microsoftgraphemailaddress'},
        'calendar_permissions': {'key': 'calendarPermissions', 'type': '[microsoftgraphcalendarpermission]'},
        'calendar_view': {'key': 'calendarView', 'type': '[microsoftgraphevent]'},
        'events': {'key': 'events', 'type': '[microsoftgraphevent]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        allowed_online_meeting_providers: Optional[List[Union[str, "Microsoftgraphonlinemeetingprovidertype"]]] = None,
        can_edit: Optional[bool] = None,
        can_share: Optional[bool] = None,
        can_view_private_items: Optional[bool] = None,
        change_key: Optional[str] = None,
        color: Optional[Union[str, "Microsoftgraphcalendarcolor"]] = None,
        default_online_meeting_provider: Optional[Union[str, "Microsoftgraphonlinemeetingprovidertype"]] = None,
        is_removable: Optional[bool] = None,
        is_tallying_responses: Optional[bool] = None,
        name: Optional[str] = None,
        owner: Optional["microsoftgraphemailaddress"] = None,
        calendar_permissions: Optional[List["microsoftgraphcalendarpermission"]] = None,
        calendar_view: Optional[List["microsoftgraphevent"]] = None,
        events: Optional[List["microsoftgraphevent"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphcalendar, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.allowed_online_meeting_providers = allowed_online_meeting_providers
        self.can_edit = can_edit
        self.can_share = can_share
        self.can_view_private_items = can_view_private_items
        self.change_key = change_key
        self.color = color
        self.default_online_meeting_provider = default_online_meeting_provider
        self.is_removable = is_removable
        self.is_tallying_responses = is_tallying_responses
        self.name = name
        self.owner = owner
        self.calendar_permissions = calendar_permissions
        self.calendar_view = calendar_view
        self.events = events
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphcalendargroup(microsoftgraphentity):
    """calendarGroup.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param change_key: Identifies the version of the calendar group. Every time the calendar group
     is changed, ChangeKey changes as well. This allows Exchange to apply changes to the correct
     version of the object. Read-only.
    :type change_key: str
    :param class_id: The class identifier. Read-only.
    :type class_id: str
    :param name: The group name.
    :type name: str
    :param calendars: The calendars in the calendar group. Navigation property. Read-only.
     Nullable.
    :type calendars: list[~identity_sign_ins.models.microsoftgraphcalendar]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'class_id': {'key': 'classId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'calendars': {'key': 'calendars', 'type': '[microsoftgraphcalendar]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        change_key: Optional[str] = None,
        class_id: Optional[str] = None,
        name: Optional[str] = None,
        calendars: Optional[List["microsoftgraphcalendar"]] = None,
        **kwargs
    ):
        super(microsoftgraphcalendargroup, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.change_key = change_key
        self.class_id = class_id
        self.name = name
        self.calendars = calendars


class microsoftgraphcalendarpermission(microsoftgraphentity):
    """calendarPermission.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allowed_roles: List of allowed sharing or delegating permission levels for the calendar.
     Possible values are: none, freeBusyRead, limitedRead, read, write,
     delegateWithoutPrivateEventAccess, delegateWithPrivateEventAccess, custom.
    :type allowed_roles: list[str or ~identity_sign_ins.models.Microsoftgraphcalendarroletype]
    :param email_address: emailAddress.
    :type email_address: ~identity_sign_ins.models.microsoftgraphemailaddress
    :param is_inside_organization: True if the user in context (sharee or delegate) is inside the
     same organization as the calendar owner.
    :type is_inside_organization: bool
    :param is_removable: True if the user can be removed from the list of sharees or delegates for
     the specified calendar, false otherwise. The 'My organization' user determines the permissions
     other people within your organization have to the given calendar. You cannot remove 'My
     organization' as a sharee to a calendar.
    :type is_removable: bool
    :param role:  Possible values include: "none", "freeBusyRead", "limitedRead", "read", "write",
     "delegateWithoutPrivateEventAccess", "delegateWithPrivateEventAccess", "custom".
    :type role: str or ~identity_sign_ins.models.Microsoftgraphcalendarroletype
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'allowed_roles': {'key': 'allowedRoles', 'type': '[str]'},
        'email_address': {'key': 'emailAddress', 'type': 'microsoftgraphemailaddress'},
        'is_inside_organization': {'key': 'isInsideOrganization', 'type': 'bool'},
        'is_removable': {'key': 'isRemovable', 'type': 'bool'},
        'role': {'key': 'role', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        allowed_roles: Optional[List[Union[str, "Microsoftgraphcalendarroletype"]]] = None,
        email_address: Optional["microsoftgraphemailaddress"] = None,
        is_inside_organization: Optional[bool] = None,
        is_removable: Optional[bool] = None,
        role: Optional[Union[str, "Microsoftgraphcalendarroletype"]] = None,
        **kwargs
    ):
        super(microsoftgraphcalendarpermission, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.allowed_roles = allowed_roles
        self.email_address = email_address
        self.is_inside_organization = is_inside_organization
        self.is_removable = is_removable
        self.role = role


class microsoftgraphcertificateauthority(msrest.serialization.Model):
    """certificateAuthority.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param certificate: Required. The base64 encoded string representing the public certificate.
    :type certificate: bytes
    :param certificate_revocation_list_url: The URL of the certificate revocation list.
    :type certificate_revocation_list_url: str
    :param delta_certificate_revocation_list_url: The URL contains the list of all revoked
     certificates since the last time a full certificate revocaton list was created.
    :type delta_certificate_revocation_list_url: str
    :param is_root_authority: Required. true if the trusted certificate is a root authority, false
     if the trusted certificate is an intermediate authority.
    :type is_root_authority: bool
    :param issuer: The issuer of the certificate, calculated from the certificate value. Read-only.
    :type issuer: str
    :param issuer_ski: The subject key identifier of the certificate, calculated from the
     certificate value. Read-only.
    :type issuer_ski: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'certificate': {'key': 'certificate', 'type': 'base64'},
        'certificate_revocation_list_url': {'key': 'certificateRevocationListUrl', 'type': 'str'},
        'delta_certificate_revocation_list_url': {'key': 'deltaCertificateRevocationListUrl', 'type': 'str'},
        'is_root_authority': {'key': 'isRootAuthority', 'type': 'bool'},
        'issuer': {'key': 'issuer', 'type': 'str'},
        'issuer_ski': {'key': 'issuerSki', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        certificate: Optional[bytes] = None,
        certificate_revocation_list_url: Optional[str] = None,
        delta_certificate_revocation_list_url: Optional[str] = None,
        is_root_authority: Optional[bool] = None,
        issuer: Optional[str] = None,
        issuer_ski: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphcertificateauthority, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.certificate = certificate
        self.certificate_revocation_list_url = certificate_revocation_list_url
        self.delta_certificate_revocation_list_url = delta_certificate_revocation_list_url
        self.is_root_authority = is_root_authority
        self.issuer = issuer
        self.issuer_ski = issuer_ski


class microsoftgraphcertificatebasedauthconfiguration(microsoftgraphentity):
    """certificateBasedAuthConfiguration.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param certificate_authorities: Collection of certificate authorities which creates a trusted
     certificate chain.
    :type certificate_authorities:
     list[~identity_sign_ins.models.microsoftgraphcertificateauthority]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'certificate_authorities': {'key': 'certificateAuthorities', 'type': '[microsoftgraphcertificateauthority]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        certificate_authorities: Optional[List["microsoftgraphcertificateauthority"]] = None,
        **kwargs
    ):
        super(microsoftgraphcertificatebasedauthconfiguration, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.certificate_authorities = certificate_authorities


class microsoftgraphchangetrackedentity(microsoftgraphentity):
    """changeTrackedEntity.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphchangetrackedentity, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.last_modified_by = last_modified_by
        self.last_modified_date_time = last_modified_date_time


class microsoftgraphchannel(microsoftgraphentity):
    """channel.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param description: Optional textual description for the channel.
    :type description: str
    :param display_name: Channel name as it will appear to the user in Microsoft Teams.
    :type display_name: str
    :param email: The email address for sending messages to the channel. Read-only.
    :type email: str
    :param membership_type:  Possible values include: "standard", "private", "unknownFutureValue".
    :type membership_type: str or ~identity_sign_ins.models.Microsoftgraphchannelmembershiptype
    :param web_url: A hyperlink that will navigate to the channel in Microsoft Teams. This is the
     URL that you get when you right-click a channel in Microsoft Teams and select Get link to
     channel. This URL should be treated as an opaque blob, and not parsed. Read-only.
    :type web_url: str
    :param files_folder: driveItem.
    :type files_folder: ~identity_sign_ins.models.microsoftgraphdriveitem
    :param members:
    :type members: list[~identity_sign_ins.models.microsoftgraphconversationmember]
    :param messages: A collection of all the messages in the channel. A navigation property.
     Nullable.
    :type messages: list[~identity_sign_ins.models.microsoftgraphchatmessage]
    :param tabs: A collection of all the tabs in the channel. A navigation property.
    :type tabs: list[~identity_sign_ins.models.microsoftgraphteamstab]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'email': {'key': 'email', 'type': 'str'},
        'membership_type': {'key': 'membershipType', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'files_folder': {'key': 'filesFolder', 'type': 'microsoftgraphdriveitem'},
        'members': {'key': 'members', 'type': '[microsoftgraphconversationmember]'},
        'messages': {'key': 'messages', 'type': '[microsoftgraphchatmessage]'},
        'tabs': {'key': 'tabs', 'type': '[microsoftgraphteamstab]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        email: Optional[str] = None,
        membership_type: Optional[Union[str, "Microsoftgraphchannelmembershiptype"]] = None,
        web_url: Optional[str] = None,
        files_folder: Optional["microsoftgraphdriveitem"] = None,
        members: Optional[List["microsoftgraphconversationmember"]] = None,
        messages: Optional[List["microsoftgraphchatmessage"]] = None,
        tabs: Optional[List["microsoftgraphteamstab"]] = None,
        **kwargs
    ):
        super(microsoftgraphchannel, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.description = description
        self.display_name = display_name
        self.email = email
        self.membership_type = membership_type
        self.web_url = web_url
        self.files_folder = files_folder
        self.members = members
        self.messages = messages
        self.tabs = tabs


class microsoftgraphchatinfo(msrest.serialization.Model):
    """chatInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param message_id: The unique identifier of a message in a Microsoft Teams channel.
    :type message_id: str
    :param reply_chain_message_id: The ID of the reply message.
    :type reply_chain_message_id: str
    :param thread_id: The unique identifier for a thread in Microsoft Teams.
    :type thread_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'message_id': {'key': 'messageId', 'type': 'str'},
        'reply_chain_message_id': {'key': 'replyChainMessageId', 'type': 'str'},
        'thread_id': {'key': 'threadId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        message_id: Optional[str] = None,
        reply_chain_message_id: Optional[str] = None,
        thread_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphchatinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.message_id = message_id
        self.reply_chain_message_id = reply_chain_message_id
        self.thread_id = thread_id


class microsoftgraphchatmessage(microsoftgraphentity):
    """chatMessage.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param attachments: Attached files. Attachments are currently read-only – sending attachments
     is not supported.
    :type attachments: list[~identity_sign_ins.models.microsoftgraphchatmessageattachment]
    :param body: itemBody.
    :type body: ~identity_sign_ins.models.microsoftgraphitembody
    :param created_date_time: Read only. Timestamp of when the chat message was created.
    :type created_date_time: ~datetime.datetime
    :param deleted_date_time: Read only. Timestamp at which the chat message was deleted, or null
     if not deleted.
    :type deleted_date_time: ~datetime.datetime
    :param etag: Read-only. Version number of the chat message.
    :type etag: str
    :param from_property: identitySet.
    :type from_property: ~identity_sign_ins.models.microsoftgraphidentityset
    :param importance:  Possible values include: "normal", "high", "urgent", "unknownFutureValue".
    :type importance: str or ~identity_sign_ins.models.Microsoftgraphchatmessageimportance
    :param last_edited_date_time: Read only. Timestamp when edits to the chat message were made.
     Triggers an 'Edited' flag in the Microsoft Teams UI. If no edits are made the value is null.
    :type last_edited_date_time: ~datetime.datetime
    :param last_modified_date_time: Read only. Timestamp when the chat message is created (initial
     setting) or edited, including when a reaction is added or removed.
    :type last_modified_date_time: ~datetime.datetime
    :param locale: Locale of the chat message set by the client.
    :type locale: str
    :param mentions: List of entities mentioned in the chat message. Currently supports user, bot,
     team, channel.
    :type mentions: list[~identity_sign_ins.models.microsoftgraphchatmessagemention]
    :param message_type:  Possible values include: "message", "chatEvent", "typing",
     "unknownFutureValue".
    :type message_type: str or ~identity_sign_ins.models.Microsoftgraphchatmessagetype
    :param policy_violation: chatMessagePolicyViolation.
    :type policy_violation: ~identity_sign_ins.models.microsoftgraphchatmessagepolicyviolation
    :param reactions:
    :type reactions: list[~identity_sign_ins.models.microsoftgraphchatmessagereaction]
    :param reply_to_id: Read-only. Id of the parent chat message or root chat message of the
     thread. (Only applies to chat messages in channels not chats).
    :type reply_to_id: str
    :param subject: The subject of the chat message, in plaintext.
    :type subject: str
    :param summary: Summary text of the chat message that could be used for push notifications and
     summary views or fall back views. Only applies to channel chat messages, not chat messages in a
     chat.
    :type summary: str
    :param web_url:
    :type web_url: str
    :param hosted_contents:
    :type hosted_contents: list[~identity_sign_ins.models.microsoftgraphchatmessagehostedcontent]
    :param replies:
    :type replies: list[~identity_sign_ins.models.microsoftgraphchatmessage]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'attachments': {'key': 'attachments', 'type': '[microsoftgraphchatmessageattachment]'},
        'body': {'key': 'body', 'type': 'microsoftgraphitembody'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'etag': {'key': 'etag', 'type': 'str'},
        'from_property': {'key': 'from', 'type': 'microsoftgraphidentityset'},
        'importance': {'key': 'importance', 'type': 'str'},
        'last_edited_date_time': {'key': 'lastEditedDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'locale': {'key': 'locale', 'type': 'str'},
        'mentions': {'key': 'mentions', 'type': '[microsoftgraphchatmessagemention]'},
        'message_type': {'key': 'messageType', 'type': 'str'},
        'policy_violation': {'key': 'policyViolation', 'type': 'microsoftgraphchatmessagepolicyviolation'},
        'reactions': {'key': 'reactions', 'type': '[microsoftgraphchatmessagereaction]'},
        'reply_to_id': {'key': 'replyToId', 'type': 'str'},
        'subject': {'key': 'subject', 'type': 'str'},
        'summary': {'key': 'summary', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'hosted_contents': {'key': 'hostedContents', 'type': '[microsoftgraphchatmessagehostedcontent]'},
        'replies': {'key': 'replies', 'type': '[microsoftgraphchatmessage]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        attachments: Optional[List["microsoftgraphchatmessageattachment"]] = None,
        body: Optional["microsoftgraphitembody"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        etag: Optional[str] = None,
        from_property: Optional["microsoftgraphidentityset"] = None,
        importance: Optional[Union[str, "Microsoftgraphchatmessageimportance"]] = None,
        last_edited_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        locale: Optional[str] = None,
        mentions: Optional[List["microsoftgraphchatmessagemention"]] = None,
        message_type: Optional[Union[str, "Microsoftgraphchatmessagetype"]] = None,
        policy_violation: Optional["microsoftgraphchatmessagepolicyviolation"] = None,
        reactions: Optional[List["microsoftgraphchatmessagereaction"]] = None,
        reply_to_id: Optional[str] = None,
        subject: Optional[str] = None,
        summary: Optional[str] = None,
        web_url: Optional[str] = None,
        hosted_contents: Optional[List["microsoftgraphchatmessagehostedcontent"]] = None,
        replies: Optional[List["microsoftgraphchatmessage"]] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessage, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.attachments = attachments
        self.body = body
        self.created_date_time = created_date_time
        self.deleted_date_time = deleted_date_time
        self.etag = etag
        self.from_property = from_property
        self.importance = importance
        self.last_edited_date_time = last_edited_date_time
        self.last_modified_date_time = last_modified_date_time
        self.locale = locale
        self.mentions = mentions
        self.message_type = message_type
        self.policy_violation = policy_violation
        self.reactions = reactions
        self.reply_to_id = reply_to_id
        self.subject = subject
        self.summary = summary
        self.web_url = web_url
        self.hosted_contents = hosted_contents
        self.replies = replies


class microsoftgraphchatmessageattachment(msrest.serialization.Model):
    """chatMessageAttachment.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content of the attachment. If the attachment is a rich card, set the
     property to the rich card object. This property and contentUrl are mutually exclusive.
    :type content: str
    :param content_type: The media type of the content attachment. It can have the following
     values: reference: Attachment is a link to another file. Populate the contentURL with the link
     to the object.file: Raw file attachment. Populate the contenturl field with the base64 encoding
     of the file in data: format.image/: Image type with the type of the image specified ex:
     image/png, image/jpeg, image/gif. Populate the contentUrl field with the base64 encoding of the
     file in data: format.video/: Video type with the format specified. Ex: video/mp4. Populate the
     contentUrl field with the base64 encoding of the file in data: format.audio/: Audio type with
     the format specified. Ex: audio/wmw. Populate the contentUrl field with the base64 encoding of
     the file in data: format.application/card type: Rich card attachment type with the card type
     specifying the exact card format to use. Set content with the json format of the card.
     Supported values for card type include:application/vnd.microsoft.card.adaptive: A rich card
     that can contain any combination of text, speech, images,,buttons, and input fields. Set the
     content property to,an AdaptiveCard object.application/vnd.microsoft.card.animation: A rich
     card that plays animation. Set the content property,to an
     AnimationCardobject.application/vnd.microsoft.card.audio: A rich card that plays audio files.
     Set the content property,to an AudioCard object.application/vnd.microsoft.card.video: A rich
     card that plays videos. Set the content property,to a VideoCard
     object.application/vnd.microsoft.card.hero: A Hero card. Set the content property to a HeroCard
     object.application/vnd.microsoft.card.thumbnail: A Thumbnail card. Set the content property to
     a ThumbnailCard object.application/vnd.microsoft.com.card.receipt: A Receipt card. Set the
     content property to a ReceiptCard object.application/vnd.microsoft.com.card.signin: A user Sign
     In card. Set the content property to a SignInCard object.
    :type content_type: str
    :param content_url: URL for the content of the attachment. Supported protocols: http, https,
     file and data.
    :type content_url: str
    :param id: Read-only. Unique id of the attachment.
    :type id: str
    :param name: Name of the attachment.
    :type name: str
    :param thumbnail_url: URL to a thumbnail image that the channel can use if it supports using an
     alternative, smaller form of content or contentUrl. For example, if you set contentType to
     application/word and set contentUrl to the location of the Word document, you might include a
     thumbnail image that represents the document. The channel could display the thumbnail image
     instead of the document. When the user clicks the image, the channel would open the document.
    :type thumbnail_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'str'},
        'content_type': {'key': 'contentType', 'type': 'str'},
        'content_url': {'key': 'contentUrl', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[str] = None,
        content_type: Optional[str] = None,
        content_url: Optional[str] = None,
        id: Optional[str] = None,
        name: Optional[str] = None,
        thumbnail_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessageattachment, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_type = content_type
        self.content_url = content_url
        self.id = id
        self.name = name
        self.thumbnail_url = thumbnail_url


class microsoftgraphchatmessagehostedcontent(microsoftgraphentity):
    """chatMessageHostedContent.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessagehostedcontent, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphchatmessagemention(msrest.serialization.Model):
    """chatMessageMention.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param id: Index of an entity being mentioned in the specified chatMessage. Matches the {index}
     value in the corresponding :code:`<at id='{index}'>` tag in the message body.
    :type id: int
    :param mentioned: identitySet.
    :type mentioned: ~identity_sign_ins.models.microsoftgraphidentityset
    :param mention_text: String used to represent the mention. For example, a user's display name,
     a team name.
    :type mention_text: str
    """

    _validation = {
        'id': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'id': {'key': 'id', 'type': 'int'},
        'mentioned': {'key': 'mentioned', 'type': 'microsoftgraphidentityset'},
        'mention_text': {'key': 'mentionText', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        id: Optional[int] = None,
        mentioned: Optional["microsoftgraphidentityset"] = None,
        mention_text: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessagemention, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.id = id
        self.mentioned = mentioned
        self.mention_text = mention_text


class microsoftgraphchatmessagepolicyviolation(msrest.serialization.Model):
    """chatMessagePolicyViolation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param dlp_action:  Possible values include: "none", "notifySender", "blockAccess",
     "blockAccessExternal".
    :type dlp_action: str or
     ~identity_sign_ins.models.Microsoftgraphchatmessagepolicyviolationdlpactiontypes
    :param justification_text:
    :type justification_text: str
    :param policy_tip: chatMessagePolicyViolationPolicyTip.
    :type policy_tip: ~identity_sign_ins.models.microsoftgraphchatmessagepolicyviolationpolicytip
    :param user_action:  Possible values include: "none", "override", "reportFalsePositive".
    :type user_action: str or
     ~identity_sign_ins.models.Microsoftgraphchatmessagepolicyviolationuseractiontypes
    :param verdict_details:  Possible values include: "none", "allowFalsePositiveOverride",
     "allowOverrideWithoutJustification", "allowOverrideWithJustification".
    :type verdict_details: str or
     ~identity_sign_ins.models.Microsoftgraphchatmessagepolicyviolationverdictdetailstypes
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'dlp_action': {'key': 'dlpAction', 'type': 'str'},
        'justification_text': {'key': 'justificationText', 'type': 'str'},
        'policy_tip': {'key': 'policyTip', 'type': 'microsoftgraphchatmessagepolicyviolationpolicytip'},
        'user_action': {'key': 'userAction', 'type': 'str'},
        'verdict_details': {'key': 'verdictDetails', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        dlp_action: Optional[Union[str, "Microsoftgraphchatmessagepolicyviolationdlpactiontypes"]] = None,
        justification_text: Optional[str] = None,
        policy_tip: Optional["microsoftgraphchatmessagepolicyviolationpolicytip"] = None,
        user_action: Optional[Union[str, "Microsoftgraphchatmessagepolicyviolationuseractiontypes"]] = None,
        verdict_details: Optional[Union[str, "Microsoftgraphchatmessagepolicyviolationverdictdetailstypes"]] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessagepolicyviolation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.dlp_action = dlp_action
        self.justification_text = justification_text
        self.policy_tip = policy_tip
        self.user_action = user_action
        self.verdict_details = verdict_details


class microsoftgraphchatmessagepolicyviolationpolicytip(msrest.serialization.Model):
    """chatMessagePolicyViolationPolicyTip.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param compliance_url:
    :type compliance_url: str
    :param general_text:
    :type general_text: str
    :param matched_condition_descriptions:
    :type matched_condition_descriptions: list[str]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'compliance_url': {'key': 'complianceUrl', 'type': 'str'},
        'general_text': {'key': 'generalText', 'type': 'str'},
        'matched_condition_descriptions': {'key': 'matchedConditionDescriptions', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        compliance_url: Optional[str] = None,
        general_text: Optional[str] = None,
        matched_condition_descriptions: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessagepolicyviolationpolicytip, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.compliance_url = compliance_url
        self.general_text = general_text
        self.matched_condition_descriptions = matched_condition_descriptions


class microsoftgraphchatmessagereaction(msrest.serialization.Model):
    """chatMessageReaction.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time:
    :type created_date_time: ~datetime.datetime
    :param reaction_type:
    :type reaction_type: str
    :param user: identitySet.
    :type user: ~identity_sign_ins.models.microsoftgraphidentityset
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'reaction_type': {'key': 'reactionType', 'type': 'str'},
        'user': {'key': 'user', 'type': 'microsoftgraphidentityset'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        reaction_type: Optional[str] = None,
        user: Optional["microsoftgraphidentityset"] = None,
        **kwargs
    ):
        super(microsoftgraphchatmessagereaction, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.reaction_type = reaction_type
        self.user = user


class microsoftgraphchoicecolumn(msrest.serialization.Model):
    """choiceColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_text_entry: If true, allows custom values that aren't in the configured choices.
    :type allow_text_entry: bool
    :param choices: The list of values available for this column.
    :type choices: list[str]
    :param display_as: How the choices are to be presented in the UX. Must be one of checkBoxes,
     dropDownMenu, or radioButtons.
    :type display_as: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_text_entry': {'key': 'allowTextEntry', 'type': 'bool'},
        'choices': {'key': 'choices', 'type': '[str]'},
        'display_as': {'key': 'displayAs', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_text_entry: Optional[bool] = None,
        choices: Optional[List[str]] = None,
        display_as: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphchoicecolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_text_entry = allow_text_entry
        self.choices = choices
        self.display_as = display_as


class microsoftgraphclaimsmappingpolicy(microsoftgraphstspolicy):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphclaimsmappingpolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, definition=definition, is_organization_default=is_organization_default, applies_to=applies_to, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphcloudappsecuritysessioncontrol(microsoftgraphconditionalaccesssessioncontrol):
    """cloudAppSecuritySessionControl.

    :param is_enabled: Specifies whether the session control is enabled.
    :type is_enabled: bool
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param cloud_app_security_type:  Possible values include: "mcasConfigured", "monitorOnly",
     "blockDownloads", "unknownFutureValue".
    :type cloud_app_security_type: str or
     ~identity_sign_ins.models.Microsoftgraphcloudappsecuritysessioncontroltype
    """

    _attribute_map = {
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'cloud_app_security_type': {'key': 'cloudAppSecurityType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        is_enabled: Optional[bool] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        cloud_app_security_type: Optional[Union[str, "Microsoftgraphcloudappsecuritysessioncontroltype"]] = None,
        **kwargs
    ):
        super(microsoftgraphcloudappsecuritysessioncontrol, self).__init__(is_enabled=is_enabled, **kwargs)
        self.additional_properties = additional_properties
        self.cloud_app_security_type = cloud_app_security_type


class microsoftgraphcolumndefinition(microsoftgraphentity):
    """columnDefinition.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param boolean: booleanColumn.
    :type boolean: dict[str, object]
    :param calculated: calculatedColumn.
    :type calculated: ~identity_sign_ins.models.microsoftgraphcalculatedcolumn
    :param choice: choiceColumn.
    :type choice: ~identity_sign_ins.models.microsoftgraphchoicecolumn
    :param column_group: For site columns, the name of the group this column belongs to. Helps
     organize related columns.
    :type column_group: str
    :param currency: currencyColumn.
    :type currency: ~identity_sign_ins.models.microsoftgraphcurrencycolumn
    :param date_time: dateTimeColumn.
    :type date_time: ~identity_sign_ins.models.microsoftgraphdatetimecolumn
    :param default_value: defaultColumnValue.
    :type default_value: ~identity_sign_ins.models.microsoftgraphdefaultcolumnvalue
    :param description: The user-facing description of the column.
    :type description: str
    :param display_name: The user-facing name of the column.
    :type display_name: str
    :param enforce_unique_values: If true, no two list items may have the same value for this
     column.
    :type enforce_unique_values: bool
    :param geolocation: geolocationColumn.
    :type geolocation: dict[str, object]
    :param hidden: Specifies whether the column is displayed in the user interface.
    :type hidden: bool
    :param indexed: Specifies whether the column values can used for sorting and searching.
    :type indexed: bool
    :param lookup: lookupColumn.
    :type lookup: ~identity_sign_ins.models.microsoftgraphlookupcolumn
    :param name: The API-facing name of the column as it appears in the [fields][] on a
     [listItem][]. For the user-facing name, see displayName.
    :type name: str
    :param number: numberColumn.
    :type number: ~identity_sign_ins.models.microsoftgraphnumbercolumn
    :param person_or_group: personOrGroupColumn.
    :type person_or_group: ~identity_sign_ins.models.microsoftgraphpersonorgroupcolumn
    :param read_only: Specifies whether the column values can be modified.
    :type read_only: bool
    :param required: Specifies whether the column value is not optional.
    :type required: bool
    :param text: textColumn.
    :type text: ~identity_sign_ins.models.microsoftgraphtextcolumn
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'boolean': {'key': 'boolean', 'type': '{object}'},
        'calculated': {'key': 'calculated', 'type': 'microsoftgraphcalculatedcolumn'},
        'choice': {'key': 'choice', 'type': 'microsoftgraphchoicecolumn'},
        'column_group': {'key': 'columnGroup', 'type': 'str'},
        'currency': {'key': 'currency', 'type': 'microsoftgraphcurrencycolumn'},
        'date_time': {'key': 'dateTime', 'type': 'microsoftgraphdatetimecolumn'},
        'default_value': {'key': 'defaultValue', 'type': 'microsoftgraphdefaultcolumnvalue'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'enforce_unique_values': {'key': 'enforceUniqueValues', 'type': 'bool'},
        'geolocation': {'key': 'geolocation', 'type': '{object}'},
        'hidden': {'key': 'hidden', 'type': 'bool'},
        'indexed': {'key': 'indexed', 'type': 'bool'},
        'lookup': {'key': 'lookup', 'type': 'microsoftgraphlookupcolumn'},
        'name': {'key': 'name', 'type': 'str'},
        'number': {'key': 'number', 'type': 'microsoftgraphnumbercolumn'},
        'person_or_group': {'key': 'personOrGroup', 'type': 'microsoftgraphpersonorgroupcolumn'},
        'read_only': {'key': 'readOnly', 'type': 'bool'},
        'required': {'key': 'required', 'type': 'bool'},
        'text': {'key': 'text', 'type': 'microsoftgraphtextcolumn'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        boolean: Optional[Dict[str, object]] = None,
        calculated: Optional["microsoftgraphcalculatedcolumn"] = None,
        choice: Optional["microsoftgraphchoicecolumn"] = None,
        column_group: Optional[str] = None,
        currency: Optional["microsoftgraphcurrencycolumn"] = None,
        date_time: Optional["microsoftgraphdatetimecolumn"] = None,
        default_value: Optional["microsoftgraphdefaultcolumnvalue"] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        enforce_unique_values: Optional[bool] = None,
        geolocation: Optional[Dict[str, object]] = None,
        hidden: Optional[bool] = None,
        indexed: Optional[bool] = None,
        lookup: Optional["microsoftgraphlookupcolumn"] = None,
        name: Optional[str] = None,
        number: Optional["microsoftgraphnumbercolumn"] = None,
        person_or_group: Optional["microsoftgraphpersonorgroupcolumn"] = None,
        read_only: Optional[bool] = None,
        required: Optional[bool] = None,
        text: Optional["microsoftgraphtextcolumn"] = None,
        **kwargs
    ):
        super(microsoftgraphcolumndefinition, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.boolean = boolean
        self.calculated = calculated
        self.choice = choice
        self.column_group = column_group
        self.currency = currency
        self.date_time = date_time
        self.default_value = default_value
        self.description = description
        self.display_name = display_name
        self.enforce_unique_values = enforce_unique_values
        self.geolocation = geolocation
        self.hidden = hidden
        self.indexed = indexed
        self.lookup = lookup
        self.name = name
        self.number = number
        self.person_or_group = person_or_group
        self.read_only = read_only
        self.required = required
        self.text = text


class microsoftgraphcolumnlink(microsoftgraphentity):
    """columnLink.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: The name of the column  in this content type.
    :type name: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphcolumnlink, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.name = name


class microsoftgraphconditionalaccessapplications(msrest.serialization.Model):
    """conditionalAccessApplications.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param exclude_applications: The list of application IDs explicitly excluded from the policy.
    :type exclude_applications: list[str]
    :param include_applications: The list of application IDs the policy applies to, unless
     explicitly excluded (in excludeApplications). Can also be set to All.
    :type include_applications: list[str]
    :param include_user_actions: User actions to include. For example,
     urn:user:registersecurityinfo.
    :type include_user_actions: list[str]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'exclude_applications': {'key': 'excludeApplications', 'type': '[str]'},
        'include_applications': {'key': 'includeApplications', 'type': '[str]'},
        'include_user_actions': {'key': 'includeUserActions', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        exclude_applications: Optional[List[str]] = None,
        include_applications: Optional[List[str]] = None,
        include_user_actions: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessapplications, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.exclude_applications = exclude_applications
        self.include_applications = include_applications
        self.include_user_actions = include_user_actions


class microsoftgraphconditionalaccessconditionset(msrest.serialization.Model):
    """conditionalAccessConditionSet.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param applications: conditionalAccessApplications.
    :type applications: ~identity_sign_ins.models.microsoftgraphconditionalaccessapplications
    :param client_app_types: Client application types included in the policy. Possible values are:
     all, browser, mobileAppsAndDesktopClients, exchangeActiveSync, easSupported, other.
    :type client_app_types: list[str or
     ~identity_sign_ins.models.Microsoftgraphconditionalaccessclientapp]
    :param locations: conditionalAccessLocations.
    :type locations: ~identity_sign_ins.models.microsoftgraphconditionalaccesslocations
    :param platforms: conditionalAccessPlatforms.
    :type platforms: ~identity_sign_ins.models.microsoftgraphconditionalaccessplatforms
    :param sign_in_risk_levels: Risk levels included in the policy. Possible values are: low,
     medium, high, none.
    :type sign_in_risk_levels: list[str or ~identity_sign_ins.models.Microsoftgraphrisklevel]
    :param users: conditionalAccessUsers.
    :type users: ~identity_sign_ins.models.microsoftgraphconditionalaccessusers
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'applications': {'key': 'applications', 'type': 'microsoftgraphconditionalaccessapplications'},
        'client_app_types': {'key': 'clientAppTypes', 'type': '[str]'},
        'locations': {'key': 'locations', 'type': 'microsoftgraphconditionalaccesslocations'},
        'platforms': {'key': 'platforms', 'type': 'microsoftgraphconditionalaccessplatforms'},
        'sign_in_risk_levels': {'key': 'signInRiskLevels', 'type': '[str]'},
        'users': {'key': 'users', 'type': 'microsoftgraphconditionalaccessusers'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        applications: Optional["microsoftgraphconditionalaccessapplications"] = None,
        client_app_types: Optional[List[Union[str, "Microsoftgraphconditionalaccessclientapp"]]] = None,
        locations: Optional["microsoftgraphconditionalaccesslocations"] = None,
        platforms: Optional["microsoftgraphconditionalaccessplatforms"] = None,
        sign_in_risk_levels: Optional[List[Union[str, "Microsoftgraphrisklevel"]]] = None,
        users: Optional["microsoftgraphconditionalaccessusers"] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessconditionset, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.applications = applications
        self.client_app_types = client_app_types
        self.locations = locations
        self.platforms = platforms
        self.sign_in_risk_levels = sign_in_risk_levels
        self.users = users


class microsoftgraphconditionalaccessgrantcontrols(msrest.serialization.Model):
    """conditionalAccessGrantControls.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param built_in_controls: List of values of built-in controls required by the policy. Possible
     values: Block, Mfa, CompliantDevice, DomainJoinedDevice, ApprovedApplication,
     CompliantApplication.
    :type built_in_controls: list[str or
     ~identity_sign_ins.models.Microsoftgraphconditionalaccessgrantcontrol]
    :param custom_authentication_factors: List of custom controls IDs required by the policy. For
     more information, see Custom controls.
    :type custom_authentication_factors: list[str]
    :param operator: Defines the relationship of the grant controls. Possible values: AND, OR.
    :type operator: str
    :param terms_of_use: List of terms of use IDs required by the policy.
    :type terms_of_use: list[str]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'built_in_controls': {'key': 'builtInControls', 'type': '[str]'},
        'custom_authentication_factors': {'key': 'customAuthenticationFactors', 'type': '[str]'},
        'operator': {'key': 'operator', 'type': 'str'},
        'terms_of_use': {'key': 'termsOfUse', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        built_in_controls: Optional[List[Union[str, "Microsoftgraphconditionalaccessgrantcontrol"]]] = None,
        custom_authentication_factors: Optional[List[str]] = None,
        operator: Optional[str] = None,
        terms_of_use: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessgrantcontrols, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.built_in_controls = built_in_controls
        self.custom_authentication_factors = custom_authentication_factors
        self.operator = operator
        self.terms_of_use = terms_of_use


class microsoftgraphconditionalaccesslocations(msrest.serialization.Model):
    """conditionalAccessLocations.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param exclude_locations: Location IDs excluded from scope of policy.
    :type exclude_locations: list[str]
    :param include_locations: Location IDs in scope of policy unless explicitly excluded, All, or
     AllTrusted.
    :type include_locations: list[str]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'exclude_locations': {'key': 'excludeLocations', 'type': '[str]'},
        'include_locations': {'key': 'includeLocations', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        exclude_locations: Optional[List[str]] = None,
        include_locations: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccesslocations, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.exclude_locations = exclude_locations
        self.include_locations = include_locations


class microsoftgraphconditionalaccessplatforms(msrest.serialization.Model):
    """conditionalAccessPlatforms.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param exclude_platforms: Possible values are: android, iOS, windows, windowsPhone, macOS,
     unknownFutureValue.
    :type exclude_platforms: list[str or
     ~identity_sign_ins.models.Microsoftgraphconditionalaccessdeviceplatform]
    :param include_platforms: Possible values are: android, iOS, windows, windowsPhone, macOS, all,
     unknownFutureValue.
    :type include_platforms: list[str or
     ~identity_sign_ins.models.Microsoftgraphconditionalaccessdeviceplatform]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'exclude_platforms': {'key': 'excludePlatforms', 'type': '[str]'},
        'include_platforms': {'key': 'includePlatforms', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        exclude_platforms: Optional[List[Union[str, "Microsoftgraphconditionalaccessdeviceplatform"]]] = None,
        include_platforms: Optional[List[Union[str, "Microsoftgraphconditionalaccessdeviceplatform"]]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessplatforms, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.exclude_platforms = exclude_platforms
        self.include_platforms = include_platforms


class microsoftgraphconditionalaccesspolicy(microsoftgraphentity):
    """conditionalAccessPolicy.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param conditions: conditionalAccessConditionSet.
    :type conditions: ~identity_sign_ins.models.microsoftgraphconditionalaccessconditionset
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'. Readonly.
    :type created_date_time: ~datetime.datetime
    :param description:
    :type description: str
    :param display_name: Specifies a display name for the conditionalAccessPolicy object.
    :type display_name: str
    :param grant_controls: conditionalAccessGrantControls.
    :type grant_controls: ~identity_sign_ins.models.microsoftgraphconditionalaccessgrantcontrols
    :param modified_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'. Readonly.
    :type modified_date_time: ~datetime.datetime
    :param session_controls: conditionalAccessSessionControls.
    :type session_controls:
     ~identity_sign_ins.models.microsoftgraphconditionalaccesssessioncontrols
    :param state:  Possible values include: "enabled", "disabled",
     "enabledForReportingButNotEnforced".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphconditionalaccesspolicystate
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'conditions': {'key': 'conditions', 'type': 'microsoftgraphconditionalaccessconditionset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'grant_controls': {'key': 'grantControls', 'type': 'microsoftgraphconditionalaccessgrantcontrols'},
        'modified_date_time': {'key': 'modifiedDateTime', 'type': 'iso-8601'},
        'session_controls': {'key': 'sessionControls', 'type': 'microsoftgraphconditionalaccesssessioncontrols'},
        'state': {'key': 'state', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        conditions: Optional["microsoftgraphconditionalaccessconditionset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        grant_controls: Optional["microsoftgraphconditionalaccessgrantcontrols"] = None,
        modified_date_time: Optional[datetime.datetime] = None,
        session_controls: Optional["microsoftgraphconditionalaccesssessioncontrols"] = None,
        state: Optional[Union[str, "Microsoftgraphconditionalaccesspolicystate"]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccesspolicy, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.conditions = conditions
        self.created_date_time = created_date_time
        self.description = description
        self.display_name = display_name
        self.grant_controls = grant_controls
        self.modified_date_time = modified_date_time
        self.session_controls = session_controls
        self.state = state


class microsoftgraphconditionalaccessroot(microsoftgraphentity):
    """conditionalAccessRoot.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param named_locations:
    :type named_locations: list[~identity_sign_ins.models.microsoftgraphnamedlocation]
    :param policies:
    :type policies: list[~identity_sign_ins.models.microsoftgraphconditionalaccesspolicy]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'named_locations': {'key': 'namedLocations', 'type': '[microsoftgraphnamedlocation]'},
        'policies': {'key': 'policies', 'type': '[microsoftgraphconditionalaccesspolicy]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        named_locations: Optional[List["microsoftgraphnamedlocation"]] = None,
        policies: Optional[List["microsoftgraphconditionalaccesspolicy"]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessroot, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.named_locations = named_locations
        self.policies = policies


class microsoftgraphconditionalaccesssessioncontrols(msrest.serialization.Model):
    """conditionalAccessSessionControls.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param application_enforced_restrictions: applicationEnforcedRestrictionsSessionControl.
    :type application_enforced_restrictions:
     ~identity_sign_ins.models.microsoftgraphapplicationenforcedrestrictionssessioncontrol
    :param cloud_app_security: cloudAppSecuritySessionControl.
    :type cloud_app_security:
     ~identity_sign_ins.models.microsoftgraphcloudappsecuritysessioncontrol
    :param persistent_browser: persistentBrowserSessionControl.
    :type persistent_browser:
     ~identity_sign_ins.models.microsoftgraphpersistentbrowsersessioncontrol
    :param sign_in_frequency: signInFrequencySessionControl.
    :type sign_in_frequency: ~identity_sign_ins.models.microsoftgraphsigninfrequencysessioncontrol
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'application_enforced_restrictions': {'key': 'applicationEnforcedRestrictions', 'type': 'microsoftgraphapplicationenforcedrestrictionssessioncontrol'},
        'cloud_app_security': {'key': 'cloudAppSecurity', 'type': 'microsoftgraphcloudappsecuritysessioncontrol'},
        'persistent_browser': {'key': 'persistentBrowser', 'type': 'microsoftgraphpersistentbrowsersessioncontrol'},
        'sign_in_frequency': {'key': 'signInFrequency', 'type': 'microsoftgraphsigninfrequencysessioncontrol'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        application_enforced_restrictions: Optional["microsoftgraphapplicationenforcedrestrictionssessioncontrol"] = None,
        cloud_app_security: Optional["microsoftgraphcloudappsecuritysessioncontrol"] = None,
        persistent_browser: Optional["microsoftgraphpersistentbrowsersessioncontrol"] = None,
        sign_in_frequency: Optional["microsoftgraphsigninfrequencysessioncontrol"] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccesssessioncontrols, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.application_enforced_restrictions = application_enforced_restrictions
        self.cloud_app_security = cloud_app_security
        self.persistent_browser = persistent_browser
        self.sign_in_frequency = sign_in_frequency


class microsoftgraphconditionalaccessusers(msrest.serialization.Model):
    """conditionalAccessUsers.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param exclude_groups: Group IDs excluded from scope of policy.
    :type exclude_groups: list[str]
    :param exclude_roles: Role IDs excluded from scope of policy.
    :type exclude_roles: list[str]
    :param exclude_users: User IDs excluded from scope of policy and/or GuestsOrExternalUsers.
    :type exclude_users: list[str]
    :param include_groups: Group IDs in scope of policy unless explicitly excluded, or All.
    :type include_groups: list[str]
    :param include_roles: Role IDs in scope of policy unless explicitly excluded, or All.
    :type include_roles: list[str]
    :param include_users: User IDs in scope of policy unless explicitly excluded, or None or All or
     GuestsOrExternalUsers.
    :type include_users: list[str]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'exclude_groups': {'key': 'excludeGroups', 'type': '[str]'},
        'exclude_roles': {'key': 'excludeRoles', 'type': '[str]'},
        'exclude_users': {'key': 'excludeUsers', 'type': '[str]'},
        'include_groups': {'key': 'includeGroups', 'type': '[str]'},
        'include_roles': {'key': 'includeRoles', 'type': '[str]'},
        'include_users': {'key': 'includeUsers', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        exclude_groups: Optional[List[str]] = None,
        exclude_roles: Optional[List[str]] = None,
        exclude_users: Optional[List[str]] = None,
        include_groups: Optional[List[str]] = None,
        include_roles: Optional[List[str]] = None,
        include_users: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphconditionalaccessusers, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.exclude_groups = exclude_groups
        self.exclude_roles = exclude_roles
        self.exclude_users = exclude_users
        self.include_groups = include_groups
        self.include_roles = include_roles
        self.include_users = include_users


class microsoftgraphconfigurationmanagerclientenabledfeatures(msrest.serialization.Model):
    """configuration Manager client enabled features.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param compliance_policy: Whether compliance policy is managed by Intune.
    :type compliance_policy: bool
    :param device_configuration: Whether device configuration is managed by Intune.
    :type device_configuration: bool
    :param inventory: Whether inventory is managed by Intune.
    :type inventory: bool
    :param modern_apps: Whether modern application is managed by Intune.
    :type modern_apps: bool
    :param resource_access: Whether resource access is managed by Intune.
    :type resource_access: bool
    :param windows_update_for_business: Whether Windows Update for Business is managed by Intune.
    :type windows_update_for_business: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'compliance_policy': {'key': 'compliancePolicy', 'type': 'bool'},
        'device_configuration': {'key': 'deviceConfiguration', 'type': 'bool'},
        'inventory': {'key': 'inventory', 'type': 'bool'},
        'modern_apps': {'key': 'modernApps', 'type': 'bool'},
        'resource_access': {'key': 'resourceAccess', 'type': 'bool'},
        'windows_update_for_business': {'key': 'windowsUpdateForBusiness', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        compliance_policy: Optional[bool] = None,
        device_configuration: Optional[bool] = None,
        inventory: Optional[bool] = None,
        modern_apps: Optional[bool] = None,
        resource_access: Optional[bool] = None,
        windows_update_for_business: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphconfigurationmanagerclientenabledfeatures, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.compliance_policy = compliance_policy
        self.device_configuration = device_configuration
        self.inventory = inventory
        self.modern_apps = modern_apps
        self.resource_access = resource_access
        self.windows_update_for_business = windows_update_for_business


class microsoftgraphoutlookitem(microsoftgraphentity):
    """outlookItem.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param categories: The categories associated with the item.
    :type categories: list[str]
    :param change_key: Identifies the version of the item. Every time the item is changed,
     changeKey changes as well. This allows Exchange to apply changes to the correct version of the
     object. Read-only.
    :type change_key: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        categories: Optional[List[str]] = None,
        change_key: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphoutlookitem, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.categories = categories
        self.change_key = change_key
        self.created_date_time = created_date_time
        self.last_modified_date_time = last_modified_date_time


class microsoftgraphcontact(microsoftgraphoutlookitem):
    """contact.

    :param id: Read-only.
    :type id: str
    :param categories: The categories associated with the item.
    :type categories: list[str]
    :param change_key: Identifies the version of the item. Every time the item is changed,
     changeKey changes as well. This allows Exchange to apply changes to the correct version of the
     object. Read-only.
    :type change_key: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assistant_name: The name of the contact's assistant.
    :type assistant_name: str
    :param birthday: The contact's birthday. The Timestamp type represents date and time
     information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan
     1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type birthday: ~datetime.datetime
    :param business_address: physicalAddress.
    :type business_address: ~identity_sign_ins.models.microsoftgraphphysicaladdress
    :param business_home_page: The business home page of the contact.
    :type business_home_page: str
    :param business_phones: The contact's business phone numbers.
    :type business_phones: list[str]
    :param children: The names of the contact's children.
    :type children: list[str]
    :param company_name: The name of the contact's company.
    :type company_name: str
    :param department: The contact's department.
    :type department: str
    :param display_name: The contact's display name. You can specify the display name in a create
     or update operation. Note that later updates to other properties may cause an automatically
     generated value to overwrite the displayName value you have specified. To preserve a pre-
     existing value, always include it as displayName in an update operation.
    :type display_name: str
    :param email_addresses: The contact's email addresses.
    :type email_addresses: list[~identity_sign_ins.models.microsoftgraphemailaddress]
    :param file_as: The name the contact is filed under.
    :type file_as: str
    :param generation: The contact's generation.
    :type generation: str
    :param given_name: The contact's given name.
    :type given_name: str
    :param home_address: physicalAddress.
    :type home_address: ~identity_sign_ins.models.microsoftgraphphysicaladdress
    :param home_phones: The contact's home phone numbers.
    :type home_phones: list[str]
    :param im_addresses: The contact's instant messaging (IM) addresses.
    :type im_addresses: list[str]
    :param initials: The contact's initials.
    :type initials: str
    :param job_title: The contact’s job title.
    :type job_title: str
    :param manager: The name of the contact's manager.
    :type manager: str
    :param middle_name: The contact's middle name.
    :type middle_name: str
    :param mobile_phone: The contact's mobile phone number.
    :type mobile_phone: str
    :param nick_name: The contact's nickname.
    :type nick_name: str
    :param office_location: The location of the contact's office.
    :type office_location: str
    :param other_address: physicalAddress.
    :type other_address: ~identity_sign_ins.models.microsoftgraphphysicaladdress
    :param parent_folder_id: The ID of the contact's parent folder.
    :type parent_folder_id: str
    :param personal_notes: The user's notes about the contact.
    :type personal_notes: str
    :param profession: The contact's profession.
    :type profession: str
    :param spouse_name: The name of the contact's spouse/partner.
    :type spouse_name: str
    :param surname: The contact's surname.
    :type surname: str
    :param title: The contact's title.
    :type title: str
    :param yomi_company_name: The phonetic Japanese company name of the contact.
    :type yomi_company_name: str
    :param yomi_given_name: The phonetic Japanese given name (first name) of the contact.
    :type yomi_given_name: str
    :param yomi_surname: The phonetic Japanese surname (last name)  of the contact.
    :type yomi_surname: str
    :param extensions: The collection of open extensions defined for the contact. Read-only.
     Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the contact. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param photo: profilePhoto.
    :type photo: ~identity_sign_ins.models.microsoftgraphprofilephoto
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the contact. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'assistant_name': {'key': 'assistantName', 'type': 'str'},
        'birthday': {'key': 'birthday', 'type': 'iso-8601'},
        'business_address': {'key': 'businessAddress', 'type': 'microsoftgraphphysicaladdress'},
        'business_home_page': {'key': 'businessHomePage', 'type': 'str'},
        'business_phones': {'key': 'businessPhones', 'type': '[str]'},
        'children': {'key': 'children', 'type': '[str]'},
        'company_name': {'key': 'companyName', 'type': 'str'},
        'department': {'key': 'department', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'email_addresses': {'key': 'emailAddresses', 'type': '[microsoftgraphemailaddress]'},
        'file_as': {'key': 'fileAs', 'type': 'str'},
        'generation': {'key': 'generation', 'type': 'str'},
        'given_name': {'key': 'givenName', 'type': 'str'},
        'home_address': {'key': 'homeAddress', 'type': 'microsoftgraphphysicaladdress'},
        'home_phones': {'key': 'homePhones', 'type': '[str]'},
        'im_addresses': {'key': 'imAddresses', 'type': '[str]'},
        'initials': {'key': 'initials', 'type': 'str'},
        'job_title': {'key': 'jobTitle', 'type': 'str'},
        'manager': {'key': 'manager', 'type': 'str'},
        'middle_name': {'key': 'middleName', 'type': 'str'},
        'mobile_phone': {'key': 'mobilePhone', 'type': 'str'},
        'nick_name': {'key': 'nickName', 'type': 'str'},
        'office_location': {'key': 'officeLocation', 'type': 'str'},
        'other_address': {'key': 'otherAddress', 'type': 'microsoftgraphphysicaladdress'},
        'parent_folder_id': {'key': 'parentFolderId', 'type': 'str'},
        'personal_notes': {'key': 'personalNotes', 'type': 'str'},
        'profession': {'key': 'profession', 'type': 'str'},
        'spouse_name': {'key': 'spouseName', 'type': 'str'},
        'surname': {'key': 'surname', 'type': 'str'},
        'title': {'key': 'title', 'type': 'str'},
        'yomi_company_name': {'key': 'yomiCompanyName', 'type': 'str'},
        'yomi_given_name': {'key': 'yomiGivenName', 'type': 'str'},
        'yomi_surname': {'key': 'yomiSurname', 'type': 'str'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'photo': {'key': 'photo', 'type': 'microsoftgraphprofilephoto'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        categories: Optional[List[str]] = None,
        change_key: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        assistant_name: Optional[str] = None,
        birthday: Optional[datetime.datetime] = None,
        business_address: Optional["microsoftgraphphysicaladdress"] = None,
        business_home_page: Optional[str] = None,
        business_phones: Optional[List[str]] = None,
        children: Optional[List[str]] = None,
        company_name: Optional[str] = None,
        department: Optional[str] = None,
        display_name: Optional[str] = None,
        email_addresses: Optional[List["microsoftgraphemailaddress"]] = None,
        file_as: Optional[str] = None,
        generation: Optional[str] = None,
        given_name: Optional[str] = None,
        home_address: Optional["microsoftgraphphysicaladdress"] = None,
        home_phones: Optional[List[str]] = None,
        im_addresses: Optional[List[str]] = None,
        initials: Optional[str] = None,
        job_title: Optional[str] = None,
        manager: Optional[str] = None,
        middle_name: Optional[str] = None,
        mobile_phone: Optional[str] = None,
        nick_name: Optional[str] = None,
        office_location: Optional[str] = None,
        other_address: Optional["microsoftgraphphysicaladdress"] = None,
        parent_folder_id: Optional[str] = None,
        personal_notes: Optional[str] = None,
        profession: Optional[str] = None,
        spouse_name: Optional[str] = None,
        surname: Optional[str] = None,
        title: Optional[str] = None,
        yomi_company_name: Optional[str] = None,
        yomi_given_name: Optional[str] = None,
        yomi_surname: Optional[str] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        photo: Optional["microsoftgraphprofilephoto"] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphcontact, self).__init__(id=id, categories=categories, change_key=change_key, created_date_time=created_date_time, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.assistant_name = assistant_name
        self.birthday = birthday
        self.business_address = business_address
        self.business_home_page = business_home_page
        self.business_phones = business_phones
        self.children = children
        self.company_name = company_name
        self.department = department
        self.display_name = display_name
        self.email_addresses = email_addresses
        self.file_as = file_as
        self.generation = generation
        self.given_name = given_name
        self.home_address = home_address
        self.home_phones = home_phones
        self.im_addresses = im_addresses
        self.initials = initials
        self.job_title = job_title
        self.manager = manager
        self.middle_name = middle_name
        self.mobile_phone = mobile_phone
        self.nick_name = nick_name
        self.office_location = office_location
        self.other_address = other_address
        self.parent_folder_id = parent_folder_id
        self.personal_notes = personal_notes
        self.profession = profession
        self.spouse_name = spouse_name
        self.surname = surname
        self.title = title
        self.yomi_company_name = yomi_company_name
        self.yomi_given_name = yomi_given_name
        self.yomi_surname = yomi_surname
        self.extensions = extensions
        self.multi_value_extended_properties = multi_value_extended_properties
        self.photo = photo
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphcontactfolder(microsoftgraphentity):
    """contactFolder.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The folder's display name.
    :type display_name: str
    :param parent_folder_id: The ID of the folder's parent folder.
    :type parent_folder_id: str
    :param child_folders: The collection of child folders in the folder. Navigation property. Read-
     only. Nullable.
    :type child_folders: list[~identity_sign_ins.models.microsoftgraphcontactfolder]
    :param contacts: The contacts in the folder. Navigation property. Read-only. Nullable.
    :type contacts: list[~identity_sign_ins.models.microsoftgraphcontact]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the contactFolder. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the contactFolder. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'parent_folder_id': {'key': 'parentFolderId', 'type': 'str'},
        'child_folders': {'key': 'childFolders', 'type': '[microsoftgraphcontactfolder]'},
        'contacts': {'key': 'contacts', 'type': '[microsoftgraphcontact]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        parent_folder_id: Optional[str] = None,
        child_folders: Optional[List["microsoftgraphcontactfolder"]] = None,
        contacts: Optional[List["microsoftgraphcontact"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphcontactfolder, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.parent_folder_id = parent_folder_id
        self.child_folders = child_folders
        self.contacts = contacts
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphcontenttype(microsoftgraphentity):
    """contentType.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param description: The descriptive text for the item.
    :type description: str
    :param group: The name of the group this content type belongs to. Helps organize related
     content types.
    :type group: str
    :param hidden: Indicates whether the content type is hidden in the list's 'New' menu.
    :type hidden: bool
    :param inherited_from: itemReference.
    :type inherited_from: ~identity_sign_ins.models.microsoftgraphitemreference
    :param name: The name of the content type.
    :type name: str
    :param order: contentTypeOrder.
    :type order: ~identity_sign_ins.models.microsoftgraphcontenttypeorder
    :param parent_id: The unique identifier of the content type.
    :type parent_id: str
    :param read_only: If true, the content type cannot be modified unless this value is first set
     to false.
    :type read_only: bool
    :param sealed: If true, the content type cannot be modified by users or through push-down
     operations. Only site collection administrators can seal or unseal content types.
    :type sealed: bool
    :param column_links: The collection of columns that are required by this content type.
    :type column_links: list[~identity_sign_ins.models.microsoftgraphcolumnlink]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'group': {'key': 'group', 'type': 'str'},
        'hidden': {'key': 'hidden', 'type': 'bool'},
        'inherited_from': {'key': 'inheritedFrom', 'type': 'microsoftgraphitemreference'},
        'name': {'key': 'name', 'type': 'str'},
        'order': {'key': 'order', 'type': 'microsoftgraphcontenttypeorder'},
        'parent_id': {'key': 'parentId', 'type': 'str'},
        'read_only': {'key': 'readOnly', 'type': 'bool'},
        'sealed': {'key': 'sealed', 'type': 'bool'},
        'column_links': {'key': 'columnLinks', 'type': '[microsoftgraphcolumnlink]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        group: Optional[str] = None,
        hidden: Optional[bool] = None,
        inherited_from: Optional["microsoftgraphitemreference"] = None,
        name: Optional[str] = None,
        order: Optional["microsoftgraphcontenttypeorder"] = None,
        parent_id: Optional[str] = None,
        read_only: Optional[bool] = None,
        sealed: Optional[bool] = None,
        column_links: Optional[List["microsoftgraphcolumnlink"]] = None,
        **kwargs
    ):
        super(microsoftgraphcontenttype, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.description = description
        self.group = group
        self.hidden = hidden
        self.inherited_from = inherited_from
        self.name = name
        self.order = order
        self.parent_id = parent_id
        self.read_only = read_only
        self.sealed = sealed
        self.column_links = column_links


class microsoftgraphcontenttypeinfo(msrest.serialization.Model):
    """contentTypeInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param id: The id of the content type.
    :type id: str
    :param name: The name of the content type.
    :type name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        id: Optional[str] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphcontenttypeinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.id = id
        self.name = name


class microsoftgraphcontenttypeorder(msrest.serialization.Model):
    """contentTypeOrder.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param default: Whether this is the default Content Type.
    :type default: bool
    :param position: Specifies the position in which the Content Type appears in the selection UI.
    :type position: int
    """

    _validation = {
        'position': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'default': {'key': 'default', 'type': 'bool'},
        'position': {'key': 'position', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        default: Optional[bool] = None,
        position: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphcontenttypeorder, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.default = default
        self.position = position


class microsoftgraphconversation(microsoftgraphentity):
    """conversation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param has_attachments: Indicates whether any of the posts within this Conversation has at
     least one attachment.
    :type has_attachments: bool
    :param last_delivered_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_delivered_date_time: ~datetime.datetime
    :param preview: A short summary from the body of the latest post in this converstaion.
    :type preview: str
    :param topic: The topic of the conversation. This property can be set when the conversation is
     created, but it cannot be updated.
    :type topic: str
    :param unique_senders: All the users that sent a message to this Conversation.
    :type unique_senders: list[str]
    :param threads: A collection of all the conversation threads in the conversation. A navigation
     property. Read-only. Nullable.
    :type threads: list[~identity_sign_ins.models.microsoftgraphconversationthread]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'last_delivered_date_time': {'key': 'lastDeliveredDateTime', 'type': 'iso-8601'},
        'preview': {'key': 'preview', 'type': 'str'},
        'topic': {'key': 'topic', 'type': 'str'},
        'unique_senders': {'key': 'uniqueSenders', 'type': '[str]'},
        'threads': {'key': 'threads', 'type': '[microsoftgraphconversationthread]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        has_attachments: Optional[bool] = None,
        last_delivered_date_time: Optional[datetime.datetime] = None,
        preview: Optional[str] = None,
        topic: Optional[str] = None,
        unique_senders: Optional[List[str]] = None,
        threads: Optional[List["microsoftgraphconversationthread"]] = None,
        **kwargs
    ):
        super(microsoftgraphconversation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.has_attachments = has_attachments
        self.last_delivered_date_time = last_delivered_date_time
        self.preview = preview
        self.topic = topic
        self.unique_senders = unique_senders
        self.threads = threads


class microsoftgraphconversationmember(microsoftgraphentity):
    """conversationMember.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The display name of the user.
    :type display_name: str
    :param roles: The roles for that user.
    :type roles: list[str]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'roles': {'key': 'roles', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        roles: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphconversationmember, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.roles = roles


class microsoftgraphconversationthread(microsoftgraphentity):
    """conversationThread.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param cc_recipients: The Cc: recipients for the thread.
    :type cc_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param has_attachments: Indicates whether any of the posts within this thread has at least one
     attachment.
    :type has_attachments: bool
    :param is_locked: Indicates if the thread is locked.
    :type is_locked: bool
    :param last_delivered_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_delivered_date_time: ~datetime.datetime
    :param preview: A short summary from the body of the latest post in this conversation.
    :type preview: str
    :param topic: The topic of the conversation. This property can be set when the conversation is
     created, but it cannot be updated.
    :type topic: str
    :param to_recipients: The To: recipients for the thread.
    :type to_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param unique_senders: All the users that sent a message to this thread.
    :type unique_senders: list[str]
    :param posts: Read-only. Nullable.
    :type posts: list[~identity_sign_ins.models.microsoftgraphpost]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'cc_recipients': {'key': 'ccRecipients', 'type': '[microsoftgraphrecipient]'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'is_locked': {'key': 'isLocked', 'type': 'bool'},
        'last_delivered_date_time': {'key': 'lastDeliveredDateTime', 'type': 'iso-8601'},
        'preview': {'key': 'preview', 'type': 'str'},
        'topic': {'key': 'topic', 'type': 'str'},
        'to_recipients': {'key': 'toRecipients', 'type': '[microsoftgraphrecipient]'},
        'unique_senders': {'key': 'uniqueSenders', 'type': '[str]'},
        'posts': {'key': 'posts', 'type': '[microsoftgraphpost]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        cc_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        has_attachments: Optional[bool] = None,
        is_locked: Optional[bool] = None,
        last_delivered_date_time: Optional[datetime.datetime] = None,
        preview: Optional[str] = None,
        topic: Optional[str] = None,
        to_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        unique_senders: Optional[List[str]] = None,
        posts: Optional[List["microsoftgraphpost"]] = None,
        **kwargs
    ):
        super(microsoftgraphconversationthread, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.cc_recipients = cc_recipients
        self.has_attachments = has_attachments
        self.is_locked = is_locked
        self.last_delivered_date_time = last_delivered_date_time
        self.preview = preview
        self.topic = topic
        self.to_recipients = to_recipients
        self.unique_senders = unique_senders
        self.posts = posts


class microsoftgraphcurrencycolumn(msrest.serialization.Model):
    """currencyColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param locale: Specifies the locale from which to infer the currency symbol.
    :type locale: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'locale': {'key': 'locale', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        locale: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphcurrencycolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.locale = locale


class microsoftgraphdatapolicyoperation(microsoftgraphentity):
    """dataPolicyOperation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param completed_date_time: Represents when the request for this data policy operation was
     completed, in UTC time, using the ISO 8601 format. For example, midnight UTC on Jan 1, 2014
     would look like this: '2014-01-01T00:00:00Z'. Null until the operation completes.
    :type completed_date_time: ~datetime.datetime
    :param progress: Specifies the progress of an operation.
    :type progress: float
    :param status:  Possible values include: "notStarted", "running", "complete", "failed",
     "unknownFutureValue".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphdatapolicyoperationstatus
    :param storage_location: The URL location to where data is being exported for export requests.
    :type storage_location: str
    :param submitted_date_time: Represents when the request for this data operation was submitted,
     in UTC time, using the ISO 8601 format. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type submitted_date_time: ~datetime.datetime
    :param user_id: The id for the user on whom the operation is performed.
    :type user_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'completed_date_time': {'key': 'completedDateTime', 'type': 'iso-8601'},
        'progress': {'key': 'progress', 'type': 'float'},
        'status': {'key': 'status', 'type': 'str'},
        'storage_location': {'key': 'storageLocation', 'type': 'str'},
        'submitted_date_time': {'key': 'submittedDateTime', 'type': 'iso-8601'},
        'user_id': {'key': 'userId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        completed_date_time: Optional[datetime.datetime] = None,
        progress: Optional[float] = None,
        status: Optional[Union[str, "Microsoftgraphdatapolicyoperationstatus"]] = None,
        storage_location: Optional[str] = None,
        submitted_date_time: Optional[datetime.datetime] = None,
        user_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdatapolicyoperation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.completed_date_time = completed_date_time
        self.progress = progress
        self.status = status
        self.storage_location = storage_location
        self.submitted_date_time = submitted_date_time
        self.user_id = user_id


class microsoftgraphdatetimecolumn(msrest.serialization.Model):
    """dateTimeColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_as: How the value should be presented in the UX. Must be one of default,
     friendly, or standard. See below for more details. If unspecified, treated as default.
    :type display_as: str
    :param format: Indicates whether the value should be presented as a date only or a date and
     time. Must be one of dateOnly or dateTime.
    :type format: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_as': {'key': 'displayAs', 'type': 'str'},
        'format': {'key': 'format', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        display_as: Optional[str] = None,
        format: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdatetimecolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.display_as = display_as
        self.format = format


class microsoftgraphdatetimezone(msrest.serialization.Model):
    """dateTimeTimeZone.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param date_time: A single point of time in a combined date and time representation
     ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).
    :type date_time: str
    :param time_zone: Represents a time zone, for example, 'Pacific Standard Time'. See below for
     more possible values.
    :type time_zone: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'date_time': {'key': 'dateTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        date_time: Optional[str] = None,
        time_zone: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdatetimezone, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.date_time = date_time
        self.time_zone = time_zone


class microsoftgraphdefaultcolumnvalue(msrest.serialization.Model):
    """defaultColumnValue.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param formula: The formula used to compute the default value for this column.
    :type formula: str
    :param value: The direct value to use as the default value for this column.
    :type value: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'formula': {'key': 'formula', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        formula: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdefaultcolumnvalue, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.formula = formula
        self.value = value


class microsoftgraphdeleted(msrest.serialization.Model):
    """deleted.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param state: Represents the state of the deleted item.
    :type state: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'state': {'key': 'state', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        state: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdeleted, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.state = state


class microsoftgraphdeviceactionresult(msrest.serialization.Model):
    """Device action result.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param action_name: Action name.
    :type action_name: str
    :param action_state:  Possible values include: "none", "pending", "canceled", "active", "done",
     "failed", "notSupported".
    :type action_state: str or ~identity_sign_ins.models.Microsoftgraphactionstate
    :param last_updated_date_time: Time the action state was last updated.
    :type last_updated_date_time: ~datetime.datetime
    :param start_date_time: Time the action was initiated.
    :type start_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'action_name': {'key': 'actionName', 'type': 'str'},
        'action_state': {'key': 'actionState', 'type': 'str'},
        'last_updated_date_time': {'key': 'lastUpdatedDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        action_name: Optional[str] = None,
        action_state: Optional[Union[str, "Microsoftgraphactionstate"]] = None,
        last_updated_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphdeviceactionresult, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.action_name = action_name
        self.action_state = action_state
        self.last_updated_date_time = last_updated_date_time
        self.start_date_time = start_date_time


class microsoftgraphdevicecategory(microsoftgraphentity):
    """Device categories provides a way to organize your devices. Using device categories, company administrators can define their own categories that make sense to their company. These categories can then be applied to a device in the Intune Azure console or selected by a user during device enrollment. You can filter reports and create dynamic Azure Active Directory device groups based on device categories.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param description: Optional description for the device category.
    :type description: str
    :param display_name: Display name for the device category.
    :type display_name: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdevicecategory, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.description = description
        self.display_name = display_name


class microsoftgraphdevicecompliancepolicysettingstate(msrest.serialization.Model):
    """Device Compilance Policy Setting State for a given device.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param current_value: Current value of setting on device.
    :type current_value: str
    :param error_code: Error code for the setting.
    :type error_code: long
    :param error_description: Error description.
    :type error_description: str
    :param instance_display_name: Name of setting instance that is being reported.
    :type instance_display_name: str
    :param setting: The setting that is being reported.
    :type setting: str
    :param setting_name: Localized/user friendly setting name that is being reported.
    :type setting_name: str
    :param sources: Contributing policies.
    :type sources: list[~identity_sign_ins.models.microsoftgraphsettingsource]
    :param state:  Possible values include: "unknown", "notApplicable", "compliant", "remediated",
     "nonCompliant", "error", "conflict", "notAssigned".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphcompliancestatus
    :param user_email: UserEmail.
    :type user_email: str
    :param user_id: UserId.
    :type user_id: str
    :param user_name: UserName.
    :type user_name: str
    :param user_principal_name: UserPrincipalName.
    :type user_principal_name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'current_value': {'key': 'currentValue', 'type': 'str'},
        'error_code': {'key': 'errorCode', 'type': 'long'},
        'error_description': {'key': 'errorDescription', 'type': 'str'},
        'instance_display_name': {'key': 'instanceDisplayName', 'type': 'str'},
        'setting': {'key': 'setting', 'type': 'str'},
        'setting_name': {'key': 'settingName', 'type': 'str'},
        'sources': {'key': 'sources', 'type': '[microsoftgraphsettingsource]'},
        'state': {'key': 'state', 'type': 'str'},
        'user_email': {'key': 'userEmail', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        current_value: Optional[str] = None,
        error_code: Optional[int] = None,
        error_description: Optional[str] = None,
        instance_display_name: Optional[str] = None,
        setting: Optional[str] = None,
        setting_name: Optional[str] = None,
        sources: Optional[List["microsoftgraphsettingsource"]] = None,
        state: Optional[Union[str, "Microsoftgraphcompliancestatus"]] = None,
        user_email: Optional[str] = None,
        user_id: Optional[str] = None,
        user_name: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdevicecompliancepolicysettingstate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.current_value = current_value
        self.error_code = error_code
        self.error_description = error_description
        self.instance_display_name = instance_display_name
        self.setting = setting
        self.setting_name = setting_name
        self.sources = sources
        self.state = state
        self.user_email = user_email
        self.user_id = user_id
        self.user_name = user_name
        self.user_principal_name = user_principal_name


class microsoftgraphdevicecompliancepolicystate(microsoftgraphentity):
    """Device Compliance Policy State for a given device.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The name of the policy for this policyBase.
    :type display_name: str
    :param platform_type:  Possible values include: "android", "iOS", "macOS", "windowsPhone81",
     "windows81AndLater", "windows10AndLater", "androidWorkProfile", "all".
    :type platform_type: str or ~identity_sign_ins.models.Microsoftgraphpolicyplatformtype
    :param setting_count: Count of how many setting a policy holds.
    :type setting_count: int
    :param setting_states:
    :type setting_states:
     list[~identity_sign_ins.models.microsoftgraphdevicecompliancepolicysettingstate]
    :param state:  Possible values include: "unknown", "notApplicable", "compliant", "remediated",
     "nonCompliant", "error", "conflict", "notAssigned".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphcompliancestatus
    :param version: The version of the policy.
    :type version: int
    """

    _validation = {
        'setting_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'version': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'platform_type': {'key': 'platformType', 'type': 'str'},
        'setting_count': {'key': 'settingCount', 'type': 'int'},
        'setting_states': {'key': 'settingStates', 'type': '[microsoftgraphdevicecompliancepolicysettingstate]'},
        'state': {'key': 'state', 'type': 'str'},
        'version': {'key': 'version', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        platform_type: Optional[Union[str, "Microsoftgraphpolicyplatformtype"]] = None,
        setting_count: Optional[int] = None,
        setting_states: Optional[List["microsoftgraphdevicecompliancepolicysettingstate"]] = None,
        state: Optional[Union[str, "Microsoftgraphcompliancestatus"]] = None,
        version: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphdevicecompliancepolicystate, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.platform_type = platform_type
        self.setting_count = setting_count
        self.setting_states = setting_states
        self.state = state
        self.version = version


class microsoftgraphdeviceconfigurationsettingstate(msrest.serialization.Model):
    """Device Configuration Setting State for a given device.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param current_value: Current value of setting on device.
    :type current_value: str
    :param error_code: Error code for the setting.
    :type error_code: long
    :param error_description: Error description.
    :type error_description: str
    :param instance_display_name: Name of setting instance that is being reported.
    :type instance_display_name: str
    :param setting: The setting that is being reported.
    :type setting: str
    :param setting_name: Localized/user friendly setting name that is being reported.
    :type setting_name: str
    :param sources: Contributing policies.
    :type sources: list[~identity_sign_ins.models.microsoftgraphsettingsource]
    :param state:  Possible values include: "unknown", "notApplicable", "compliant", "remediated",
     "nonCompliant", "error", "conflict", "notAssigned".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphcompliancestatus
    :param user_email: UserEmail.
    :type user_email: str
    :param user_id: UserId.
    :type user_id: str
    :param user_name: UserName.
    :type user_name: str
    :param user_principal_name: UserPrincipalName.
    :type user_principal_name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'current_value': {'key': 'currentValue', 'type': 'str'},
        'error_code': {'key': 'errorCode', 'type': 'long'},
        'error_description': {'key': 'errorDescription', 'type': 'str'},
        'instance_display_name': {'key': 'instanceDisplayName', 'type': 'str'},
        'setting': {'key': 'setting', 'type': 'str'},
        'setting_name': {'key': 'settingName', 'type': 'str'},
        'sources': {'key': 'sources', 'type': '[microsoftgraphsettingsource]'},
        'state': {'key': 'state', 'type': 'str'},
        'user_email': {'key': 'userEmail', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        current_value: Optional[str] = None,
        error_code: Optional[int] = None,
        error_description: Optional[str] = None,
        instance_display_name: Optional[str] = None,
        setting: Optional[str] = None,
        setting_name: Optional[str] = None,
        sources: Optional[List["microsoftgraphsettingsource"]] = None,
        state: Optional[Union[str, "Microsoftgraphcompliancestatus"]] = None,
        user_email: Optional[str] = None,
        user_id: Optional[str] = None,
        user_name: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdeviceconfigurationsettingstate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.current_value = current_value
        self.error_code = error_code
        self.error_description = error_description
        self.instance_display_name = instance_display_name
        self.setting = setting
        self.setting_name = setting_name
        self.sources = sources
        self.state = state
        self.user_email = user_email
        self.user_id = user_id
        self.user_name = user_name
        self.user_principal_name = user_principal_name


class microsoftgraphdeviceconfigurationstate(microsoftgraphentity):
    """Device Configuration State for a given device.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The name of the policy for this policyBase.
    :type display_name: str
    :param platform_type:  Possible values include: "android", "iOS", "macOS", "windowsPhone81",
     "windows81AndLater", "windows10AndLater", "androidWorkProfile", "all".
    :type platform_type: str or ~identity_sign_ins.models.Microsoftgraphpolicyplatformtype
    :param setting_count: Count of how many setting a policy holds.
    :type setting_count: int
    :param setting_states:
    :type setting_states:
     list[~identity_sign_ins.models.microsoftgraphdeviceconfigurationsettingstate]
    :param state:  Possible values include: "unknown", "notApplicable", "compliant", "remediated",
     "nonCompliant", "error", "conflict", "notAssigned".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphcompliancestatus
    :param version: The version of the policy.
    :type version: int
    """

    _validation = {
        'setting_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'version': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'platform_type': {'key': 'platformType', 'type': 'str'},
        'setting_count': {'key': 'settingCount', 'type': 'int'},
        'setting_states': {'key': 'settingStates', 'type': '[microsoftgraphdeviceconfigurationsettingstate]'},
        'state': {'key': 'state', 'type': 'str'},
        'version': {'key': 'version', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        platform_type: Optional[Union[str, "Microsoftgraphpolicyplatformtype"]] = None,
        setting_count: Optional[int] = None,
        setting_states: Optional[List["microsoftgraphdeviceconfigurationsettingstate"]] = None,
        state: Optional[Union[str, "Microsoftgraphcompliancestatus"]] = None,
        version: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphdeviceconfigurationstate, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.platform_type = platform_type
        self.setting_count = setting_count
        self.setting_states = setting_states
        self.state = state
        self.version = version


class microsoftgraphdevicehealthattestationstate(msrest.serialization.Model):
    """deviceHealthAttestationState.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param attestation_identity_key: TWhen an Attestation Identity Key (AIK) is present on a
     device, it indicates that the device has an endorsement key (EK) certificate.
    :type attestation_identity_key: str
    :param bit_locker_status: On or Off of BitLocker Drive Encryption.
    :type bit_locker_status: str
    :param boot_app_security_version: The security version number of the Boot Application.
    :type boot_app_security_version: str
    :param boot_debugging: When bootDebugging is enabled, the device is used in development and
     testing.
    :type boot_debugging: str
    :param boot_manager_security_version: The security version number of the Boot Application.
    :type boot_manager_security_version: str
    :param boot_manager_version: The version of the Boot Manager.
    :type boot_manager_version: str
    :param boot_revision_list_info: The Boot Revision List that was loaded during initial boot on
     the attested device.
    :type boot_revision_list_info: str
    :param code_integrity: When code integrity is enabled, code execution is restricted to
     integrity verified code.
    :type code_integrity: str
    :param code_integrity_check_version: The version of the Boot Manager.
    :type code_integrity_check_version: str
    :param code_integrity_policy: The Code Integrity policy that is controlling the security of the
     boot environment.
    :type code_integrity_policy: str
    :param content_namespace_url: The DHA report version. (Namespace version).
    :type content_namespace_url: str
    :param content_version: The HealthAttestation state schema version.
    :type content_version: str
    :param data_excution_policy: DEP Policy defines a set of hardware and software technologies
     that perform additional checks on memory.
    :type data_excution_policy: str
    :param device_health_attestation_status: The DHA report version. (Namespace version).
    :type device_health_attestation_status: str
    :param early_launch_anti_malware_driver_protection: ELAM provides protection for the computers
     in your network when they start up.
    :type early_launch_anti_malware_driver_protection: str
    :param health_attestation_supported_status: This attribute indicates if DHA is supported for
     the device.
    :type health_attestation_supported_status: str
    :param health_status_mismatch_info: This attribute appears if DHA-Service detects an integrity
     issue.
    :type health_status_mismatch_info: str
    :param issued_date_time: The DateTime when device was evaluated or issued to MDM.
    :type issued_date_time: ~datetime.datetime
    :param last_update_date_time: The Timestamp of the last update.
    :type last_update_date_time: str
    :param operating_system_kernel_debugging: When operatingSystemKernelDebugging is enabled, the
     device is used in development and testing.
    :type operating_system_kernel_debugging: str
    :param operating_system_rev_list_info: The Operating System Revision List that was loaded
     during initial boot on the attested device.
    :type operating_system_rev_list_info: str
    :param pcr0: The measurement that is captured in PCR[0].
    :type pcr0: str
    :param pcr_hash_algorithm: Informational attribute that identifies the HASH algorithm that was
     used by TPM.
    :type pcr_hash_algorithm: str
    :param reset_count: The number of times a PC device has hibernated or resumed.
    :type reset_count: long
    :param restart_count: The number of times a PC device has rebooted.
    :type restart_count: long
    :param safe_mode: Safe mode is a troubleshooting option for Windows that starts your computer
     in a limited state.
    :type safe_mode: str
    :param secure_boot: When Secure Boot is enabled, the core components must have the correct
     cryptographic signatures.
    :type secure_boot: str
    :param secure_boot_configuration_policy_finger_print: Fingerprint of the Custom Secure Boot
     Configuration Policy.
    :type secure_boot_configuration_policy_finger_print: str
    :param test_signing: When test signing is allowed, the device does not enforce signature
     validation during boot.
    :type test_signing: str
    :param tpm_version: The security version number of the Boot Application.
    :type tpm_version: str
    :param virtual_secure_mode: VSM is a container that protects high value assets from a
     compromised kernel.
    :type virtual_secure_mode: str
    :param windows_pe: Operating system running with limited services that is used to prepare a
     computer for Windows.
    :type windows_pe: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'attestation_identity_key': {'key': 'attestationIdentityKey', 'type': 'str'},
        'bit_locker_status': {'key': 'bitLockerStatus', 'type': 'str'},
        'boot_app_security_version': {'key': 'bootAppSecurityVersion', 'type': 'str'},
        'boot_debugging': {'key': 'bootDebugging', 'type': 'str'},
        'boot_manager_security_version': {'key': 'bootManagerSecurityVersion', 'type': 'str'},
        'boot_manager_version': {'key': 'bootManagerVersion', 'type': 'str'},
        'boot_revision_list_info': {'key': 'bootRevisionListInfo', 'type': 'str'},
        'code_integrity': {'key': 'codeIntegrity', 'type': 'str'},
        'code_integrity_check_version': {'key': 'codeIntegrityCheckVersion', 'type': 'str'},
        'code_integrity_policy': {'key': 'codeIntegrityPolicy', 'type': 'str'},
        'content_namespace_url': {'key': 'contentNamespaceUrl', 'type': 'str'},
        'content_version': {'key': 'contentVersion', 'type': 'str'},
        'data_excution_policy': {'key': 'dataExcutionPolicy', 'type': 'str'},
        'device_health_attestation_status': {'key': 'deviceHealthAttestationStatus', 'type': 'str'},
        'early_launch_anti_malware_driver_protection': {'key': 'earlyLaunchAntiMalwareDriverProtection', 'type': 'str'},
        'health_attestation_supported_status': {'key': 'healthAttestationSupportedStatus', 'type': 'str'},
        'health_status_mismatch_info': {'key': 'healthStatusMismatchInfo', 'type': 'str'},
        'issued_date_time': {'key': 'issuedDateTime', 'type': 'iso-8601'},
        'last_update_date_time': {'key': 'lastUpdateDateTime', 'type': 'str'},
        'operating_system_kernel_debugging': {'key': 'operatingSystemKernelDebugging', 'type': 'str'},
        'operating_system_rev_list_info': {'key': 'operatingSystemRevListInfo', 'type': 'str'},
        'pcr0': {'key': 'pcr0', 'type': 'str'},
        'pcr_hash_algorithm': {'key': 'pcrHashAlgorithm', 'type': 'str'},
        'reset_count': {'key': 'resetCount', 'type': 'long'},
        'restart_count': {'key': 'restartCount', 'type': 'long'},
        'safe_mode': {'key': 'safeMode', 'type': 'str'},
        'secure_boot': {'key': 'secureBoot', 'type': 'str'},
        'secure_boot_configuration_policy_finger_print': {'key': 'secureBootConfigurationPolicyFingerPrint', 'type': 'str'},
        'test_signing': {'key': 'testSigning', 'type': 'str'},
        'tpm_version': {'key': 'tpmVersion', 'type': 'str'},
        'virtual_secure_mode': {'key': 'virtualSecureMode', 'type': 'str'},
        'windows_pe': {'key': 'windowsPE', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        attestation_identity_key: Optional[str] = None,
        bit_locker_status: Optional[str] = None,
        boot_app_security_version: Optional[str] = None,
        boot_debugging: Optional[str] = None,
        boot_manager_security_version: Optional[str] = None,
        boot_manager_version: Optional[str] = None,
        boot_revision_list_info: Optional[str] = None,
        code_integrity: Optional[str] = None,
        code_integrity_check_version: Optional[str] = None,
        code_integrity_policy: Optional[str] = None,
        content_namespace_url: Optional[str] = None,
        content_version: Optional[str] = None,
        data_excution_policy: Optional[str] = None,
        device_health_attestation_status: Optional[str] = None,
        early_launch_anti_malware_driver_protection: Optional[str] = None,
        health_attestation_supported_status: Optional[str] = None,
        health_status_mismatch_info: Optional[str] = None,
        issued_date_time: Optional[datetime.datetime] = None,
        last_update_date_time: Optional[str] = None,
        operating_system_kernel_debugging: Optional[str] = None,
        operating_system_rev_list_info: Optional[str] = None,
        pcr0: Optional[str] = None,
        pcr_hash_algorithm: Optional[str] = None,
        reset_count: Optional[int] = None,
        restart_count: Optional[int] = None,
        safe_mode: Optional[str] = None,
        secure_boot: Optional[str] = None,
        secure_boot_configuration_policy_finger_print: Optional[str] = None,
        test_signing: Optional[str] = None,
        tpm_version: Optional[str] = None,
        virtual_secure_mode: Optional[str] = None,
        windows_pe: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphdevicehealthattestationstate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.attestation_identity_key = attestation_identity_key
        self.bit_locker_status = bit_locker_status
        self.boot_app_security_version = boot_app_security_version
        self.boot_debugging = boot_debugging
        self.boot_manager_security_version = boot_manager_security_version
        self.boot_manager_version = boot_manager_version
        self.boot_revision_list_info = boot_revision_list_info
        self.code_integrity = code_integrity
        self.code_integrity_check_version = code_integrity_check_version
        self.code_integrity_policy = code_integrity_policy
        self.content_namespace_url = content_namespace_url
        self.content_version = content_version
        self.data_excution_policy = data_excution_policy
        self.device_health_attestation_status = device_health_attestation_status
        self.early_launch_anti_malware_driver_protection = early_launch_anti_malware_driver_protection
        self.health_attestation_supported_status = health_attestation_supported_status
        self.health_status_mismatch_info = health_status_mismatch_info
        self.issued_date_time = issued_date_time
        self.last_update_date_time = last_update_date_time
        self.operating_system_kernel_debugging = operating_system_kernel_debugging
        self.operating_system_rev_list_info = operating_system_rev_list_info
        self.pcr0 = pcr0
        self.pcr_hash_algorithm = pcr_hash_algorithm
        self.reset_count = reset_count
        self.restart_count = restart_count
        self.safe_mode = safe_mode
        self.secure_boot = secure_boot
        self.secure_boot_configuration_policy_finger_print = secure_boot_configuration_policy_finger_print
        self.test_signing = test_signing
        self.tpm_version = tpm_version
        self.virtual_secure_mode = virtual_secure_mode
        self.windows_pe = windows_pe


class microsoftgraphdevicemanagementtroubleshootingevent(microsoftgraphentity):
    """Event representing an general failure.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param correlation_id: Id used for tracing the failure in the service.
    :type correlation_id: str
    :param event_date_time: Time when the event occurred .
    :type event_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'correlation_id': {'key': 'correlationId', 'type': 'str'},
        'event_date_time': {'key': 'eventDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        correlation_id: Optional[str] = None,
        event_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphdevicemanagementtroubleshootingevent, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.correlation_id = correlation_id
        self.event_date_time = event_date_time


class microsoftgraphdrive(microsoftgraphbaseitem):
    """drive.

    :param id: Read-only.
    :type id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param drive_type: Describes the type of drive represented by this resource. OneDrive personal
     drives will return personal. OneDrive for Business will return business. SharePoint document
     libraries will return documentLibrary. Read-only.
    :type drive_type: str
    :param owner: identitySet.
    :type owner: ~identity_sign_ins.models.microsoftgraphidentityset
    :param quota: quota.
    :type quota: ~identity_sign_ins.models.microsoftgraphquota
    :param share_point_ids: sharepointIds.
    :type share_point_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param system: systemFacet.
    :type system: dict[str, object]
    :param following: The list of items the user is following. Only in OneDrive for Business.
    :type following: list[~identity_sign_ins.models.microsoftgraphdriveitem]
    :param items: All items contained in the drive. Read-only. Nullable.
    :type items: list[~identity_sign_ins.models.microsoftgraphdriveitem]
    :param list: list.
    :type list: ~identity_sign_ins.models.microsoftgraphlist
    :param root: driveItem.
    :type root: ~identity_sign_ins.models.microsoftgraphdriveitem
    :param special: Collection of common folders available in OneDrive. Read-only. Nullable.
    :type special: list[~identity_sign_ins.models.microsoftgraphdriveitem]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'drive_type': {'key': 'driveType', 'type': 'str'},
        'owner': {'key': 'owner', 'type': 'microsoftgraphidentityset'},
        'quota': {'key': 'quota', 'type': 'microsoftgraphquota'},
        'share_point_ids': {'key': 'sharePointIds', 'type': 'microsoftgraphsharepointids'},
        'system': {'key': 'system', 'type': '{object}'},
        'following': {'key': 'following', 'type': '[microsoftgraphdriveitem]'},
        'items': {'key': 'items', 'type': '[microsoftgraphdriveitem]'},
        'list': {'key': 'list', 'type': 'microsoftgraphlist'},
        'root': {'key': 'root', 'type': 'microsoftgraphdriveitem'},
        'special': {'key': 'special', 'type': '[microsoftgraphdriveitem]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        drive_type: Optional[str] = None,
        owner: Optional["microsoftgraphidentityset"] = None,
        quota: Optional["microsoftgraphquota"] = None,
        share_point_ids: Optional["microsoftgraphsharepointids"] = None,
        system: Optional[Dict[str, object]] = None,
        following: Optional[List["microsoftgraphdriveitem"]] = None,
        items: Optional[List["microsoftgraphdriveitem"]] = None,
        list: Optional["microsoftgraphlist"] = None,
        root: Optional["microsoftgraphdriveitem"] = None,
        special: Optional[List["microsoftgraphdriveitem"]] = None,
        **kwargs
    ):
        super(microsoftgraphdrive, self).__init__(id=id, created_by=created_by, created_date_time=created_date_time, description=description, e_tag=e_tag, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, name=name, parent_reference=parent_reference, web_url=web_url, created_by_user=created_by_user, last_modified_by_user=last_modified_by_user, **kwargs)
        self.additional_properties = additional_properties
        self.drive_type = drive_type
        self.owner = owner
        self.quota = quota
        self.share_point_ids = share_point_ids
        self.system = system
        self.following = following
        self.items = items
        self.list = list
        self.root = root
        self.special = special


class microsoftgraphdriveitem(microsoftgraphbaseitem):
    """driveItem.

    :param id: Read-only.
    :type id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param audio: audio.
    :type audio: ~identity_sign_ins.models.microsoftgraphaudio
    :param content: The content stream, if the item represents a file.
    :type content: bytes
    :param c_tag: An eTag for the content of the item. This eTag is not changed if only the
     metadata is changed. Note This property is not returned if the item is a folder. Read-only.
    :type c_tag: str
    :param deleted: deleted.
    :type deleted: ~identity_sign_ins.models.microsoftgraphdeleted
    :param file: file.
    :type file: ~identity_sign_ins.models.microsoftgraphfile
    :param file_system_info: fileSystemInfo.
    :type file_system_info: ~identity_sign_ins.models.microsoftgraphfilesysteminfo
    :param folder: folder.
    :type folder: ~identity_sign_ins.models.microsoftgraphfolder
    :param image: image.
    :type image: ~identity_sign_ins.models.microsoftgraphimage
    :param location: geoCoordinates.
    :type location: ~identity_sign_ins.models.microsoftgraphgeocoordinates
    :param package: package.
    :type package: ~identity_sign_ins.models.microsoftgraphpackage
    :param pending_operations: pendingOperations.
    :type pending_operations: ~identity_sign_ins.models.microsoftgraphpendingoperations
    :param photo: photo.
    :type photo: ~identity_sign_ins.models.microsoftgraphphoto
    :param publication: publicationFacet.
    :type publication: ~identity_sign_ins.models.microsoftgraphpublicationfacet
    :param remote_item: remoteItem.
    :type remote_item: ~identity_sign_ins.models.microsoftgraphremoteitem
    :param root: root.
    :type root: dict[str, object]
    :param search_result: searchResult.
    :type search_result: ~identity_sign_ins.models.microsoftgraphsearchresult
    :param shared: shared.
    :type shared: ~identity_sign_ins.models.microsoftgraphshared
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param size: Size of the item in bytes. Read-only.
    :type size: long
    :param special_folder: specialFolder.
    :type special_folder: ~identity_sign_ins.models.microsoftgraphspecialfolder
    :param video: video.
    :type video: ~identity_sign_ins.models.microsoftgraphvideo
    :param web_dav_url: WebDAV compatible URL for the item.
    :type web_dav_url: str
    :param workbook: workbook.
    :type workbook: ~identity_sign_ins.models.microsoftgraphworkbook
    :param analytics: itemAnalytics.
    :type analytics: ~identity_sign_ins.models.microsoftgraphitemanalytics
    :param children: Collection containing Item objects for the immediate children of Item. Only
     items representing folders have children. Read-only. Nullable.
    :type children: list[~identity_sign_ins.models.microsoftgraphdriveitem]
    :param list_item: listItem.
    :type list_item: ~identity_sign_ins.models.microsoftgraphlistitem
    :param permissions: The set of permissions for the item. Read-only. Nullable.
    :type permissions: list[~identity_sign_ins.models.microsoftgraphpermission]
    :param subscriptions: The set of subscriptions on the item. Only supported on the root of a
     drive.
    :type subscriptions: list[~identity_sign_ins.models.microsoftgraphsubscription]
    :param thumbnails: Collection containing [ThumbnailSet][] objects associated with the item. For
     more info, see [getting thumbnails][]. Read-only. Nullable.
    :type thumbnails: list[~identity_sign_ins.models.microsoftgraphthumbnailset]
    :param versions: The list of previous versions of the item. For more info, see [getting
     previous versions][]. Read-only. Nullable.
    :type versions: list[~identity_sign_ins.models.microsoftgraphdriveitemversion]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'audio': {'key': 'audio', 'type': 'microsoftgraphaudio'},
        'content': {'key': 'content', 'type': 'base64'},
        'c_tag': {'key': 'cTag', 'type': 'str'},
        'deleted': {'key': 'deleted', 'type': 'microsoftgraphdeleted'},
        'file': {'key': 'file', 'type': 'microsoftgraphfile'},
        'file_system_info': {'key': 'fileSystemInfo', 'type': 'microsoftgraphfilesysteminfo'},
        'folder': {'key': 'folder', 'type': 'microsoftgraphfolder'},
        'image': {'key': 'image', 'type': 'microsoftgraphimage'},
        'location': {'key': 'location', 'type': 'microsoftgraphgeocoordinates'},
        'package': {'key': 'package', 'type': 'microsoftgraphpackage'},
        'pending_operations': {'key': 'pendingOperations', 'type': 'microsoftgraphpendingoperations'},
        'photo': {'key': 'photo', 'type': 'microsoftgraphphoto'},
        'publication': {'key': 'publication', 'type': 'microsoftgraphpublicationfacet'},
        'remote_item': {'key': 'remoteItem', 'type': 'microsoftgraphremoteitem'},
        'root': {'key': 'root', 'type': '{object}'},
        'search_result': {'key': 'searchResult', 'type': 'microsoftgraphsearchresult'},
        'shared': {'key': 'shared', 'type': 'microsoftgraphshared'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'size': {'key': 'size', 'type': 'long'},
        'special_folder': {'key': 'specialFolder', 'type': 'microsoftgraphspecialfolder'},
        'video': {'key': 'video', 'type': 'microsoftgraphvideo'},
        'web_dav_url': {'key': 'webDavUrl', 'type': 'str'},
        'workbook': {'key': 'workbook', 'type': 'microsoftgraphworkbook'},
        'analytics': {'key': 'analytics', 'type': 'microsoftgraphitemanalytics'},
        'children': {'key': 'children', 'type': '[microsoftgraphdriveitem]'},
        'list_item': {'key': 'listItem', 'type': 'microsoftgraphlistitem'},
        'permissions': {'key': 'permissions', 'type': '[microsoftgraphpermission]'},
        'subscriptions': {'key': 'subscriptions', 'type': '[microsoftgraphsubscription]'},
        'thumbnails': {'key': 'thumbnails', 'type': '[microsoftgraphthumbnailset]'},
        'versions': {'key': 'versions', 'type': '[microsoftgraphdriveitemversion]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        audio: Optional["microsoftgraphaudio"] = None,
        content: Optional[bytes] = None,
        c_tag: Optional[str] = None,
        deleted: Optional["microsoftgraphdeleted"] = None,
        file: Optional["microsoftgraphfile"] = None,
        file_system_info: Optional["microsoftgraphfilesysteminfo"] = None,
        folder: Optional["microsoftgraphfolder"] = None,
        image: Optional["microsoftgraphimage"] = None,
        location: Optional["microsoftgraphgeocoordinates"] = None,
        package: Optional["microsoftgraphpackage"] = None,
        pending_operations: Optional["microsoftgraphpendingoperations"] = None,
        photo: Optional["microsoftgraphphoto"] = None,
        publication: Optional["microsoftgraphpublicationfacet"] = None,
        remote_item: Optional["microsoftgraphremoteitem"] = None,
        root: Optional[Dict[str, object]] = None,
        search_result: Optional["microsoftgraphsearchresult"] = None,
        shared: Optional["microsoftgraphshared"] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        size: Optional[int] = None,
        special_folder: Optional["microsoftgraphspecialfolder"] = None,
        video: Optional["microsoftgraphvideo"] = None,
        web_dav_url: Optional[str] = None,
        workbook: Optional["microsoftgraphworkbook"] = None,
        analytics: Optional["microsoftgraphitemanalytics"] = None,
        children: Optional[List["microsoftgraphdriveitem"]] = None,
        list_item: Optional["microsoftgraphlistitem"] = None,
        permissions: Optional[List["microsoftgraphpermission"]] = None,
        subscriptions: Optional[List["microsoftgraphsubscription"]] = None,
        thumbnails: Optional[List["microsoftgraphthumbnailset"]] = None,
        versions: Optional[List["microsoftgraphdriveitemversion"]] = None,
        **kwargs
    ):
        super(microsoftgraphdriveitem, self).__init__(id=id, created_by=created_by, created_date_time=created_date_time, description=description, e_tag=e_tag, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, name=name, parent_reference=parent_reference, web_url=web_url, created_by_user=created_by_user, last_modified_by_user=last_modified_by_user, **kwargs)
        self.additional_properties = additional_properties
        self.audio = audio
        self.content = content
        self.c_tag = c_tag
        self.deleted = deleted
        self.file = file
        self.file_system_info = file_system_info
        self.folder = folder
        self.image = image
        self.location = location
        self.package = package
        self.pending_operations = pending_operations
        self.photo = photo
        self.publication = publication
        self.remote_item = remote_item
        self.root = root
        self.search_result = search_result
        self.shared = shared
        self.sharepoint_ids = sharepoint_ids
        self.size = size
        self.special_folder = special_folder
        self.video = video
        self.web_dav_url = web_dav_url
        self.workbook = workbook
        self.analytics = analytics
        self.children = children
        self.list_item = list_item
        self.permissions = permissions
        self.subscriptions = subscriptions
        self.thumbnails = thumbnails
        self.versions = versions


class microsoftgraphdriveitemversion(microsoftgraphbaseitemversion):
    """driveItemVersion.

    :param id: Read-only.
    :type id: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the version was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param publication: publicationFacet.
    :type publication: ~identity_sign_ins.models.microsoftgraphpublicationfacet
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content stream for this version of the item.
    :type content: bytes
    :param size: Indicates the size of the content stream for this version of the item.
    :type size: long
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'publication': {'key': 'publication', 'type': 'microsoftgraphpublicationfacet'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'base64'},
        'size': {'key': 'size', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        publication: Optional["microsoftgraphpublicationfacet"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[bytes] = None,
        size: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphdriveitemversion, self).__init__(id=id, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, publication=publication, **kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.size = size


class microsoftgraphemailaddress(msrest.serialization.Model):
    """emailAddress.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param address: The email address of the person or entity.
    :type address: str
    :param name: The display name of the person or entity.
    :type name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'address': {'key': 'address', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        address: Optional[str] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphemailaddress, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.address = address
        self.name = name


class microsoftgraphevent(microsoftgraphoutlookitem):
    """event.

    :param id: Read-only.
    :type id: str
    :param categories: The categories associated with the item.
    :type categories: list[str]
    :param change_key: Identifies the version of the item. Every time the item is changed,
     changeKey changes as well. This allows Exchange to apply changes to the correct version of the
     object. Read-only.
    :type change_key: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_new_time_proposals: True if the meeting organizer allows invitees to propose a new
     time when responding, false otherwise. Optional. Default is true.
    :type allow_new_time_proposals: bool
    :param attendees: The collection of attendees for the event.
    :type attendees: list[~identity_sign_ins.models.microsoftgraphattendee]
    :param body: itemBody.
    :type body: ~identity_sign_ins.models.microsoftgraphitembody
    :param body_preview: The preview of the message associated with the event. It is in text
     format.
    :type body_preview: str
    :param end: dateTimeTimeZone.
    :type end: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param has_attachments: Set to true if the event has attachments.
    :type has_attachments: bool
    :param i_cal_u_id: A unique identifier that is shared by all instances of an event across
     different calendars. Read-only.
    :type i_cal_u_id: str
    :param importance:  Possible values include: "low", "normal", "high".
    :type importance: str or ~identity_sign_ins.models.Microsoftgraphimportance
    :param is_all_day: Set to true if the event lasts all day.
    :type is_all_day: bool
    :param is_cancelled: Set to true if the event has been canceled.
    :type is_cancelled: bool
    :param is_online_meeting: True if this event has online meeting information, false otherwise.
     Default is false. Optional.
    :type is_online_meeting: bool
    :param is_organizer: Set to true if the calendar owner (specified by the owner property of the
     calendar) is the organizer of the event (specified by the organizer property of the event).
     This also applies if a delegate organized the event on behalf of the owner.
    :type is_organizer: bool
    :param is_reminder_on: Set to true if an alert is set to remind the user of the event.
    :type is_reminder_on: bool
    :param location: location.
    :type location: ~identity_sign_ins.models.microsoftgraphlocation
    :param locations: The locations where the event is held or attended from. The location and
     locations properties always correspond with each other. If you update the location property,
     any prior locations in the locations collection would be removed and replaced by the new
     location value.
    :type locations: list[~identity_sign_ins.models.microsoftgraphlocation]
    :param online_meeting: onlineMeetingInfo.
    :type online_meeting: ~identity_sign_ins.models.microsoftgraphonlinemeetinginfo
    :param online_meeting_provider:  Possible values include: "unknown", "skypeForBusiness",
     "skypeForConsumer", "teamsForBusiness".
    :type online_meeting_provider: str or
     ~identity_sign_ins.models.Microsoftgraphonlinemeetingprovidertype
    :param online_meeting_url: A URL for an online meeting. The property is set only when an
     organizer specifies an event as an online meeting such as a Skype meeting. Read-only.
    :type online_meeting_url: str
    :param organizer: recipient.
    :type organizer: ~identity_sign_ins.models.microsoftgraphrecipient
    :param original_end_time_zone: The end time zone that was set when the event was created. A
     value of tzone://Microsoft/Custom indicates that a legacy custom time zone was set in desktop
     Outlook.
    :type original_end_time_zone: str
    :param original_start: The Timestamp type represents date and time information using ISO 8601
     format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type original_start: ~datetime.datetime
    :param original_start_time_zone: The start time zone that was set when the event was created. A
     value of tzone://Microsoft/Custom indicates that a legacy custom time zone was set in desktop
     Outlook.
    :type original_start_time_zone: str
    :param recurrence: patternedRecurrence.
    :type recurrence: ~identity_sign_ins.models.microsoftgraphpatternedrecurrence
    :param reminder_minutes_before_start: The number of minutes before the event start time that
     the reminder alert occurs.
    :type reminder_minutes_before_start: int
    :param response_requested: Default is true, which represents the organizer would like an
     invitee to send a response to the event.
    :type response_requested: bool
    :param response_status: responseStatus.
    :type response_status: ~identity_sign_ins.models.microsoftgraphresponsestatus
    :param sensitivity:  Possible values include: "normal", "personal", "private", "confidential".
    :type sensitivity: str or ~identity_sign_ins.models.Microsoftgraphsensitivity
    :param series_master_id: The ID for the recurring series master item, if this event is part of
     a recurring series.
    :type series_master_id: str
    :param show_as:  Possible values include: "free", "tentative", "unknown", "busy", "oof",
     "workingElsewhere".
    :type show_as: str or ~identity_sign_ins.models.Microsoftgraphfreebusystatus
    :param start: dateTimeTimeZone.
    :type start: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param subject: The text of the event's subject line.
    :type subject: str
    :param transaction_id: A custom identifier specified by a client app for the server to avoid
     redundant POST operations in case of client retries to create the same event. This is useful
     when low network connectivity causes the client to time out before receiving a response from
     the server for the client's prior create-event request. After you set transactionId when
     creating an event, you cannot change transactionId in a subsequent update. This property is
     only returned in a response payload if an app has set it. Optional.
    :type transaction_id: str
    :param type:  Possible values include: "singleInstance", "occurrence", "exception",
     "seriesMaster".
    :type type: str or ~identity_sign_ins.models.Microsoftgrapheventtype
    :param web_link: The URL to open the event in Outlook on the web.Outlook on the web opens the
     event in the browser if you are signed in to your mailbox. Otherwise, Outlook on the web
     prompts you to sign in.This URL can be accessed from within an iFrame.
    :type web_link: str
    :param attachments: The collection of fileAttachment and itemAttachment attachments for the
     event. Navigation property. Read-only. Nullable.
    :type attachments: list[~identity_sign_ins.models.microsoftgraphattachment]
    :param calendar: calendar.
    :type calendar: ~identity_sign_ins.models.microsoftgraphcalendar
    :param extensions: The collection of open extensions defined for the event. Read-only.
     Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param instances: The instances of the event. Navigation property. Read-only. Nullable.
    :type instances: list[~identity_sign_ins.models.microsoftgraphevent]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the event. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the event. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _validation = {
        'reminder_minutes_before_start': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_new_time_proposals': {'key': 'allowNewTimeProposals', 'type': 'bool'},
        'attendees': {'key': 'attendees', 'type': '[microsoftgraphattendee]'},
        'body': {'key': 'body', 'type': 'microsoftgraphitembody'},
        'body_preview': {'key': 'bodyPreview', 'type': 'str'},
        'end': {'key': 'end', 'type': 'microsoftgraphdatetimezone'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'i_cal_u_id': {'key': 'iCalUId', 'type': 'str'},
        'importance': {'key': 'importance', 'type': 'str'},
        'is_all_day': {'key': 'isAllDay', 'type': 'bool'},
        'is_cancelled': {'key': 'isCancelled', 'type': 'bool'},
        'is_online_meeting': {'key': 'isOnlineMeeting', 'type': 'bool'},
        'is_organizer': {'key': 'isOrganizer', 'type': 'bool'},
        'is_reminder_on': {'key': 'isReminderOn', 'type': 'bool'},
        'location': {'key': 'location', 'type': 'microsoftgraphlocation'},
        'locations': {'key': 'locations', 'type': '[microsoftgraphlocation]'},
        'online_meeting': {'key': 'onlineMeeting', 'type': 'microsoftgraphonlinemeetinginfo'},
        'online_meeting_provider': {'key': 'onlineMeetingProvider', 'type': 'str'},
        'online_meeting_url': {'key': 'onlineMeetingUrl', 'type': 'str'},
        'organizer': {'key': 'organizer', 'type': 'microsoftgraphrecipient'},
        'original_end_time_zone': {'key': 'originalEndTimeZone', 'type': 'str'},
        'original_start': {'key': 'originalStart', 'type': 'iso-8601'},
        'original_start_time_zone': {'key': 'originalStartTimeZone', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'microsoftgraphpatternedrecurrence'},
        'reminder_minutes_before_start': {'key': 'reminderMinutesBeforeStart', 'type': 'int'},
        'response_requested': {'key': 'responseRequested', 'type': 'bool'},
        'response_status': {'key': 'responseStatus', 'type': 'microsoftgraphresponsestatus'},
        'sensitivity': {'key': 'sensitivity', 'type': 'str'},
        'series_master_id': {'key': 'seriesMasterId', 'type': 'str'},
        'show_as': {'key': 'showAs', 'type': 'str'},
        'start': {'key': 'start', 'type': 'microsoftgraphdatetimezone'},
        'subject': {'key': 'subject', 'type': 'str'},
        'transaction_id': {'key': 'transactionId', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'web_link': {'key': 'webLink', 'type': 'str'},
        'attachments': {'key': 'attachments', 'type': '[microsoftgraphattachment]'},
        'calendar': {'key': 'calendar', 'type': 'microsoftgraphcalendar'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'instances': {'key': 'instances', 'type': '[microsoftgraphevent]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        categories: Optional[List[str]] = None,
        change_key: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_new_time_proposals: Optional[bool] = None,
        attendees: Optional[List["microsoftgraphattendee"]] = None,
        body: Optional["microsoftgraphitembody"] = None,
        body_preview: Optional[str] = None,
        end: Optional["microsoftgraphdatetimezone"] = None,
        has_attachments: Optional[bool] = None,
        i_cal_u_id: Optional[str] = None,
        importance: Optional[Union[str, "Microsoftgraphimportance"]] = None,
        is_all_day: Optional[bool] = None,
        is_cancelled: Optional[bool] = None,
        is_online_meeting: Optional[bool] = None,
        is_organizer: Optional[bool] = None,
        is_reminder_on: Optional[bool] = None,
        location: Optional["microsoftgraphlocation"] = None,
        locations: Optional[List["microsoftgraphlocation"]] = None,
        online_meeting: Optional["microsoftgraphonlinemeetinginfo"] = None,
        online_meeting_provider: Optional[Union[str, "Microsoftgraphonlinemeetingprovidertype"]] = None,
        online_meeting_url: Optional[str] = None,
        organizer: Optional["microsoftgraphrecipient"] = None,
        original_end_time_zone: Optional[str] = None,
        original_start: Optional[datetime.datetime] = None,
        original_start_time_zone: Optional[str] = None,
        recurrence: Optional["microsoftgraphpatternedrecurrence"] = None,
        reminder_minutes_before_start: Optional[int] = None,
        response_requested: Optional[bool] = None,
        response_status: Optional["microsoftgraphresponsestatus"] = None,
        sensitivity: Optional[Union[str, "Microsoftgraphsensitivity"]] = None,
        series_master_id: Optional[str] = None,
        show_as: Optional[Union[str, "Microsoftgraphfreebusystatus"]] = None,
        start: Optional["microsoftgraphdatetimezone"] = None,
        subject: Optional[str] = None,
        transaction_id: Optional[str] = None,
        type: Optional[Union[str, "Microsoftgrapheventtype"]] = None,
        web_link: Optional[str] = None,
        attachments: Optional[List["microsoftgraphattachment"]] = None,
        calendar: Optional["microsoftgraphcalendar"] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        instances: Optional[List["microsoftgraphevent"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphevent, self).__init__(id=id, categories=categories, change_key=change_key, created_date_time=created_date_time, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.allow_new_time_proposals = allow_new_time_proposals
        self.attendees = attendees
        self.body = body
        self.body_preview = body_preview
        self.end = end
        self.has_attachments = has_attachments
        self.i_cal_u_id = i_cal_u_id
        self.importance = importance
        self.is_all_day = is_all_day
        self.is_cancelled = is_cancelled
        self.is_online_meeting = is_online_meeting
        self.is_organizer = is_organizer
        self.is_reminder_on = is_reminder_on
        self.location = location
        self.locations = locations
        self.online_meeting = online_meeting
        self.online_meeting_provider = online_meeting_provider
        self.online_meeting_url = online_meeting_url
        self.organizer = organizer
        self.original_end_time_zone = original_end_time_zone
        self.original_start = original_start
        self.original_start_time_zone = original_start_time_zone
        self.recurrence = recurrence
        self.reminder_minutes_before_start = reminder_minutes_before_start
        self.response_requested = response_requested
        self.response_status = response_status
        self.sensitivity = sensitivity
        self.series_master_id = series_master_id
        self.show_as = show_as
        self.start = start
        self.subject = subject
        self.transaction_id = transaction_id
        self.type = type
        self.web_link = web_link
        self.attachments = attachments
        self.calendar = calendar
        self.extensions = extensions
        self.instances = instances
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphextension(microsoftgraphentity):
    """extension.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphextension, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphexternallink(msrest.serialization.Model):
    """externalLink.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param href: The url of the link.
    :type href: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'href': {'key': 'href', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        href: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphexternallink, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.href = href


class microsoftgraphfieldvalueset(microsoftgraphentity):
    """fieldValueSet.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphfieldvalueset, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphfile(msrest.serialization.Model):
    """file.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param hashes: hashes.
    :type hashes: ~identity_sign_ins.models.microsoftgraphhashes
    :param mime_type: The MIME type for the file. This is determined by logic on the server and
     might not be the value provided when the file was uploaded. Read-only.
    :type mime_type: str
    :param processing_metadata:
    :type processing_metadata: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'hashes': {'key': 'hashes', 'type': 'microsoftgraphhashes'},
        'mime_type': {'key': 'mimeType', 'type': 'str'},
        'processing_metadata': {'key': 'processingMetadata', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        hashes: Optional["microsoftgraphhashes"] = None,
        mime_type: Optional[str] = None,
        processing_metadata: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphfile, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.hashes = hashes
        self.mime_type = mime_type
        self.processing_metadata = processing_metadata


class microsoftgraphfilesysteminfo(msrest.serialization.Model):
    """fileSystemInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The UTC date and time the file was created on a client.
    :type created_date_time: ~datetime.datetime
    :param last_accessed_date_time: The UTC date and time the file was last accessed. Available for
     the recent file list only.
    :type last_accessed_date_time: ~datetime.datetime
    :param last_modified_date_time: The UTC date and time the file was last modified on a client.
    :type last_modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_accessed_date_time': {'key': 'lastAccessedDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_accessed_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphfilesysteminfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.last_accessed_date_time = last_accessed_date_time
        self.last_modified_date_time = last_modified_date_time


class microsoftgraphfolder(msrest.serialization.Model):
    """folder.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param child_count: Number of children contained immediately within this container.
    :type child_count: int
    :param view: folderView.
    :type view: ~identity_sign_ins.models.microsoftgraphfolderview
    """

    _validation = {
        'child_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'child_count': {'key': 'childCount', 'type': 'int'},
        'view': {'key': 'view', 'type': 'microsoftgraphfolderview'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        child_count: Optional[int] = None,
        view: Optional["microsoftgraphfolderview"] = None,
        **kwargs
    ):
        super(microsoftgraphfolder, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.child_count = child_count
        self.view = view


class microsoftgraphfolderview(msrest.serialization.Model):
    """folderView.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param sort_by: The method by which the folder should be sorted.
    :type sort_by: str
    :param sort_order: If true, indicates that items should be sorted in descending order.
     Otherwise, items should be sorted ascending.
    :type sort_order: str
    :param view_type: The type of view that should be used to represent the folder.
    :type view_type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'sort_by': {'key': 'sortBy', 'type': 'str'},
        'sort_order': {'key': 'sortOrder', 'type': 'str'},
        'view_type': {'key': 'viewType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        sort_by: Optional[str] = None,
        sort_order: Optional[str] = None,
        view_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphfolderview, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.sort_by = sort_by
        self.sort_order = sort_order
        self.view_type = view_type


class microsoftgraphfollowupflag(msrest.serialization.Model):
    """followupFlag.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param completed_date_time: dateTimeTimeZone.
    :type completed_date_time: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param due_date_time: dateTimeTimeZone.
    :type due_date_time: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param flag_status:  Possible values include: "notFlagged", "complete", "flagged".
    :type flag_status: str or ~identity_sign_ins.models.Microsoftgraphfollowupflagstatus
    :param start_date_time: dateTimeTimeZone.
    :type start_date_time: ~identity_sign_ins.models.microsoftgraphdatetimezone
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'completed_date_time': {'key': 'completedDateTime', 'type': 'microsoftgraphdatetimezone'},
        'due_date_time': {'key': 'dueDateTime', 'type': 'microsoftgraphdatetimezone'},
        'flag_status': {'key': 'flagStatus', 'type': 'str'},
        'start_date_time': {'key': 'startDateTime', 'type': 'microsoftgraphdatetimezone'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        completed_date_time: Optional["microsoftgraphdatetimezone"] = None,
        due_date_time: Optional["microsoftgraphdatetimezone"] = None,
        flag_status: Optional[Union[str, "Microsoftgraphfollowupflagstatus"]] = None,
        start_date_time: Optional["microsoftgraphdatetimezone"] = None,
        **kwargs
    ):
        super(microsoftgraphfollowupflag, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.completed_date_time = completed_date_time
        self.due_date_time = due_date_time
        self.flag_status = flag_status
        self.start_date_time = start_date_time


class microsoftgraphgeocoordinates(msrest.serialization.Model):
    """geoCoordinates.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param altitude: Optional. The altitude (height), in feet,  above sea level for the item. Read-
     only.
    :type altitude: float
    :param latitude: Optional. The latitude, in decimal, for the item. Read-only.
    :type latitude: float
    :param longitude: Optional. The longitude, in decimal, for the item. Read-only.
    :type longitude: float
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'altitude': {'key': 'altitude', 'type': 'float'},
        'latitude': {'key': 'latitude', 'type': 'float'},
        'longitude': {'key': 'longitude', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        altitude: Optional[float] = None,
        latitude: Optional[float] = None,
        longitude: Optional[float] = None,
        **kwargs
    ):
        super(microsoftgraphgeocoordinates, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.altitude = altitude
        self.latitude = latitude
        self.longitude = longitude


class microsoftgraphgroup(microsoftgraphdirectoryobject):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assigned_labels: The list of sensitivity label pairs (label ID, label name) associated
     with an Microsoft 365 group. Returned only on $select. Read-only.
    :type assigned_labels: list[~identity_sign_ins.models.microsoftgraphassignedlabel]
    :param assigned_licenses: The licenses that are assigned to the group. Returned only on
     $select. Read-only.
    :type assigned_licenses: list[~identity_sign_ins.models.microsoftgraphassignedlicense]
    :param classification: Describes a classification for the group (such as low, medium or high
     business impact). Valid values for this property are defined by creating a ClassificationList
     setting value, based on the template definition.Returned by default.
    :type classification: str
    :param created_date_time: Timestamp of when the group was created. The value cannot be modified
     and is automatically populated when the group is created. The Timestamp type represents date
     and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC
     on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Returned by default. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: An optional description for the group. Returned by default.
    :type description: str
    :param display_name: The display name for the group. This property is required when a group is
     created and cannot be cleared during updates. Returned by default. Supports $filter and
     $orderby.
    :type display_name: str
    :param expiration_date_time: Timestamp of when the group is set to expire. The value cannot be
     modified and is automatically populated when the group is created. The Timestamp type
     represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Returned by
     default. Read-only.
    :type expiration_date_time: ~datetime.datetime
    :param group_types: Specifies the group type and its membership.  If the collection contains
     Unified, the group is a Microsoft 365 group; otherwise, it's either a security group or
     distribution group. For details, see groups overview.If the collection includes
     DynamicMembership, the group has dynamic membership; otherwise, membership is static.  Returned
     by default. Supports $filter.
    :type group_types: list[str]
    :param has_members_with_license_errors: Indicates whether there are members in this group that
     have license errors from its group-based license assignment. This property is never returned on
     a GET operation. You can use it as a $filter argument to get groups that have members with
     license errors (that is, filter for this property being true). See an example.
    :type has_members_with_license_errors: bool
    :param license_processing_state: licenseProcessingState.
    :type license_processing_state: ~identity_sign_ins.models.microsoftgraphlicenseprocessingstate
    :param mail: The SMTP address for the group, for example,
     'serviceadmins@contoso.onmicrosoft.com'. Returned by default. Read-only. Supports $filter.
    :type mail: str
    :param mail_enabled: Specifies whether the group is mail-enabled. Returned by default.
    :type mail_enabled: bool
    :param mail_nickname: The mail alias for the group, unique in the organization. This property
     must be specified when a group is created. Returned by default. Supports $filter.
    :type mail_nickname: str
    :param membership_rule: The rule that determines members for this group if the group is a
     dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of
     the membership rule, see Membership Rules syntax. Returned by default.
    :type membership_rule: str
    :param membership_rule_processing_state: Indicates whether the dynamic membership processing is
     on or paused. Possible values are 'On' or 'Paused'. Returned by default.
    :type membership_rule_processing_state: str
    :param on_premises_domain_name: Contains the on-premises domain FQDN, also called dnsDomainName
     synchronized from the on-premises directory. The property is only populated for customers who
     are synchronizing their on-premises directory to Azure Active Directory via Azure AD
     Connect.Returned by default. Read-only.
    :type on_premises_domain_name: str
    :param on_premises_last_sync_date_time: Indicates the last time at which the group was synced
     with the on-premises directory.The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'. Returned by default. Read-only. Supports $filter.
    :type on_premises_last_sync_date_time: ~datetime.datetime
    :param on_premises_net_bios_name: Contains the on-premises netBios name synchronized from the
     on-premises directory. The property is only populated for customers who are synchronizing their
     on-premises directory to Azure Active Directory via Azure AD Connect.Returned by default. Read-
     only.
    :type on_premises_net_bios_name: str
    :param on_premises_provisioning_errors: Errors when using Microsoft synchronization product
     during provisioning. Returned by default.
    :type on_premises_provisioning_errors:
     list[~identity_sign_ins.models.microsoftgraphonpremisesprovisioningerror]
    :param on_premises_sam_account_name: Contains the on-premises SAM account name synchronized
     from the on-premises directory. The property is only populated for customers who are
     synchronizing their on-premises directory to Azure Active Directory via Azure AD
     Connect.Returned by default. Read-only.
    :type on_premises_sam_account_name: str
    :param on_premises_security_identifier: Contains the on-premises security identifier (SID) for
     the group that was synchronized from on-premises to the cloud. Returned by default. Read-only.
    :type on_premises_security_identifier: str
    :param on_premises_sync_enabled: true if this group is synced from an on-premises directory;
     false if this group was originally synced from an on-premises directory but is no longer
     synced; null if this object has never been synced from an on-premises directory (default).
     Returned by default. Read-only. Supports $filter.
    :type on_premises_sync_enabled: bool
    :param preferred_data_location: The preferred data location for the group. For more
     information, see  OneDrive Online Multi-Geo. Returned by default.
    :type preferred_data_location: str
    :param preferred_language: The preferred language for an Microsoft 365 group. Should follow ISO
     639-1 Code; for example 'en-US'. Returned by default.
    :type preferred_language: str
    :param proxy_addresses: Email addresses for the group that direct to the same group mailbox.
     For example: ['SMTP: bob@contoso.com', 'smtp: bob@sales.contoso.com']. The any operator is
     required to filter expressions on multi-valued properties. Returned by default. Read-only. Not
     nullable. Supports $filter.
    :type proxy_addresses: list[str]
    :param renewed_date_time: Timestamp of when the group was last renewed. This cannot be modified
     directly and is only updated via the renew service action. The Timestamp type represents date
     and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC
     on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Returned by default. Read-only.
    :type renewed_date_time: ~datetime.datetime
    :param security_enabled: Specifies whether the group is a security group. Returned by default.
     Supports $filter.
    :type security_enabled: bool
    :param security_identifier: Security identifier of the group, used in Windows scenarios.
     Returned by default.
    :type security_identifier: str
    :param theme: Specifies an Microsoft 365 group's color theme. Possible values are Teal, Purple,
     Green, Blue, Pink, Orange or Red. Returned by default.
    :type theme: str
    :param visibility: Specifies the visibility of a Microsoft 365 group. Possible values are:
     Private, Public, or Hiddenmembership; blank values are treated as public.  See group visibility
     options to learn more.Visibility can be set only when a group is created; it is not
     editable.Visibility is supported only for unified groups; it is not supported for security
     groups. Returned by default.
    :type visibility: str
    :param allow_external_senders: Indicates if people external to the organization can send
     messages to the group. Default value is false. Returned only on $select.
    :type allow_external_senders: bool
    :param auto_subscribe_new_members: Indicates if new members added to the group will be auto-
     subscribed to receive email notifications. You can set this property in a PATCH request for the
     group; do not set it in the initial POST request that creates the group. Default value is
     false. Returned only on $select.
    :type auto_subscribe_new_members: bool
    :param hide_from_address_lists: True if the group is not displayed in certain parts of the
     Outlook UI: the Address Book, address lists for selecting message recipients, and the Browse
     Groups dialog for searching groups; otherwise, false. Default value is false. Returned only on
     $select.
    :type hide_from_address_lists: bool
    :param hide_from_outlook_clients: True if the group is not displayed in Outlook clients, such
     as Outlook for Windows and Outlook on the web; otherwise, false. Default value is false.
     Returned only on $select.
    :type hide_from_outlook_clients: bool
    :param is_subscribed_by_mail: Indicates whether the signed-in user is subscribed to receive
     email conversations. Default value is true. Returned only on $select.
    :type is_subscribed_by_mail: bool
    :param unseen_count: Count of conversations that have received new posts since the signed-in
     user last visited the group. Returned only on $select.
    :type unseen_count: int
    :param is_archived:
    :type is_archived: bool
    :param app_role_assignments:
    :type app_role_assignments: list[~identity_sign_ins.models.microsoftgraphapproleassignment]
    :param created_on_behalf_of: Represents an Azure Active Directory object. The directoryObject
     type is the base type for many other directory entity types.
    :type created_on_behalf_of: ~identity_sign_ins.models.microsoftgraphdirectoryobject
    :param member_of: Groups that this group is a member of. HTTP Methods: GET (supported for all
     groups). Read-only. Nullable.
    :type member_of: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param members: Users and groups that are members of this group. HTTP Methods: GET (supported
     for all groups), POST (supported for Microsoft 365 groups, security groups and mail-enabled
     security groups), DELETE (supported for Microsoft 365 groups and security groups) Nullable.
    :type members: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param members_with_license_errors: A list of group members with license errors from this
     group-based license assignment. Read-only.
    :type members_with_license_errors:
     list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param owners: The owners of the group. The owners are a set of non-admin users who are allowed
     to modify this object. Limited to 100 owners. HTTP Methods: GET (supported for all groups),
     POST (supported for Microsoft 365 groups, security groups and mail-enabled security groups),
     DELETE (supported for Microsoft 365 groups and security groups). Nullable.
    :type owners: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param settings: Read-only. Nullable.
    :type settings: list[~identity_sign_ins.models.microsoftgraphgroupsetting]
    :param transitive_member_of:
    :type transitive_member_of: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param transitive_members:
    :type transitive_members: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param accepted_senders: The list of users or groups that are allowed to create post's or
     calendar events in this group. If this list is non-empty then only users or groups listed here
     are allowed to post.
    :type accepted_senders: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param calendar: calendar.
    :type calendar: ~identity_sign_ins.models.microsoftgraphcalendar
    :param calendar_view: The calendar view for the calendar. Read-only.
    :type calendar_view: list[~identity_sign_ins.models.microsoftgraphevent]
    :param conversations: The group's conversations.
    :type conversations: list[~identity_sign_ins.models.microsoftgraphconversation]
    :param events: The group's calendar events.
    :type events: list[~identity_sign_ins.models.microsoftgraphevent]
    :param photo: profilePhoto.
    :type photo: ~identity_sign_ins.models.microsoftgraphprofilephoto
    :param photos: The profile photos owned by the group. Read-only. Nullable.
    :type photos: list[~identity_sign_ins.models.microsoftgraphprofilephoto]
    :param rejected_senders: The list of users or groups that are not allowed to create posts or
     calendar events in this group. Nullable.
    :type rejected_senders: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param threads: The group's conversation threads. Nullable.
    :type threads: list[~identity_sign_ins.models.microsoftgraphconversationthread]
    :param drive: drive.
    :type drive: ~identity_sign_ins.models.microsoftgraphdrive
    :param drives: The group's drives. Read-only.
    :type drives: list[~identity_sign_ins.models.microsoftgraphdrive]
    :param sites: The list of SharePoint sites in this group. Access the default site with
     /sites/root.
    :type sites: list[~identity_sign_ins.models.microsoftgraphsite]
    :param extensions: The collection of open extensions defined for the group. Read-only.
     Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param group_lifecycle_policies: The collection of lifecycle policies for this group. Read-
     only. Nullable.
    :type group_lifecycle_policies:
     list[~identity_sign_ins.models.microsoftgraphgrouplifecyclepolicy]
    :param planner: plannerGroup.
    :type planner: ~identity_sign_ins.models.microsoftgraphplannergroup
    :param onenote: onenote.
    :type onenote: ~identity_sign_ins.models.microsoftgraphonenote
    :param team: team.
    :type team: ~identity_sign_ins.models.microsoftgraphteam
    """

    _validation = {
        'unseen_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'assigned_labels': {'key': 'assignedLabels', 'type': '[microsoftgraphassignedlabel]'},
        'assigned_licenses': {'key': 'assignedLicenses', 'type': '[microsoftgraphassignedlicense]'},
        'classification': {'key': 'classification', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'expiration_date_time': {'key': 'expirationDateTime', 'type': 'iso-8601'},
        'group_types': {'key': 'groupTypes', 'type': '[str]'},
        'has_members_with_license_errors': {'key': 'hasMembersWithLicenseErrors', 'type': 'bool'},
        'license_processing_state': {'key': 'licenseProcessingState', 'type': 'microsoftgraphlicenseprocessingstate'},
        'mail': {'key': 'mail', 'type': 'str'},
        'mail_enabled': {'key': 'mailEnabled', 'type': 'bool'},
        'mail_nickname': {'key': 'mailNickname', 'type': 'str'},
        'membership_rule': {'key': 'membershipRule', 'type': 'str'},
        'membership_rule_processing_state': {'key': 'membershipRuleProcessingState', 'type': 'str'},
        'on_premises_domain_name': {'key': 'onPremisesDomainName', 'type': 'str'},
        'on_premises_last_sync_date_time': {'key': 'onPremisesLastSyncDateTime', 'type': 'iso-8601'},
        'on_premises_net_bios_name': {'key': 'onPremisesNetBiosName', 'type': 'str'},
        'on_premises_provisioning_errors': {'key': 'onPremisesProvisioningErrors', 'type': '[microsoftgraphonpremisesprovisioningerror]'},
        'on_premises_sam_account_name': {'key': 'onPremisesSamAccountName', 'type': 'str'},
        'on_premises_security_identifier': {'key': 'onPremisesSecurityIdentifier', 'type': 'str'},
        'on_premises_sync_enabled': {'key': 'onPremisesSyncEnabled', 'type': 'bool'},
        'preferred_data_location': {'key': 'preferredDataLocation', 'type': 'str'},
        'preferred_language': {'key': 'preferredLanguage', 'type': 'str'},
        'proxy_addresses': {'key': 'proxyAddresses', 'type': '[str]'},
        'renewed_date_time': {'key': 'renewedDateTime', 'type': 'iso-8601'},
        'security_enabled': {'key': 'securityEnabled', 'type': 'bool'},
        'security_identifier': {'key': 'securityIdentifier', 'type': 'str'},
        'theme': {'key': 'theme', 'type': 'str'},
        'visibility': {'key': 'visibility', 'type': 'str'},
        'allow_external_senders': {'key': 'allowExternalSenders', 'type': 'bool'},
        'auto_subscribe_new_members': {'key': 'autoSubscribeNewMembers', 'type': 'bool'},
        'hide_from_address_lists': {'key': 'hideFromAddressLists', 'type': 'bool'},
        'hide_from_outlook_clients': {'key': 'hideFromOutlookClients', 'type': 'bool'},
        'is_subscribed_by_mail': {'key': 'isSubscribedByMail', 'type': 'bool'},
        'unseen_count': {'key': 'unseenCount', 'type': 'int'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'app_role_assignments': {'key': 'appRoleAssignments', 'type': '[microsoftgraphapproleassignment]'},
        'created_on_behalf_of': {'key': 'createdOnBehalfOf', 'type': 'microsoftgraphdirectoryobject'},
        'member_of': {'key': 'memberOf', 'type': '[microsoftgraphdirectoryobject]'},
        'members': {'key': 'members', 'type': '[microsoftgraphdirectoryobject]'},
        'members_with_license_errors': {'key': 'membersWithLicenseErrors', 'type': '[microsoftgraphdirectoryobject]'},
        'owners': {'key': 'owners', 'type': '[microsoftgraphdirectoryobject]'},
        'settings': {'key': 'settings', 'type': '[microsoftgraphgroupsetting]'},
        'transitive_member_of': {'key': 'transitiveMemberOf', 'type': '[microsoftgraphdirectoryobject]'},
        'transitive_members': {'key': 'transitiveMembers', 'type': '[microsoftgraphdirectoryobject]'},
        'accepted_senders': {'key': 'acceptedSenders', 'type': '[microsoftgraphdirectoryobject]'},
        'calendar': {'key': 'calendar', 'type': 'microsoftgraphcalendar'},
        'calendar_view': {'key': 'calendarView', 'type': '[microsoftgraphevent]'},
        'conversations': {'key': 'conversations', 'type': '[microsoftgraphconversation]'},
        'events': {'key': 'events', 'type': '[microsoftgraphevent]'},
        'photo': {'key': 'photo', 'type': 'microsoftgraphprofilephoto'},
        'photos': {'key': 'photos', 'type': '[microsoftgraphprofilephoto]'},
        'rejected_senders': {'key': 'rejectedSenders', 'type': '[microsoftgraphdirectoryobject]'},
        'threads': {'key': 'threads', 'type': '[microsoftgraphconversationthread]'},
        'drive': {'key': 'drive', 'type': 'microsoftgraphdrive'},
        'drives': {'key': 'drives', 'type': '[microsoftgraphdrive]'},
        'sites': {'key': 'sites', 'type': '[microsoftgraphsite]'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'group_lifecycle_policies': {'key': 'groupLifecyclePolicies', 'type': '[microsoftgraphgrouplifecyclepolicy]'},
        'planner': {'key': 'planner', 'type': 'microsoftgraphplannergroup'},
        'onenote': {'key': 'onenote', 'type': 'microsoftgraphonenote'},
        'team': {'key': 'team', 'type': 'microsoftgraphteam'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        assigned_labels: Optional[List["microsoftgraphassignedlabel"]] = None,
        assigned_licenses: Optional[List["microsoftgraphassignedlicense"]] = None,
        classification: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        expiration_date_time: Optional[datetime.datetime] = None,
        group_types: Optional[List[str]] = None,
        has_members_with_license_errors: Optional[bool] = None,
        license_processing_state: Optional["microsoftgraphlicenseprocessingstate"] = None,
        mail: Optional[str] = None,
        mail_enabled: Optional[bool] = None,
        mail_nickname: Optional[str] = None,
        membership_rule: Optional[str] = None,
        membership_rule_processing_state: Optional[str] = None,
        on_premises_domain_name: Optional[str] = None,
        on_premises_last_sync_date_time: Optional[datetime.datetime] = None,
        on_premises_net_bios_name: Optional[str] = None,
        on_premises_provisioning_errors: Optional[List["microsoftgraphonpremisesprovisioningerror"]] = None,
        on_premises_sam_account_name: Optional[str] = None,
        on_premises_security_identifier: Optional[str] = None,
        on_premises_sync_enabled: Optional[bool] = None,
        preferred_data_location: Optional[str] = None,
        preferred_language: Optional[str] = None,
        proxy_addresses: Optional[List[str]] = None,
        renewed_date_time: Optional[datetime.datetime] = None,
        security_enabled: Optional[bool] = None,
        security_identifier: Optional[str] = None,
        theme: Optional[str] = None,
        visibility: Optional[str] = None,
        allow_external_senders: Optional[bool] = None,
        auto_subscribe_new_members: Optional[bool] = None,
        hide_from_address_lists: Optional[bool] = None,
        hide_from_outlook_clients: Optional[bool] = None,
        is_subscribed_by_mail: Optional[bool] = None,
        unseen_count: Optional[int] = None,
        is_archived: Optional[bool] = None,
        app_role_assignments: Optional[List["microsoftgraphapproleassignment"]] = None,
        created_on_behalf_of: Optional["microsoftgraphdirectoryobject"] = None,
        member_of: Optional[List["microsoftgraphdirectoryobject"]] = None,
        members: Optional[List["microsoftgraphdirectoryobject"]] = None,
        members_with_license_errors: Optional[List["microsoftgraphdirectoryobject"]] = None,
        owners: Optional[List["microsoftgraphdirectoryobject"]] = None,
        settings: Optional[List["microsoftgraphgroupsetting"]] = None,
        transitive_member_of: Optional[List["microsoftgraphdirectoryobject"]] = None,
        transitive_members: Optional[List["microsoftgraphdirectoryobject"]] = None,
        accepted_senders: Optional[List["microsoftgraphdirectoryobject"]] = None,
        calendar: Optional["microsoftgraphcalendar"] = None,
        calendar_view: Optional[List["microsoftgraphevent"]] = None,
        conversations: Optional[List["microsoftgraphconversation"]] = None,
        events: Optional[List["microsoftgraphevent"]] = None,
        photo: Optional["microsoftgraphprofilephoto"] = None,
        photos: Optional[List["microsoftgraphprofilephoto"]] = None,
        rejected_senders: Optional[List["microsoftgraphdirectoryobject"]] = None,
        threads: Optional[List["microsoftgraphconversationthread"]] = None,
        drive: Optional["microsoftgraphdrive"] = None,
        drives: Optional[List["microsoftgraphdrive"]] = None,
        sites: Optional[List["microsoftgraphsite"]] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        group_lifecycle_policies: Optional[List["microsoftgraphgrouplifecyclepolicy"]] = None,
        planner: Optional["microsoftgraphplannergroup"] = None,
        onenote: Optional["microsoftgraphonenote"] = None,
        team: Optional["microsoftgraphteam"] = None,
        **kwargs
    ):
        super(microsoftgraphgroup, self).__init__(id=id, deleted_date_time=deleted_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.assigned_labels = assigned_labels
        self.assigned_licenses = assigned_licenses
        self.classification = classification
        self.created_date_time = created_date_time
        self.description = description
        self.display_name = display_name
        self.expiration_date_time = expiration_date_time
        self.group_types = group_types
        self.has_members_with_license_errors = has_members_with_license_errors
        self.license_processing_state = license_processing_state
        self.mail = mail
        self.mail_enabled = mail_enabled
        self.mail_nickname = mail_nickname
        self.membership_rule = membership_rule
        self.membership_rule_processing_state = membership_rule_processing_state
        self.on_premises_domain_name = on_premises_domain_name
        self.on_premises_last_sync_date_time = on_premises_last_sync_date_time
        self.on_premises_net_bios_name = on_premises_net_bios_name
        self.on_premises_provisioning_errors = on_premises_provisioning_errors
        self.on_premises_sam_account_name = on_premises_sam_account_name
        self.on_premises_security_identifier = on_premises_security_identifier
        self.on_premises_sync_enabled = on_premises_sync_enabled
        self.preferred_data_location = preferred_data_location
        self.preferred_language = preferred_language
        self.proxy_addresses = proxy_addresses
        self.renewed_date_time = renewed_date_time
        self.security_enabled = security_enabled
        self.security_identifier = security_identifier
        self.theme = theme
        self.visibility = visibility
        self.allow_external_senders = allow_external_senders
        self.auto_subscribe_new_members = auto_subscribe_new_members
        self.hide_from_address_lists = hide_from_address_lists
        self.hide_from_outlook_clients = hide_from_outlook_clients
        self.is_subscribed_by_mail = is_subscribed_by_mail
        self.unseen_count = unseen_count
        self.is_archived = is_archived
        self.app_role_assignments = app_role_assignments
        self.created_on_behalf_of = created_on_behalf_of
        self.member_of = member_of
        self.members = members
        self.members_with_license_errors = members_with_license_errors
        self.owners = owners
        self.settings = settings
        self.transitive_member_of = transitive_member_of
        self.transitive_members = transitive_members
        self.accepted_senders = accepted_senders
        self.calendar = calendar
        self.calendar_view = calendar_view
        self.conversations = conversations
        self.events = events
        self.photo = photo
        self.photos = photos
        self.rejected_senders = rejected_senders
        self.threads = threads
        self.drive = drive
        self.drives = drives
        self.sites = sites
        self.extensions = extensions
        self.group_lifecycle_policies = group_lifecycle_policies
        self.planner = planner
        self.onenote = onenote
        self.team = team


class microsoftgraphgrouplifecyclepolicy(microsoftgraphentity):
    """groupLifecyclePolicy.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param alternate_notification_emails: List of email address to send notifications for groups
     without owners. Multiple email address can be defined by separating email address with a
     semicolon.
    :type alternate_notification_emails: str
    :param group_lifetime_in_days: Number of days before a group expires and needs to be renewed.
     Once renewed, the group expiration is extended by the number of days defined.
    :type group_lifetime_in_days: int
    :param managed_group_types: The group type for which the expiration policy applies. Possible
     values are All, Selected or None.
    :type managed_group_types: str
    """

    _validation = {
        'group_lifetime_in_days': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'alternate_notification_emails': {'key': 'alternateNotificationEmails', 'type': 'str'},
        'group_lifetime_in_days': {'key': 'groupLifetimeInDays', 'type': 'int'},
        'managed_group_types': {'key': 'managedGroupTypes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        alternate_notification_emails: Optional[str] = None,
        group_lifetime_in_days: Optional[int] = None,
        managed_group_types: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphgrouplifecyclepolicy, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.alternate_notification_emails = alternate_notification_emails
        self.group_lifetime_in_days = group_lifetime_in_days
        self.managed_group_types = managed_group_types


class microsoftgraphgroupsetting(microsoftgraphentity):
    """groupSetting.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: Display name of this group of settings, which comes from the associated
     template.
    :type display_name: str
    :param template_id: Unique identifier for the template used to create this group of settings.
     Read-only.
    :type template_id: str
    :param values: Collection of name value pairs. Must contain and set all the settings defined in
     the template.
    :type values: list[~identity_sign_ins.models.microsoftgraphsettingvalue]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'template_id': {'key': 'templateId', 'type': 'str'},
        'values': {'key': 'values', 'type': '[microsoftgraphsettingvalue]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        template_id: Optional[str] = None,
        values: Optional[List["microsoftgraphsettingvalue"]] = None,
        **kwargs
    ):
        super(microsoftgraphgroupsetting, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.template_id = template_id
        self.values = values


class microsoftgraphhashes(msrest.serialization.Model):
    """hashes.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param crc32_hash: The CRC32 value of the file in little endian (if available). Read-only.
    :type crc32_hash: str
    :param quick_xor_hash: A proprietary hash of the file that can be used to determine if the
     contents of the file have changed (if available). Read-only.
    :type quick_xor_hash: str
    :param sha1_hash: SHA1 hash for the contents of the file (if available). Read-only.
    :type sha1_hash: str
    :param sha256_hash: SHA256 hash for the contents of the file (if available). Read-only.
    :type sha256_hash: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'crc32_hash': {'key': 'crc32Hash', 'type': 'str'},
        'quick_xor_hash': {'key': 'quickXorHash', 'type': 'str'},
        'sha1_hash': {'key': 'sha1Hash', 'type': 'str'},
        'sha256_hash': {'key': 'sha256Hash', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        crc32_hash: Optional[str] = None,
        quick_xor_hash: Optional[str] = None,
        sha1_hash: Optional[str] = None,
        sha256_hash: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphhashes, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.crc32_hash = crc32_hash
        self.quick_xor_hash = quick_xor_hash
        self.sha1_hash = sha1_hash
        self.sha256_hash = sha256_hash


class microsoftgraphhomerealmdiscoverypolicy(microsoftgraphstspolicy):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphhomerealmdiscoverypolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, definition=definition, is_organization_default=is_organization_default, applies_to=applies_to, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphidentity(msrest.serialization.Model):
    """identity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The identity's display name. Note that this may not always be available or
     up to date. For example, if a user changes their display name, the API may show the new value
     in a future response, but the items associated with the user won't show up as having changed
     when using delta.
    :type display_name: str
    :param id: Unique identifier for the identity.
    :type id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphidentity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.id = id


class microsoftgraphidentityprovider(microsoftgraphentity):
    """identityProvider.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param client_id:
    :type client_id: str
    :param client_secret:
    :type client_secret: str
    :param name:
    :type name: str
    :param type:
    :type type: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'client_secret': {'key': 'clientSecret', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        client_id: Optional[str] = None,
        client_secret: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphidentityprovider, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.client_id = client_id
        self.client_secret = client_secret
        self.name = name
        self.type = type


class microsoftgraphidentitysecuritydefaultsenforcementpolicy(microsoftgraphpolicybase):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param is_enabled: If set to true, Azure Active Directory security defaults is enabled for the
     tenant.
    :type is_enabled: bool
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        is_enabled: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphidentitysecuritydefaultsenforcementpolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, **kwargs)
        self.additional_properties = additional_properties
        self.is_enabled = is_enabled


class microsoftgraphidentityset(msrest.serialization.Model):
    """identitySet.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param application: identity.
    :type application: ~identity_sign_ins.models.microsoftgraphidentity
    :param device: identity.
    :type device: ~identity_sign_ins.models.microsoftgraphidentity
    :param user: identity.
    :type user: ~identity_sign_ins.models.microsoftgraphidentity
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'application': {'key': 'application', 'type': 'microsoftgraphidentity'},
        'device': {'key': 'device', 'type': 'microsoftgraphidentity'},
        'user': {'key': 'user', 'type': 'microsoftgraphidentity'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        application: Optional["microsoftgraphidentity"] = None,
        device: Optional["microsoftgraphidentity"] = None,
        user: Optional["microsoftgraphidentity"] = None,
        **kwargs
    ):
        super(microsoftgraphidentityset, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.application = application
        self.device = device
        self.user = user


class microsoftgraphimage(msrest.serialization.Model):
    """image.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param height: Optional. Height of the image, in pixels. Read-only.
    :type height: int
    :param width: Optional. Width of the image, in pixels. Read-only.
    :type width: int
    """

    _validation = {
        'height': {'maximum': 2147483647, 'minimum': -2147483648},
        'width': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'height': {'key': 'height', 'type': 'int'},
        'width': {'key': 'width', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        height: Optional[int] = None,
        width: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphimage, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.height = height
        self.width = width


class microsoftgraphimageinfo(msrest.serialization.Model):
    """imageInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param add_image_query: Optional; parameter used to indicate the server is able to render image
     dynamically in response to parameterization. For example – a high contrast image.
    :type add_image_query: bool
    :param alternate_text: Optional; alt-text accessible content for the image.
    :type alternate_text: str
    :param alternative_text:
    :type alternative_text: str
    :param icon_url: Optional; URI that points to an icon which represents the application used to
     generate the activity.
    :type icon_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'add_image_query': {'key': 'addImageQuery', 'type': 'bool'},
        'alternate_text': {'key': 'alternateText', 'type': 'str'},
        'alternative_text': {'key': 'alternativeText', 'type': 'str'},
        'icon_url': {'key': 'iconUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        add_image_query: Optional[bool] = None,
        alternate_text: Optional[str] = None,
        alternative_text: Optional[str] = None,
        icon_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphimageinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.add_image_query = add_image_query
        self.alternate_text = alternate_text
        self.alternative_text = alternative_text
        self.icon_url = icon_url


class microsoftgraphincompletedata(msrest.serialization.Model):
    """incompleteData.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param missing_data_before_date_time: The service does not have source data before the
     specified time.
    :type missing_data_before_date_time: ~datetime.datetime
    :param was_throttled: Some data was not recorded due to excessive activity.
    :type was_throttled: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'missing_data_before_date_time': {'key': 'missingDataBeforeDateTime', 'type': 'iso-8601'},
        'was_throttled': {'key': 'wasThrottled', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        missing_data_before_date_time: Optional[datetime.datetime] = None,
        was_throttled: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphincompletedata, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.missing_data_before_date_time = missing_data_before_date_time
        self.was_throttled = was_throttled


class microsoftgraphinferenceclassification(microsoftgraphentity):
    """inferenceClassification.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param overrides: A set of overrides for a user to always classify messages from specific
     senders in certain ways: focused, or other. Read-only. Nullable.
    :type overrides: list[~identity_sign_ins.models.microsoftgraphinferenceclassificationoverride]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'overrides': {'key': 'overrides', 'type': '[microsoftgraphinferenceclassificationoverride]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        overrides: Optional[List["microsoftgraphinferenceclassificationoverride"]] = None,
        **kwargs
    ):
        super(microsoftgraphinferenceclassification, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.overrides = overrides


class microsoftgraphinferenceclassificationoverride(microsoftgraphentity):
    """inferenceClassificationOverride.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param classify_as:  Possible values include: "focused", "other".
    :type classify_as: str or ~identity_sign_ins.models.Microsoftgraphinferenceclassificationtype
    :param sender_email_address: emailAddress.
    :type sender_email_address: ~identity_sign_ins.models.microsoftgraphemailaddress
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'classify_as': {'key': 'classifyAs', 'type': 'str'},
        'sender_email_address': {'key': 'senderEmailAddress', 'type': 'microsoftgraphemailaddress'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        classify_as: Optional[Union[str, "Microsoftgraphinferenceclassificationtype"]] = None,
        sender_email_address: Optional["microsoftgraphemailaddress"] = None,
        **kwargs
    ):
        super(microsoftgraphinferenceclassificationoverride, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.classify_as = classify_as
        self.sender_email_address = sender_email_address


class microsoftgraphinformationprotection(microsoftgraphentity):
    """informationProtection.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param threat_assessment_requests:
    :type threat_assessment_requests:
     list[~identity_sign_ins.models.microsoftgraphthreatassessmentrequest]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'threat_assessment_requests': {'key': 'threatAssessmentRequests', 'type': '[microsoftgraphthreatassessmentrequest]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        threat_assessment_requests: Optional[List["microsoftgraphthreatassessmentrequest"]] = None,
        **kwargs
    ):
        super(microsoftgraphinformationprotection, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.threat_assessment_requests = threat_assessment_requests


class microsoftgraphinsightidentity(msrest.serialization.Model):
    """insightIdentity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param address: The email address of the user who shared the item.
    :type address: str
    :param display_name: The display name of the user who shared the item.
    :type display_name: str
    :param id: The id of the user who shared the item.
    :type id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'address': {'key': 'address', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        address: Optional[str] = None,
        display_name: Optional[str] = None,
        id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphinsightidentity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.address = address
        self.display_name = display_name
        self.id = id


class microsoftgraphinternetmessageheader(msrest.serialization.Model):
    """internetMessageHeader.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: Represents the key in a key-value pair.
    :type name: str
    :param value: The value in a key-value pair.
    :type value: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphinternetmessageheader, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.value = value


class microsoftgraphinvitation(microsoftgraphentity):
    """invitation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param invited_user_display_name: The display name of the user being invited.
    :type invited_user_display_name: str
    :param invited_user_email_address: The email address of the user being invited. Required. The
     following special characters are not permitted in the email address:Tilde (~)Exclamation point
     (!)Number sign (#)Dollar sign ($)Percent (%)Circumflex (^)Ampersand (&)Asterisk (*)Parentheses
     (( ))Plus sign (+)Equal sign (=)Brackets ([ ])Braces ({ })Backslash (/)Slash mark (/)Pipe
     (/|)Semicolon (;)Colon (:)Quotation marks (')Angle brackets (< >)Question mark (?)Comma
     (,)However, the following exceptions apply:A period (.) or a hyphen (-) is permitted anywhere
     in the user name, except at the beginning or end of the name.An underscore (_) is permitted
     anywhere in the user name. This includes at the beginning or end of the name.
    :type invited_user_email_address: str
    :param invited_user_message_info: invitedUserMessageInfo.
    :type invited_user_message_info: ~identity_sign_ins.models.microsoftgraphinvitedusermessageinfo
    :param invited_user_type: The userType of the user being invited. By default, this is Guest.
     You can invite as Member if you are a company administrator.
    :type invited_user_type: str
    :param invite_redeem_url: The URL the user can use to redeem their invitation. Read-only.
    :type invite_redeem_url: str
    :param invite_redirect_url: The URL the user should be redirected to once the invitation is
     redeemed. Required.
    :type invite_redirect_url: str
    :param send_invitation_message: Indicates whether an email should be sent to the user being
     invited or not. The default is false.
    :type send_invitation_message: bool
    :param status: The status of the invitation. Possible values: PendingAcceptance, Completed,
     InProgress, and Error.
    :type status: str
    :param invited_user: Represents an Azure Active Directory user object.
    :type invited_user: ~identity_sign_ins.models.microsoftgraphuser
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'invited_user_display_name': {'key': 'invitedUserDisplayName', 'type': 'str'},
        'invited_user_email_address': {'key': 'invitedUserEmailAddress', 'type': 'str'},
        'invited_user_message_info': {'key': 'invitedUserMessageInfo', 'type': 'microsoftgraphinvitedusermessageinfo'},
        'invited_user_type': {'key': 'invitedUserType', 'type': 'str'},
        'invite_redeem_url': {'key': 'inviteRedeemUrl', 'type': 'str'},
        'invite_redirect_url': {'key': 'inviteRedirectUrl', 'type': 'str'},
        'send_invitation_message': {'key': 'sendInvitationMessage', 'type': 'bool'},
        'status': {'key': 'status', 'type': 'str'},
        'invited_user': {'key': 'invitedUser', 'type': 'microsoftgraphuser'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        invited_user_display_name: Optional[str] = None,
        invited_user_email_address: Optional[str] = None,
        invited_user_message_info: Optional["microsoftgraphinvitedusermessageinfo"] = None,
        invited_user_type: Optional[str] = None,
        invite_redeem_url: Optional[str] = None,
        invite_redirect_url: Optional[str] = None,
        send_invitation_message: Optional[bool] = None,
        status: Optional[str] = None,
        invited_user: Optional["microsoftgraphuser"] = None,
        **kwargs
    ):
        super(microsoftgraphinvitation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.invited_user_display_name = invited_user_display_name
        self.invited_user_email_address = invited_user_email_address
        self.invited_user_message_info = invited_user_message_info
        self.invited_user_type = invited_user_type
        self.invite_redeem_url = invite_redeem_url
        self.invite_redirect_url = invite_redirect_url
        self.send_invitation_message = send_invitation_message
        self.status = status
        self.invited_user = invited_user


class microsoftgraphinvitedusermessageinfo(msrest.serialization.Model):
    """invitedUserMessageInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param cc_recipients: Additional recipients the invitation message should be sent to. Currently
     only 1 additional recipient is supported.
    :type cc_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param customized_message_body: Customized message body you want to send if you don't want the
     default message.
    :type customized_message_body: str
    :param message_language: The language you want to send the default message in. If the
     customizedMessageBody is specified, this property is ignored, and the message is sent using the
     customizedMessageBody. The language format should be in ISO 639. The default is en-US.
    :type message_language: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'cc_recipients': {'key': 'ccRecipients', 'type': '[microsoftgraphrecipient]'},
        'customized_message_body': {'key': 'customizedMessageBody', 'type': 'str'},
        'message_language': {'key': 'messageLanguage', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        cc_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        customized_message_body: Optional[str] = None,
        message_language: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphinvitedusermessageinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.cc_recipients = cc_recipients
        self.customized_message_body = customized_message_body
        self.message_language = message_language


class microsoftgraphitemactionstat(msrest.serialization.Model):
    """itemActionStat.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param action_count: The number of times the action took place. Read-only.
    :type action_count: int
    :param actor_count: The number of distinct actors that performed the action. Read-only.
    :type actor_count: int
    """

    _validation = {
        'action_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'actor_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'action_count': {'key': 'actionCount', 'type': 'int'},
        'actor_count': {'key': 'actorCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        action_count: Optional[int] = None,
        actor_count: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphitemactionstat, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.action_count = action_count
        self.actor_count = actor_count


class microsoftgraphitemactivity(microsoftgraphentity):
    """itemActivity.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param access: accessAction.
    :type access: dict[str, object]
    :param activity_date_time: Details about when the activity took place. Read-only.
    :type activity_date_time: ~datetime.datetime
    :param actor: identitySet.
    :type actor: ~identity_sign_ins.models.microsoftgraphidentityset
    :param drive_item: driveItem.
    :type drive_item: ~identity_sign_ins.models.microsoftgraphdriveitem
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'access': {'key': 'access', 'type': '{object}'},
        'activity_date_time': {'key': 'activityDateTime', 'type': 'iso-8601'},
        'actor': {'key': 'actor', 'type': 'microsoftgraphidentityset'},
        'drive_item': {'key': 'driveItem', 'type': 'microsoftgraphdriveitem'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        access: Optional[Dict[str, object]] = None,
        activity_date_time: Optional[datetime.datetime] = None,
        actor: Optional["microsoftgraphidentityset"] = None,
        drive_item: Optional["microsoftgraphdriveitem"] = None,
        **kwargs
    ):
        super(microsoftgraphitemactivity, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.access = access
        self.activity_date_time = activity_date_time
        self.actor = actor
        self.drive_item = drive_item


class microsoftgraphitemactivitystat(microsoftgraphentity):
    """itemActivityStat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param access: itemActionStat.
    :type access: ~identity_sign_ins.models.microsoftgraphitemactionstat
    :param create: itemActionStat.
    :type create: ~identity_sign_ins.models.microsoftgraphitemactionstat
    :param delete: itemActionStat.
    :type delete: ~identity_sign_ins.models.microsoftgraphitemactionstat
    :param edit: itemActionStat.
    :type edit: ~identity_sign_ins.models.microsoftgraphitemactionstat
    :param end_date_time: When the interval ends. Read-only.
    :type end_date_time: ~datetime.datetime
    :param incomplete_data: incompleteData.
    :type incomplete_data: ~identity_sign_ins.models.microsoftgraphincompletedata
    :param is_trending: Indicates whether the item is 'trending.' Read-only.
    :type is_trending: bool
    :param move: itemActionStat.
    :type move: ~identity_sign_ins.models.microsoftgraphitemactionstat
    :param start_date_time: When the interval starts. Read-only.
    :type start_date_time: ~datetime.datetime
    :param activities: Exposes the itemActivities represented in this itemActivityStat resource.
    :type activities: list[~identity_sign_ins.models.microsoftgraphitemactivity]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'access': {'key': 'access', 'type': 'microsoftgraphitemactionstat'},
        'create': {'key': 'create', 'type': 'microsoftgraphitemactionstat'},
        'delete': {'key': 'delete', 'type': 'microsoftgraphitemactionstat'},
        'edit': {'key': 'edit', 'type': 'microsoftgraphitemactionstat'},
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'incomplete_data': {'key': 'incompleteData', 'type': 'microsoftgraphincompletedata'},
        'is_trending': {'key': 'isTrending', 'type': 'bool'},
        'move': {'key': 'move', 'type': 'microsoftgraphitemactionstat'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'activities': {'key': 'activities', 'type': '[microsoftgraphitemactivity]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        access: Optional["microsoftgraphitemactionstat"] = None,
        create: Optional["microsoftgraphitemactionstat"] = None,
        delete: Optional["microsoftgraphitemactionstat"] = None,
        edit: Optional["microsoftgraphitemactionstat"] = None,
        end_date_time: Optional[datetime.datetime] = None,
        incomplete_data: Optional["microsoftgraphincompletedata"] = None,
        is_trending: Optional[bool] = None,
        move: Optional["microsoftgraphitemactionstat"] = None,
        start_date_time: Optional[datetime.datetime] = None,
        activities: Optional[List["microsoftgraphitemactivity"]] = None,
        **kwargs
    ):
        super(microsoftgraphitemactivitystat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.access = access
        self.create = create
        self.delete = delete
        self.edit = edit
        self.end_date_time = end_date_time
        self.incomplete_data = incomplete_data
        self.is_trending = is_trending
        self.move = move
        self.start_date_time = start_date_time
        self.activities = activities


class microsoftgraphitemanalytics(microsoftgraphentity):
    """itemAnalytics.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param all_time: itemActivityStat.
    :type all_time: ~identity_sign_ins.models.microsoftgraphitemactivitystat
    :param item_activity_stats:
    :type item_activity_stats: list[~identity_sign_ins.models.microsoftgraphitemactivitystat]
    :param last_seven_days: itemActivityStat.
    :type last_seven_days: ~identity_sign_ins.models.microsoftgraphitemactivitystat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'all_time': {'key': 'allTime', 'type': 'microsoftgraphitemactivitystat'},
        'item_activity_stats': {'key': 'itemActivityStats', 'type': '[microsoftgraphitemactivitystat]'},
        'last_seven_days': {'key': 'lastSevenDays', 'type': 'microsoftgraphitemactivitystat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        all_time: Optional["microsoftgraphitemactivitystat"] = None,
        item_activity_stats: Optional[List["microsoftgraphitemactivitystat"]] = None,
        last_seven_days: Optional["microsoftgraphitemactivitystat"] = None,
        **kwargs
    ):
        super(microsoftgraphitemanalytics, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.all_time = all_time
        self.item_activity_stats = item_activity_stats
        self.last_seven_days = last_seven_days


class microsoftgraphitembody(msrest.serialization.Model):
    """itemBody.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content of the item.
    :type content: str
    :param content_type:  Possible values include: "text", "html".
    :type content_type: str or ~identity_sign_ins.models.Microsoftgraphbodytype
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'str'},
        'content_type': {'key': 'contentType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[str] = None,
        content_type: Optional[Union[str, "Microsoftgraphbodytype"]] = None,
        **kwargs
    ):
        super(microsoftgraphitembody, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_type = content_type


class microsoftgraphitemreference(msrest.serialization.Model):
    """itemReference.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param drive_id: Unique identifier of the drive instance that contains the item. Read-only.
    :type drive_id: str
    :param drive_type: Identifies the type of drive. See [drive][] resource for values.
    :type drive_type: str
    :param id: Unique identifier of the item in the drive. Read-only.
    :type id: str
    :param name: The name of the item being referenced. Read-only.
    :type name: str
    :param path: Path that can be used to navigate to the item. Read-only.
    :type path: str
    :param share_id: A unique identifier for a shared resource that can be accessed via the
     [Shares][] API.
    :type share_id: str
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param site_id:
    :type site_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'drive_id': {'key': 'driveId', 'type': 'str'},
        'drive_type': {'key': 'driveType', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
        'share_id': {'key': 'shareId', 'type': 'str'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'site_id': {'key': 'siteId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        drive_id: Optional[str] = None,
        drive_type: Optional[str] = None,
        id: Optional[str] = None,
        name: Optional[str] = None,
        path: Optional[str] = None,
        share_id: Optional[str] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        site_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphitemreference, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.drive_id = drive_id
        self.drive_type = drive_type
        self.id = id
        self.name = name
        self.path = path
        self.share_id = share_id
        self.sharepoint_ids = sharepoint_ids
        self.site_id = site_id


class microsoftgraphlicenseassignmentstate(msrest.serialization.Model):
    """licenseAssignmentState.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assigned_by_group:
    :type assigned_by_group: str
    :param disabled_plans:
    :type disabled_plans: list[str]
    :param error:
    :type error: str
    :param sku_id:
    :type sku_id: str
    :param state:
    :type state: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'assigned_by_group': {'key': 'assignedByGroup', 'type': 'str'},
        'disabled_plans': {'key': 'disabledPlans', 'type': '[str]'},
        'error': {'key': 'error', 'type': 'str'},
        'sku_id': {'key': 'skuId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        assigned_by_group: Optional[str] = None,
        disabled_plans: Optional[List[str]] = None,
        error: Optional[str] = None,
        sku_id: Optional[str] = None,
        state: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlicenseassignmentstate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.assigned_by_group = assigned_by_group
        self.disabled_plans = disabled_plans
        self.error = error
        self.sku_id = sku_id
        self.state = state


class microsoftgraphlicensedetails(microsoftgraphentity):
    """licenseDetails.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param service_plans: Information about the service plans assigned with the license. Read-only,
     Not nullable.
    :type service_plans: list[~identity_sign_ins.models.microsoftgraphserviceplaninfo]
    :param sku_id: Unique identifier (GUID) for the service SKU. Equal to the skuId property on the
     related SubscribedSku object. Read-only.
    :type sku_id: str
    :param sku_part_number: Unique SKU display name. Equal to the skuPartNumber on the related
     SubscribedSku object; for example: 'AAD_Premium'. Read-only.
    :type sku_part_number: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'service_plans': {'key': 'servicePlans', 'type': '[microsoftgraphserviceplaninfo]'},
        'sku_id': {'key': 'skuId', 'type': 'str'},
        'sku_part_number': {'key': 'skuPartNumber', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        service_plans: Optional[List["microsoftgraphserviceplaninfo"]] = None,
        sku_id: Optional[str] = None,
        sku_part_number: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlicensedetails, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.service_plans = service_plans
        self.sku_id = sku_id
        self.sku_part_number = sku_part_number


class microsoftgraphlicenseprocessingstate(msrest.serialization.Model):
    """licenseProcessingState.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param state:
    :type state: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'state': {'key': 'state', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        state: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlicenseprocessingstate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.state = state


class microsoftgraphlist(microsoftgraphbaseitem):
    """list.

    :param id: Read-only.
    :type id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The displayable title of the list.
    :type display_name: str
    :param list: listInfo.
    :type list: ~identity_sign_ins.models.microsoftgraphlistinfo
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param system: systemFacet.
    :type system: dict[str, object]
    :param columns: The collection of field definitions for this list.
    :type columns: list[~identity_sign_ins.models.microsoftgraphcolumndefinition]
    :param content_types: The collection of content types present in this list.
    :type content_types: list[~identity_sign_ins.models.microsoftgraphcontenttype]
    :param drive: drive.
    :type drive: ~identity_sign_ins.models.microsoftgraphdrive
    :param items: All items contained in the list.
    :type items: list[~identity_sign_ins.models.microsoftgraphlistitem]
    :param subscriptions: The set of subscriptions on the list.
    :type subscriptions: list[~identity_sign_ins.models.microsoftgraphsubscription]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'list': {'key': 'list', 'type': 'microsoftgraphlistinfo'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'system': {'key': 'system', 'type': '{object}'},
        'columns': {'key': 'columns', 'type': '[microsoftgraphcolumndefinition]'},
        'content_types': {'key': 'contentTypes', 'type': '[microsoftgraphcontenttype]'},
        'drive': {'key': 'drive', 'type': 'microsoftgraphdrive'},
        'items': {'key': 'items', 'type': '[microsoftgraphlistitem]'},
        'subscriptions': {'key': 'subscriptions', 'type': '[microsoftgraphsubscription]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        list: Optional["microsoftgraphlistinfo"] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        system: Optional[Dict[str, object]] = None,
        columns: Optional[List["microsoftgraphcolumndefinition"]] = None,
        content_types: Optional[List["microsoftgraphcontenttype"]] = None,
        drive: Optional["microsoftgraphdrive"] = None,
        items: Optional[List["microsoftgraphlistitem"]] = None,
        subscriptions: Optional[List["microsoftgraphsubscription"]] = None,
        **kwargs
    ):
        super(microsoftgraphlist, self).__init__(id=id, created_by=created_by, created_date_time=created_date_time, description=description, e_tag=e_tag, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, name=name, parent_reference=parent_reference, web_url=web_url, created_by_user=created_by_user, last_modified_by_user=last_modified_by_user, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.list = list
        self.sharepoint_ids = sharepoint_ids
        self.system = system
        self.columns = columns
        self.content_types = content_types
        self.drive = drive
        self.items = items
        self.subscriptions = subscriptions


class microsoftgraphlistinfo(msrest.serialization.Model):
    """listInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content_types_enabled: If true, indicates that content types are enabled for this list.
    :type content_types_enabled: bool
    :param hidden: If true, indicates that the list is not normally visible in the SharePoint user
     experience.
    :type hidden: bool
    :param template: An enumerated value that represents the base list template used in creating
     the list. Possible values include documentLibrary, genericList, task, survey, announcements,
     contacts, and more.
    :type template: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'content_types_enabled': {'key': 'contentTypesEnabled', 'type': 'bool'},
        'hidden': {'key': 'hidden', 'type': 'bool'},
        'template': {'key': 'template', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        content_types_enabled: Optional[bool] = None,
        hidden: Optional[bool] = None,
        template: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlistinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.content_types_enabled = content_types_enabled
        self.hidden = hidden
        self.template = template


class microsoftgraphlistitem(microsoftgraphbaseitem):
    """listItem.

    :param id: Read-only.
    :type id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content_type: contentTypeInfo.
    :type content_type: ~identity_sign_ins.models.microsoftgraphcontenttypeinfo
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param analytics: itemAnalytics.
    :type analytics: ~identity_sign_ins.models.microsoftgraphitemanalytics
    :param drive_item: driveItem.
    :type drive_item: ~identity_sign_ins.models.microsoftgraphdriveitem
    :param fields: fieldValueSet.
    :type fields: ~identity_sign_ins.models.microsoftgraphfieldvalueset
    :param versions: The list of previous versions of the list item.
    :type versions: list[~identity_sign_ins.models.microsoftgraphlistitemversion]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content_type': {'key': 'contentType', 'type': 'microsoftgraphcontenttypeinfo'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'analytics': {'key': 'analytics', 'type': 'microsoftgraphitemanalytics'},
        'drive_item': {'key': 'driveItem', 'type': 'microsoftgraphdriveitem'},
        'fields': {'key': 'fields', 'type': 'microsoftgraphfieldvalueset'},
        'versions': {'key': 'versions', 'type': '[microsoftgraphlistitemversion]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content_type: Optional["microsoftgraphcontenttypeinfo"] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        analytics: Optional["microsoftgraphitemanalytics"] = None,
        drive_item: Optional["microsoftgraphdriveitem"] = None,
        fields: Optional["microsoftgraphfieldvalueset"] = None,
        versions: Optional[List["microsoftgraphlistitemversion"]] = None,
        **kwargs
    ):
        super(microsoftgraphlistitem, self).__init__(id=id, created_by=created_by, created_date_time=created_date_time, description=description, e_tag=e_tag, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, name=name, parent_reference=parent_reference, web_url=web_url, created_by_user=created_by_user, last_modified_by_user=last_modified_by_user, **kwargs)
        self.additional_properties = additional_properties
        self.content_type = content_type
        self.sharepoint_ids = sharepoint_ids
        self.analytics = analytics
        self.drive_item = drive_item
        self.fields = fields
        self.versions = versions


class microsoftgraphlistitemversion(microsoftgraphbaseitemversion):
    """listItemVersion.

    :param id: Read-only.
    :type id: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the version was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param publication: publicationFacet.
    :type publication: ~identity_sign_ins.models.microsoftgraphpublicationfacet
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fields: fieldValueSet.
    :type fields: ~identity_sign_ins.models.microsoftgraphfieldvalueset
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'publication': {'key': 'publication', 'type': 'microsoftgraphpublicationfacet'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fields': {'key': 'fields', 'type': 'microsoftgraphfieldvalueset'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        publication: Optional["microsoftgraphpublicationfacet"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fields: Optional["microsoftgraphfieldvalueset"] = None,
        **kwargs
    ):
        super(microsoftgraphlistitemversion, self).__init__(id=id, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, publication=publication, **kwargs)
        self.additional_properties = additional_properties
        self.fields = fields


class microsoftgraphlocaleinfo(msrest.serialization.Model):
    """localeInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: A name representing the user's locale in natural language, for example,
     'English (United States)'.
    :type display_name: str
    :param locale: A locale representation for the user, which includes the user's preferred
     language and country/region. For example, 'en-us'. The language component follows 2-letter
     codes as defined in ISO 639-1, and the country component follows 2-letter codes as defined in
     ISO 3166-1 alpha-2.
    :type locale: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'locale': {'key': 'locale', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        locale: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlocaleinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.locale = locale


class microsoftgraphlocation(msrest.serialization.Model):
    """location.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param address: physicalAddress.
    :type address: ~identity_sign_ins.models.microsoftgraphphysicaladdress
    :param coordinates: outlookGeoCoordinates.
    :type coordinates: ~identity_sign_ins.models.microsoftgraphoutlookgeocoordinates
    :param display_name: The name associated with the location.
    :type display_name: str
    :param location_email_address: Optional email address of the location.
    :type location_email_address: str
    :param location_type:  Possible values include: "default", "conferenceRoom", "homeAddress",
     "businessAddress", "geoCoordinates", "streetAddress", "hotel", "restaurant", "localBusiness",
     "postalAddress".
    :type location_type: str or ~identity_sign_ins.models.Microsoftgraphlocationtype
    :param location_uri: Optional URI representing the location.
    :type location_uri: str
    :param unique_id: For internal use only.
    :type unique_id: str
    :param unique_id_type:  Possible values include: "unknown", "locationStore", "directory",
     "private", "bing".
    :type unique_id_type: str or ~identity_sign_ins.models.Microsoftgraphlocationuniqueidtype
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'address': {'key': 'address', 'type': 'microsoftgraphphysicaladdress'},
        'coordinates': {'key': 'coordinates', 'type': 'microsoftgraphoutlookgeocoordinates'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'location_email_address': {'key': 'locationEmailAddress', 'type': 'str'},
        'location_type': {'key': 'locationType', 'type': 'str'},
        'location_uri': {'key': 'locationUri', 'type': 'str'},
        'unique_id': {'key': 'uniqueId', 'type': 'str'},
        'unique_id_type': {'key': 'uniqueIdType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        address: Optional["microsoftgraphphysicaladdress"] = None,
        coordinates: Optional["microsoftgraphoutlookgeocoordinates"] = None,
        display_name: Optional[str] = None,
        location_email_address: Optional[str] = None,
        location_type: Optional[Union[str, "Microsoftgraphlocationtype"]] = None,
        location_uri: Optional[str] = None,
        unique_id: Optional[str] = None,
        unique_id_type: Optional[Union[str, "Microsoftgraphlocationuniqueidtype"]] = None,
        **kwargs
    ):
        super(microsoftgraphlocation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.address = address
        self.coordinates = coordinates
        self.display_name = display_name
        self.location_email_address = location_email_address
        self.location_type = location_type
        self.location_uri = location_uri
        self.unique_id = unique_id
        self.unique_id_type = unique_id_type


class microsoftgraphlookupcolumn(msrest.serialization.Model):
    """lookupColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_multiple_values: Indicates whether multiple values can be selected from the
     source.
    :type allow_multiple_values: bool
    :param allow_unlimited_length: Indicates whether values in the column should be able to exceed
     the standard limit of 255 characters.
    :type allow_unlimited_length: bool
    :param column_name: The name of the lookup source column.
    :type column_name: str
    :param list_id: The unique identifier of the lookup source list.
    :type list_id: str
    :param primary_lookup_column_id: If specified, this column is a secondary lookup, pulling an
     additional field from the list item looked up by the primary lookup. Use the list item looked
     up by the primary as the source for the column named here.
    :type primary_lookup_column_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_multiple_values': {'key': 'allowMultipleValues', 'type': 'bool'},
        'allow_unlimited_length': {'key': 'allowUnlimitedLength', 'type': 'bool'},
        'column_name': {'key': 'columnName', 'type': 'str'},
        'list_id': {'key': 'listId', 'type': 'str'},
        'primary_lookup_column_id': {'key': 'primaryLookupColumnId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_multiple_values: Optional[bool] = None,
        allow_unlimited_length: Optional[bool] = None,
        column_name: Optional[str] = None,
        list_id: Optional[str] = None,
        primary_lookup_column_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphlookupcolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_multiple_values = allow_multiple_values
        self.allow_unlimited_length = allow_unlimited_length
        self.column_name = column_name
        self.list_id = list_id
        self.primary_lookup_column_id = primary_lookup_column_id


class microsoftgraphmailboxsettings(msrest.serialization.Model):
    """mailboxSettings.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param archive_folder: Folder ID of an archive folder for the user.
    :type archive_folder: str
    :param automatic_replies_setting: automaticRepliesSetting.
    :type automatic_replies_setting:
     ~identity_sign_ins.models.microsoftgraphautomaticrepliessetting
    :param date_format: The date format for the user's mailbox.
    :type date_format: str
    :param delegate_meeting_message_delivery_options:  Possible values include:
     "sendToDelegateAndInformationToPrincipal", "sendToDelegateAndPrincipal", "sendToDelegateOnly".
    :type delegate_meeting_message_delivery_options: str or
     ~identity_sign_ins.models.Microsoftgraphdelegatemeetingmessagedeliveryoptions
    :param language: localeInfo.
    :type language: ~identity_sign_ins.models.microsoftgraphlocaleinfo
    :param time_format: The time format for the user's mailbox.
    :type time_format: str
    :param time_zone: The default time zone for the user's mailbox.
    :type time_zone: str
    :param working_hours: workingHours.
    :type working_hours: ~identity_sign_ins.models.microsoftgraphworkinghours
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'archive_folder': {'key': 'archiveFolder', 'type': 'str'},
        'automatic_replies_setting': {'key': 'automaticRepliesSetting', 'type': 'microsoftgraphautomaticrepliessetting'},
        'date_format': {'key': 'dateFormat', 'type': 'str'},
        'delegate_meeting_message_delivery_options': {'key': 'delegateMeetingMessageDeliveryOptions', 'type': 'str'},
        'language': {'key': 'language', 'type': 'microsoftgraphlocaleinfo'},
        'time_format': {'key': 'timeFormat', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'working_hours': {'key': 'workingHours', 'type': 'microsoftgraphworkinghours'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        archive_folder: Optional[str] = None,
        automatic_replies_setting: Optional["microsoftgraphautomaticrepliessetting"] = None,
        date_format: Optional[str] = None,
        delegate_meeting_message_delivery_options: Optional[Union[str, "Microsoftgraphdelegatemeetingmessagedeliveryoptions"]] = None,
        language: Optional["microsoftgraphlocaleinfo"] = None,
        time_format: Optional[str] = None,
        time_zone: Optional[str] = None,
        working_hours: Optional["microsoftgraphworkinghours"] = None,
        **kwargs
    ):
        super(microsoftgraphmailboxsettings, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.archive_folder = archive_folder
        self.automatic_replies_setting = automatic_replies_setting
        self.date_format = date_format
        self.delegate_meeting_message_delivery_options = delegate_meeting_message_delivery_options
        self.language = language
        self.time_format = time_format
        self.time_zone = time_zone
        self.working_hours = working_hours


class microsoftgraphmailfolder(microsoftgraphentity):
    """mailFolder.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param child_folder_count: The number of immediate child mailFolders in the current mailFolder.
    :type child_folder_count: int
    :param display_name: The mailFolder's display name.
    :type display_name: str
    :param parent_folder_id: The unique identifier for the mailFolder's parent mailFolder.
    :type parent_folder_id: str
    :param total_item_count: The number of items in the mailFolder.
    :type total_item_count: int
    :param unread_item_count: The number of items in the mailFolder marked as unread.
    :type unread_item_count: int
    :param child_folders: The collection of child folders in the mailFolder.
    :type child_folders: list[~identity_sign_ins.models.microsoftgraphmailfolder]
    :param message_rules: The collection of rules that apply to the user's Inbox folder.
    :type message_rules: list[~identity_sign_ins.models.microsoftgraphmessagerule]
    :param messages: The collection of messages in the mailFolder.
    :type messages: list[~identity_sign_ins.models.microsoftgraphmessage]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the mailFolder. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the mailFolder. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _validation = {
        'child_folder_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'total_item_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'unread_item_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'child_folder_count': {'key': 'childFolderCount', 'type': 'int'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'parent_folder_id': {'key': 'parentFolderId', 'type': 'str'},
        'total_item_count': {'key': 'totalItemCount', 'type': 'int'},
        'unread_item_count': {'key': 'unreadItemCount', 'type': 'int'},
        'child_folders': {'key': 'childFolders', 'type': '[microsoftgraphmailfolder]'},
        'message_rules': {'key': 'messageRules', 'type': '[microsoftgraphmessagerule]'},
        'messages': {'key': 'messages', 'type': '[microsoftgraphmessage]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        child_folder_count: Optional[int] = None,
        display_name: Optional[str] = None,
        parent_folder_id: Optional[str] = None,
        total_item_count: Optional[int] = None,
        unread_item_count: Optional[int] = None,
        child_folders: Optional[List["microsoftgraphmailfolder"]] = None,
        message_rules: Optional[List["microsoftgraphmessagerule"]] = None,
        messages: Optional[List["microsoftgraphmessage"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphmailfolder, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.child_folder_count = child_folder_count
        self.display_name = display_name
        self.parent_folder_id = parent_folder_id
        self.total_item_count = total_item_count
        self.unread_item_count = unread_item_count
        self.child_folders = child_folders
        self.message_rules = message_rules
        self.messages = messages
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphmanagedappoperation(microsoftgraphentity):
    """Represents an operation applied against an app registration.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The operation name.
    :type display_name: str
    :param last_modified_date_time: The last time the app operation was modified.
    :type last_modified_date_time: ~datetime.datetime
    :param state: The current state of the operation.
    :type state: str
    :param version: Version of the entity.
    :type version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'state': {'key': 'state', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        state: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphmanagedappoperation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.last_modified_date_time = last_modified_date_time
        self.state = state
        self.version = version


class microsoftgraphmanagedapppolicy(microsoftgraphentity):
    """The ManagedAppPolicy resource represents a base type for platform specific policies.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The date and time the policy was created.
    :type created_date_time: ~datetime.datetime
    :param description: The policy's description.
    :type description: str
    :param display_name: Policy display name.
    :type display_name: str
    :param last_modified_date_time: Last time the policy was modified.
    :type last_modified_date_time: ~datetime.datetime
    :param version: Version of the entity.
    :type version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphmanagedapppolicy, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.description = description
        self.display_name = display_name
        self.last_modified_date_time = last_modified_date_time
        self.version = version


class microsoftgraphmanagedappregistration(microsoftgraphentity):
    """The ManagedAppEntity is the base entity type for all other entity types under app management workflow.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param app_identifier: The identifier for a mobile app.
    :type app_identifier: dict[str, object]
    :param application_version: App version.
    :type application_version: str
    :param created_date_time: Date and time of creation.
    :type created_date_time: ~datetime.datetime
    :param device_name: Host device name.
    :type device_name: str
    :param device_tag: App management SDK generated tag, which helps relate apps hosted on the same
     device. Not guaranteed to relate apps in all conditions.
    :type device_tag: str
    :param device_type: Host device type.
    :type device_type: str
    :param flagged_reasons: Zero or more reasons an app registration is flagged. E.g. app running
     on rooted device.
    :type flagged_reasons: list[str or
     ~identity_sign_ins.models.Microsoftgraphmanagedappflaggedreason]
    :param last_sync_date_time: Date and time of last the app synced with management service.
    :type last_sync_date_time: ~datetime.datetime
    :param management_sdk_version: App management SDK version.
    :type management_sdk_version: str
    :param platform_version: Operating System version.
    :type platform_version: str
    :param user_id: The user Id to who this app registration belongs.
    :type user_id: str
    :param version: Version of the entity.
    :type version: str
    :param applied_policies: Zero or more policys already applied on the registered app when it
     last synchronized with managment service.
    :type applied_policies: list[~identity_sign_ins.models.microsoftgraphmanagedapppolicy]
    :param intended_policies: Zero or more policies admin intended for the app as of now.
    :type intended_policies: list[~identity_sign_ins.models.microsoftgraphmanagedapppolicy]
    :param operations: Zero or more long running operations triggered on the app registration.
    :type operations: list[~identity_sign_ins.models.microsoftgraphmanagedappoperation]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'app_identifier': {'key': 'appIdentifier', 'type': '{object}'},
        'application_version': {'key': 'applicationVersion', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'device_name': {'key': 'deviceName', 'type': 'str'},
        'device_tag': {'key': 'deviceTag', 'type': 'str'},
        'device_type': {'key': 'deviceType', 'type': 'str'},
        'flagged_reasons': {'key': 'flaggedReasons', 'type': '[str]'},
        'last_sync_date_time': {'key': 'lastSyncDateTime', 'type': 'iso-8601'},
        'management_sdk_version': {'key': 'managementSdkVersion', 'type': 'str'},
        'platform_version': {'key': 'platformVersion', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'applied_policies': {'key': 'appliedPolicies', 'type': '[microsoftgraphmanagedapppolicy]'},
        'intended_policies': {'key': 'intendedPolicies', 'type': '[microsoftgraphmanagedapppolicy]'},
        'operations': {'key': 'operations', 'type': '[microsoftgraphmanagedappoperation]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        app_identifier: Optional[Dict[str, object]] = None,
        application_version: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        device_name: Optional[str] = None,
        device_tag: Optional[str] = None,
        device_type: Optional[str] = None,
        flagged_reasons: Optional[List[Union[str, "Microsoftgraphmanagedappflaggedreason"]]] = None,
        last_sync_date_time: Optional[datetime.datetime] = None,
        management_sdk_version: Optional[str] = None,
        platform_version: Optional[str] = None,
        user_id: Optional[str] = None,
        version: Optional[str] = None,
        applied_policies: Optional[List["microsoftgraphmanagedapppolicy"]] = None,
        intended_policies: Optional[List["microsoftgraphmanagedapppolicy"]] = None,
        operations: Optional[List["microsoftgraphmanagedappoperation"]] = None,
        **kwargs
    ):
        super(microsoftgraphmanagedappregistration, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.app_identifier = app_identifier
        self.application_version = application_version
        self.created_date_time = created_date_time
        self.device_name = device_name
        self.device_tag = device_tag
        self.device_type = device_type
        self.flagged_reasons = flagged_reasons
        self.last_sync_date_time = last_sync_date_time
        self.management_sdk_version = management_sdk_version
        self.platform_version = platform_version
        self.user_id = user_id
        self.version = version
        self.applied_policies = applied_policies
        self.intended_policies = intended_policies
        self.operations = operations


class microsoftgraphmanageddevice(microsoftgraphentity):
    """Devices that are managed or pre-enrolled through Intune.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param activation_lock_bypass_code: Code that allows the Activation Lock on a device to be
     bypassed.
    :type activation_lock_bypass_code: str
    :param android_security_patch_level: Android security patch level.
    :type android_security_patch_level: str
    :param azure_ad_device_id: The unique identifier for the Azure Active Directory device. Read
     only.
    :type azure_ad_device_id: str
    :param azure_ad_registered: Whether the device is Azure Active Directory registered.
    :type azure_ad_registered: bool
    :param compliance_grace_period_expiration_date_time: The DateTime when device compliance grace
     period expires.
    :type compliance_grace_period_expiration_date_time: ~datetime.datetime
    :param compliance_state:  Possible values include: "unknown", "compliant", "noncompliant",
     "conflict", "error", "inGracePeriod", "configManager".
    :type compliance_state: str or ~identity_sign_ins.models.Microsoftgraphcompliancestate
    :param configuration_manager_client_enabled_features: configuration Manager client enabled
     features.
    :type configuration_manager_client_enabled_features:
     ~identity_sign_ins.models.microsoftgraphconfigurationmanagerclientenabledfeatures
    :param device_action_results: List of ComplexType deviceActionResult objects.
    :type device_action_results: list[~identity_sign_ins.models.microsoftgraphdeviceactionresult]
    :param device_category_display_name: Device category display name.
    :type device_category_display_name: str
    :param device_enrollment_type:  Possible values include: "unknown", "userEnrollment",
     "deviceEnrollmentManager", "appleBulkWithUser", "appleBulkWithoutUser", "windowsAzureADJoin",
     "windowsBulkUserless", "windowsAutoEnrollment", "windowsBulkAzureDomainJoin",
     "windowsCoManagement".
    :type device_enrollment_type: str or
     ~identity_sign_ins.models.Microsoftgraphdeviceenrollmenttype
    :param device_health_attestation_state: deviceHealthAttestationState.
    :type device_health_attestation_state:
     ~identity_sign_ins.models.microsoftgraphdevicehealthattestationstate
    :param device_name: Name of the device.
    :type device_name: str
    :param device_registration_state:  Possible values include: "notRegistered", "registered",
     "revoked", "keyConflict", "approvalPending", "certificateReset",
     "notRegisteredPendingEnrollment", "unknown".
    :type device_registration_state: str or
     ~identity_sign_ins.models.Microsoftgraphdeviceregistrationstate
    :param eas_activated: Whether the device is Exchange ActiveSync activated.
    :type eas_activated: bool
    :param eas_activation_date_time: Exchange ActivationSync activation time of the device.
    :type eas_activation_date_time: ~datetime.datetime
    :param eas_device_id: Exchange ActiveSync Id of the device.
    :type eas_device_id: str
    :param email_address: Email(s) for the user associated with the device.
    :type email_address: str
    :param enrolled_date_time: Enrollment time of the device.
    :type enrolled_date_time: ~datetime.datetime
    :param exchange_access_state:  Possible values include: "none", "unknown", "allowed",
     "blocked", "quarantined".
    :type exchange_access_state: str or
     ~identity_sign_ins.models.Microsoftgraphdevicemanagementexchangeaccessstate
    :param exchange_access_state_reason:  Possible values include: "none", "unknown",
     "exchangeGlobalRule", "exchangeIndividualRule", "exchangeDeviceRule", "exchangeUpgrade",
     "exchangeMailboxPolicy", "other", "compliant", "notCompliant", "notEnrolled",
     "unknownLocation", "mfaRequired", "azureADBlockDueToAccessPolicy", "compromisedPassword",
     "deviceNotKnownWithManagedApp".
    :type exchange_access_state_reason: str or
     ~identity_sign_ins.models.Microsoftgraphdevicemanagementexchangeaccessstatereason
    :param exchange_last_successful_sync_date_time: Last time the device contacted Exchange.
    :type exchange_last_successful_sync_date_time: ~datetime.datetime
    :param free_storage_space_in_bytes: Free Storage in Bytes.
    :type free_storage_space_in_bytes: long
    :param imei: IMEI.
    :type imei: str
    :param is_encrypted: Device encryption status.
    :type is_encrypted: bool
    :param is_supervised: Device supervised status.
    :type is_supervised: bool
    :param jail_broken: whether the device is jail broken or rooted.
    :type jail_broken: str
    :param last_sync_date_time: The date and time that the device last completed a successful sync
     with Intune.
    :type last_sync_date_time: ~datetime.datetime
    :param managed_device_name: Automatically generated name to identify a device. Can be
     overwritten to a user friendly name.
    :type managed_device_name: str
    :param managed_device_owner_type:  Possible values include: "unknown", "company", "personal".
    :type managed_device_owner_type: str or
     ~identity_sign_ins.models.Microsoftgraphmanageddeviceownertype
    :param management_agent:  Possible values include: "eas", "mdm", "easMdm", "intuneClient",
     "easIntuneClient", "configurationManagerClient", "configurationManagerClientMdm",
     "configurationManagerClientMdmEas", "unknown", "jamf", "googleCloudDevicePolicyController".
    :type management_agent: str or ~identity_sign_ins.models.Microsoftgraphmanagementagenttype
    :param manufacturer: Manufacturer of the device.
    :type manufacturer: str
    :param meid: MEID.
    :type meid: str
    :param model: Model of the device.
    :type model: str
    :param operating_system: Operating system of the device. Windows, iOS, etc.
    :type operating_system: str
    :param os_version: Operating system version of the device.
    :type os_version: str
    :param partner_reported_threat_state:  Possible values include: "unknown", "activated",
     "deactivated", "secured", "lowSeverity", "mediumSeverity", "highSeverity", "unresponsive",
     "compromised", "misconfigured".
    :type partner_reported_threat_state: str or
     ~identity_sign_ins.models.Microsoftgraphmanageddevicepartnerreportedhealthstate
    :param phone_number: Phone number of the device.
    :type phone_number: str
    :param remote_assistance_session_error_details: An error string that identifies issues when
     creating Remote Assistance session objects.
    :type remote_assistance_session_error_details: str
    :param remote_assistance_session_url: Url that allows a Remote Assistance session to be
     established with the device.
    :type remote_assistance_session_url: str
    :param serial_number: SerialNumber.
    :type serial_number: str
    :param subscriber_carrier: Subscriber Carrier.
    :type subscriber_carrier: str
    :param total_storage_space_in_bytes: Total Storage in Bytes.
    :type total_storage_space_in_bytes: long
    :param user_display_name: User display name.
    :type user_display_name: str
    :param user_id: Unique Identifier for the user associated with the device.
    :type user_id: str
    :param user_principal_name: Device user principal name.
    :type user_principal_name: str
    :param wi_fi_mac_address: Wi-Fi MAC.
    :type wi_fi_mac_address: str
    :param device_compliance_policy_states: Device compliance policy states for this device.
    :type device_compliance_policy_states:
     list[~identity_sign_ins.models.microsoftgraphdevicecompliancepolicystate]
    :param device_configuration_states: Device configuration states for this device.
    :type device_configuration_states:
     list[~identity_sign_ins.models.microsoftgraphdeviceconfigurationstate]
    :param device_category: Device categories provides a way to organize your devices. Using device
     categories, company administrators can define their own categories that make sense to their
     company. These categories can then be applied to a device in the Intune Azure console or
     selected by a user during device enrollment. You can filter reports and create dynamic Azure
     Active Directory device groups based on device categories.
    :type device_category: ~identity_sign_ins.models.microsoftgraphdevicecategory
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'activation_lock_bypass_code': {'key': 'activationLockBypassCode', 'type': 'str'},
        'android_security_patch_level': {'key': 'androidSecurityPatchLevel', 'type': 'str'},
        'azure_ad_device_id': {'key': 'azureADDeviceId', 'type': 'str'},
        'azure_ad_registered': {'key': 'azureADRegistered', 'type': 'bool'},
        'compliance_grace_period_expiration_date_time': {'key': 'complianceGracePeriodExpirationDateTime', 'type': 'iso-8601'},
        'compliance_state': {'key': 'complianceState', 'type': 'str'},
        'configuration_manager_client_enabled_features': {'key': 'configurationManagerClientEnabledFeatures', 'type': 'microsoftgraphconfigurationmanagerclientenabledfeatures'},
        'device_action_results': {'key': 'deviceActionResults', 'type': '[microsoftgraphdeviceactionresult]'},
        'device_category_display_name': {'key': 'deviceCategoryDisplayName', 'type': 'str'},
        'device_enrollment_type': {'key': 'deviceEnrollmentType', 'type': 'str'},
        'device_health_attestation_state': {'key': 'deviceHealthAttestationState', 'type': 'microsoftgraphdevicehealthattestationstate'},
        'device_name': {'key': 'deviceName', 'type': 'str'},
        'device_registration_state': {'key': 'deviceRegistrationState', 'type': 'str'},
        'eas_activated': {'key': 'easActivated', 'type': 'bool'},
        'eas_activation_date_time': {'key': 'easActivationDateTime', 'type': 'iso-8601'},
        'eas_device_id': {'key': 'easDeviceId', 'type': 'str'},
        'email_address': {'key': 'emailAddress', 'type': 'str'},
        'enrolled_date_time': {'key': 'enrolledDateTime', 'type': 'iso-8601'},
        'exchange_access_state': {'key': 'exchangeAccessState', 'type': 'str'},
        'exchange_access_state_reason': {'key': 'exchangeAccessStateReason', 'type': 'str'},
        'exchange_last_successful_sync_date_time': {'key': 'exchangeLastSuccessfulSyncDateTime', 'type': 'iso-8601'},
        'free_storage_space_in_bytes': {'key': 'freeStorageSpaceInBytes', 'type': 'long'},
        'imei': {'key': 'imei', 'type': 'str'},
        'is_encrypted': {'key': 'isEncrypted', 'type': 'bool'},
        'is_supervised': {'key': 'isSupervised', 'type': 'bool'},
        'jail_broken': {'key': 'jailBroken', 'type': 'str'},
        'last_sync_date_time': {'key': 'lastSyncDateTime', 'type': 'iso-8601'},
        'managed_device_name': {'key': 'managedDeviceName', 'type': 'str'},
        'managed_device_owner_type': {'key': 'managedDeviceOwnerType', 'type': 'str'},
        'management_agent': {'key': 'managementAgent', 'type': 'str'},
        'manufacturer': {'key': 'manufacturer', 'type': 'str'},
        'meid': {'key': 'meid', 'type': 'str'},
        'model': {'key': 'model', 'type': 'str'},
        'operating_system': {'key': 'operatingSystem', 'type': 'str'},
        'os_version': {'key': 'osVersion', 'type': 'str'},
        'partner_reported_threat_state': {'key': 'partnerReportedThreatState', 'type': 'str'},
        'phone_number': {'key': 'phoneNumber', 'type': 'str'},
        'remote_assistance_session_error_details': {'key': 'remoteAssistanceSessionErrorDetails', 'type': 'str'},
        'remote_assistance_session_url': {'key': 'remoteAssistanceSessionUrl', 'type': 'str'},
        'serial_number': {'key': 'serialNumber', 'type': 'str'},
        'subscriber_carrier': {'key': 'subscriberCarrier', 'type': 'str'},
        'total_storage_space_in_bytes': {'key': 'totalStorageSpaceInBytes', 'type': 'long'},
        'user_display_name': {'key': 'userDisplayName', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
        'wi_fi_mac_address': {'key': 'wiFiMacAddress', 'type': 'str'},
        'device_compliance_policy_states': {'key': 'deviceCompliancePolicyStates', 'type': '[microsoftgraphdevicecompliancepolicystate]'},
        'device_configuration_states': {'key': 'deviceConfigurationStates', 'type': '[microsoftgraphdeviceconfigurationstate]'},
        'device_category': {'key': 'deviceCategory', 'type': 'microsoftgraphdevicecategory'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        activation_lock_bypass_code: Optional[str] = None,
        android_security_patch_level: Optional[str] = None,
        azure_ad_device_id: Optional[str] = None,
        azure_ad_registered: Optional[bool] = None,
        compliance_grace_period_expiration_date_time: Optional[datetime.datetime] = None,
        compliance_state: Optional[Union[str, "Microsoftgraphcompliancestate"]] = None,
        configuration_manager_client_enabled_features: Optional["microsoftgraphconfigurationmanagerclientenabledfeatures"] = None,
        device_action_results: Optional[List["microsoftgraphdeviceactionresult"]] = None,
        device_category_display_name: Optional[str] = None,
        device_enrollment_type: Optional[Union[str, "Microsoftgraphdeviceenrollmenttype"]] = None,
        device_health_attestation_state: Optional["microsoftgraphdevicehealthattestationstate"] = None,
        device_name: Optional[str] = None,
        device_registration_state: Optional[Union[str, "Microsoftgraphdeviceregistrationstate"]] = None,
        eas_activated: Optional[bool] = None,
        eas_activation_date_time: Optional[datetime.datetime] = None,
        eas_device_id: Optional[str] = None,
        email_address: Optional[str] = None,
        enrolled_date_time: Optional[datetime.datetime] = None,
        exchange_access_state: Optional[Union[str, "Microsoftgraphdevicemanagementexchangeaccessstate"]] = None,
        exchange_access_state_reason: Optional[Union[str, "Microsoftgraphdevicemanagementexchangeaccessstatereason"]] = None,
        exchange_last_successful_sync_date_time: Optional[datetime.datetime] = None,
        free_storage_space_in_bytes: Optional[int] = None,
        imei: Optional[str] = None,
        is_encrypted: Optional[bool] = None,
        is_supervised: Optional[bool] = None,
        jail_broken: Optional[str] = None,
        last_sync_date_time: Optional[datetime.datetime] = None,
        managed_device_name: Optional[str] = None,
        managed_device_owner_type: Optional[Union[str, "Microsoftgraphmanageddeviceownertype"]] = None,
        management_agent: Optional[Union[str, "Microsoftgraphmanagementagenttype"]] = None,
        manufacturer: Optional[str] = None,
        meid: Optional[str] = None,
        model: Optional[str] = None,
        operating_system: Optional[str] = None,
        os_version: Optional[str] = None,
        partner_reported_threat_state: Optional[Union[str, "Microsoftgraphmanageddevicepartnerreportedhealthstate"]] = None,
        phone_number: Optional[str] = None,
        remote_assistance_session_error_details: Optional[str] = None,
        remote_assistance_session_url: Optional[str] = None,
        serial_number: Optional[str] = None,
        subscriber_carrier: Optional[str] = None,
        total_storage_space_in_bytes: Optional[int] = None,
        user_display_name: Optional[str] = None,
        user_id: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        wi_fi_mac_address: Optional[str] = None,
        device_compliance_policy_states: Optional[List["microsoftgraphdevicecompliancepolicystate"]] = None,
        device_configuration_states: Optional[List["microsoftgraphdeviceconfigurationstate"]] = None,
        device_category: Optional["microsoftgraphdevicecategory"] = None,
        **kwargs
    ):
        super(microsoftgraphmanageddevice, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.activation_lock_bypass_code = activation_lock_bypass_code
        self.android_security_patch_level = android_security_patch_level
        self.azure_ad_device_id = azure_ad_device_id
        self.azure_ad_registered = azure_ad_registered
        self.compliance_grace_period_expiration_date_time = compliance_grace_period_expiration_date_time
        self.compliance_state = compliance_state
        self.configuration_manager_client_enabled_features = configuration_manager_client_enabled_features
        self.device_action_results = device_action_results
        self.device_category_display_name = device_category_display_name
        self.device_enrollment_type = device_enrollment_type
        self.device_health_attestation_state = device_health_attestation_state
        self.device_name = device_name
        self.device_registration_state = device_registration_state
        self.eas_activated = eas_activated
        self.eas_activation_date_time = eas_activation_date_time
        self.eas_device_id = eas_device_id
        self.email_address = email_address
        self.enrolled_date_time = enrolled_date_time
        self.exchange_access_state = exchange_access_state
        self.exchange_access_state_reason = exchange_access_state_reason
        self.exchange_last_successful_sync_date_time = exchange_last_successful_sync_date_time
        self.free_storage_space_in_bytes = free_storage_space_in_bytes
        self.imei = imei
        self.is_encrypted = is_encrypted
        self.is_supervised = is_supervised
        self.jail_broken = jail_broken
        self.last_sync_date_time = last_sync_date_time
        self.managed_device_name = managed_device_name
        self.managed_device_owner_type = managed_device_owner_type
        self.management_agent = management_agent
        self.manufacturer = manufacturer
        self.meid = meid
        self.model = model
        self.operating_system = operating_system
        self.os_version = os_version
        self.partner_reported_threat_state = partner_reported_threat_state
        self.phone_number = phone_number
        self.remote_assistance_session_error_details = remote_assistance_session_error_details
        self.remote_assistance_session_url = remote_assistance_session_url
        self.serial_number = serial_number
        self.subscriber_carrier = subscriber_carrier
        self.total_storage_space_in_bytes = total_storage_space_in_bytes
        self.user_display_name = user_display_name
        self.user_id = user_id
        self.user_principal_name = user_principal_name
        self.wi_fi_mac_address = wi_fi_mac_address
        self.device_compliance_policy_states = device_compliance_policy_states
        self.device_configuration_states = device_configuration_states
        self.device_category = device_category


class microsoftgraphmeetingparticipantinfo(msrest.serialization.Model):
    """meetingParticipantInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param identity: identitySet.
    :type identity: ~identity_sign_ins.models.microsoftgraphidentityset
    :param upn: User principal name of the participant.
    :type upn: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'identity': {'key': 'identity', 'type': 'microsoftgraphidentityset'},
        'upn': {'key': 'upn', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        identity: Optional["microsoftgraphidentityset"] = None,
        upn: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphmeetingparticipantinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.identity = identity
        self.upn = upn


class microsoftgraphmeetingparticipants(msrest.serialization.Model):
    """meetingParticipants.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param attendees:
    :type attendees: list[~identity_sign_ins.models.microsoftgraphmeetingparticipantinfo]
    :param organizer: meetingParticipantInfo.
    :type organizer: ~identity_sign_ins.models.microsoftgraphmeetingparticipantinfo
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'attendees': {'key': 'attendees', 'type': '[microsoftgraphmeetingparticipantinfo]'},
        'organizer': {'key': 'organizer', 'type': 'microsoftgraphmeetingparticipantinfo'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        attendees: Optional[List["microsoftgraphmeetingparticipantinfo"]] = None,
        organizer: Optional["microsoftgraphmeetingparticipantinfo"] = None,
        **kwargs
    ):
        super(microsoftgraphmeetingparticipants, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.attendees = attendees
        self.organizer = organizer


class microsoftgraphmessage(microsoftgraphoutlookitem):
    """message.

    :param id: Read-only.
    :type id: str
    :param categories: The categories associated with the item.
    :type categories: list[str]
    :param change_key: Identifies the version of the item. Every time the item is changed,
     changeKey changes as well. This allows Exchange to apply changes to the correct version of the
     object. Read-only.
    :type change_key: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param bcc_recipients: The Bcc: recipients for the message.
    :type bcc_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param body: itemBody.
    :type body: ~identity_sign_ins.models.microsoftgraphitembody
    :param body_preview: The first 255 characters of the message body. It is in text format.
    :type body_preview: str
    :param cc_recipients: The Cc: recipients for the message.
    :type cc_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param conversation_id: The ID of the conversation the email belongs to.
    :type conversation_id: str
    :param conversation_index: Indicates the position of the message within the conversation.
    :type conversation_index: bytes
    :param flag: followupFlag.
    :type flag: ~identity_sign_ins.models.microsoftgraphfollowupflag
    :param from_property: recipient.
    :type from_property: ~identity_sign_ins.models.microsoftgraphrecipient
    :param has_attachments: Indicates whether the message has attachments. This property doesn't
     include inline attachments, so if a message contains only inline attachments, this property is
     false. To verify the existence of inline attachments, parse the body property to look for a src
     attribute, such as :code:`<IMG src='cid:image001.jpg@01D26CD8.6C05F070'>`.
    :type has_attachments: bool
    :param importance:  Possible values include: "low", "normal", "high".
    :type importance: str or ~identity_sign_ins.models.Microsoftgraphimportance
    :param inference_classification:  Possible values include: "focused", "other".
    :type inference_classification: str or
     ~identity_sign_ins.models.Microsoftgraphinferenceclassificationtype
    :param internet_message_headers: A collection of message headers defined by RFC5322. The set
     includes message headers indicating the network path taken by a message from the sender to the
     recipient. It can also contain custom message headers that hold app data for the message.
     Returned only on applying a $select query option. Read-only.
    :type internet_message_headers:
     list[~identity_sign_ins.models.microsoftgraphinternetmessageheader]
    :param internet_message_id: The message ID in the format specified by RFC2822.
    :type internet_message_id: str
    :param is_delivery_receipt_requested: Indicates whether a read receipt is requested for the
     message.
    :type is_delivery_receipt_requested: bool
    :param is_draft: Indicates whether the message is a draft. A message is a draft if it hasn't
     been sent yet.
    :type is_draft: bool
    :param is_read: Indicates whether the message has been read.
    :type is_read: bool
    :param is_read_receipt_requested: Indicates whether a read receipt is requested for the
     message.
    :type is_read_receipt_requested: bool
    :param parent_folder_id: The unique identifier for the message's parent mailFolder.
    :type parent_folder_id: str
    :param received_date_time: The date and time the message was received.
    :type received_date_time: ~datetime.datetime
    :param reply_to: The email addresses to use when replying.
    :type reply_to: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param sender: recipient.
    :type sender: ~identity_sign_ins.models.microsoftgraphrecipient
    :param sent_date_time: The date and time the message was sent.
    :type sent_date_time: ~datetime.datetime
    :param subject: The subject of the message.
    :type subject: str
    :param to_recipients: The To: recipients for the message.
    :type to_recipients: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param unique_body: itemBody.
    :type unique_body: ~identity_sign_ins.models.microsoftgraphitembody
    :param web_link: The URL to open the message in Outlook Web App.You can append an ispopout
     argument to the end of the URL to change how the message is displayed. If ispopout is not
     present or if it is set to 1, then the message is shown in a popout window. If ispopout is set
     to 0, then the browser will show the message in the Outlook Web App review pane.The message
     will open in the browser if you are logged in to your mailbox via Outlook Web App. You will be
     prompted to login if you are not already logged in with the browser.This URL can be accessed
     from within an iFrame.
    :type web_link: str
    :param attachments: The fileAttachment and itemAttachment attachments for the message.
    :type attachments: list[~identity_sign_ins.models.microsoftgraphattachment]
    :param extensions: The collection of open extensions defined for the message. Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the message. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the message. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'bcc_recipients': {'key': 'bccRecipients', 'type': '[microsoftgraphrecipient]'},
        'body': {'key': 'body', 'type': 'microsoftgraphitembody'},
        'body_preview': {'key': 'bodyPreview', 'type': 'str'},
        'cc_recipients': {'key': 'ccRecipients', 'type': '[microsoftgraphrecipient]'},
        'conversation_id': {'key': 'conversationId', 'type': 'str'},
        'conversation_index': {'key': 'conversationIndex', 'type': 'base64'},
        'flag': {'key': 'flag', 'type': 'microsoftgraphfollowupflag'},
        'from_property': {'key': 'from', 'type': 'microsoftgraphrecipient'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'importance': {'key': 'importance', 'type': 'str'},
        'inference_classification': {'key': 'inferenceClassification', 'type': 'str'},
        'internet_message_headers': {'key': 'internetMessageHeaders', 'type': '[microsoftgraphinternetmessageheader]'},
        'internet_message_id': {'key': 'internetMessageId', 'type': 'str'},
        'is_delivery_receipt_requested': {'key': 'isDeliveryReceiptRequested', 'type': 'bool'},
        'is_draft': {'key': 'isDraft', 'type': 'bool'},
        'is_read': {'key': 'isRead', 'type': 'bool'},
        'is_read_receipt_requested': {'key': 'isReadReceiptRequested', 'type': 'bool'},
        'parent_folder_id': {'key': 'parentFolderId', 'type': 'str'},
        'received_date_time': {'key': 'receivedDateTime', 'type': 'iso-8601'},
        'reply_to': {'key': 'replyTo', 'type': '[microsoftgraphrecipient]'},
        'sender': {'key': 'sender', 'type': 'microsoftgraphrecipient'},
        'sent_date_time': {'key': 'sentDateTime', 'type': 'iso-8601'},
        'subject': {'key': 'subject', 'type': 'str'},
        'to_recipients': {'key': 'toRecipients', 'type': '[microsoftgraphrecipient]'},
        'unique_body': {'key': 'uniqueBody', 'type': 'microsoftgraphitembody'},
        'web_link': {'key': 'webLink', 'type': 'str'},
        'attachments': {'key': 'attachments', 'type': '[microsoftgraphattachment]'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        categories: Optional[List[str]] = None,
        change_key: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        bcc_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        body: Optional["microsoftgraphitembody"] = None,
        body_preview: Optional[str] = None,
        cc_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        conversation_id: Optional[str] = None,
        conversation_index: Optional[bytes] = None,
        flag: Optional["microsoftgraphfollowupflag"] = None,
        from_property: Optional["microsoftgraphrecipient"] = None,
        has_attachments: Optional[bool] = None,
        importance: Optional[Union[str, "Microsoftgraphimportance"]] = None,
        inference_classification: Optional[Union[str, "Microsoftgraphinferenceclassificationtype"]] = None,
        internet_message_headers: Optional[List["microsoftgraphinternetmessageheader"]] = None,
        internet_message_id: Optional[str] = None,
        is_delivery_receipt_requested: Optional[bool] = None,
        is_draft: Optional[bool] = None,
        is_read: Optional[bool] = None,
        is_read_receipt_requested: Optional[bool] = None,
        parent_folder_id: Optional[str] = None,
        received_date_time: Optional[datetime.datetime] = None,
        reply_to: Optional[List["microsoftgraphrecipient"]] = None,
        sender: Optional["microsoftgraphrecipient"] = None,
        sent_date_time: Optional[datetime.datetime] = None,
        subject: Optional[str] = None,
        to_recipients: Optional[List["microsoftgraphrecipient"]] = None,
        unique_body: Optional["microsoftgraphitembody"] = None,
        web_link: Optional[str] = None,
        attachments: Optional[List["microsoftgraphattachment"]] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphmessage, self).__init__(id=id, categories=categories, change_key=change_key, created_date_time=created_date_time, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.bcc_recipients = bcc_recipients
        self.body = body
        self.body_preview = body_preview
        self.cc_recipients = cc_recipients
        self.conversation_id = conversation_id
        self.conversation_index = conversation_index
        self.flag = flag
        self.from_property = from_property
        self.has_attachments = has_attachments
        self.importance = importance
        self.inference_classification = inference_classification
        self.internet_message_headers = internet_message_headers
        self.internet_message_id = internet_message_id
        self.is_delivery_receipt_requested = is_delivery_receipt_requested
        self.is_draft = is_draft
        self.is_read = is_read
        self.is_read_receipt_requested = is_read_receipt_requested
        self.parent_folder_id = parent_folder_id
        self.received_date_time = received_date_time
        self.reply_to = reply_to
        self.sender = sender
        self.sent_date_time = sent_date_time
        self.subject = subject
        self.to_recipients = to_recipients
        self.unique_body = unique_body
        self.web_link = web_link
        self.attachments = attachments
        self.extensions = extensions
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphmessagerule(microsoftgraphentity):
    """messageRule.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param actions: messageRuleActions.
    :type actions: ~identity_sign_ins.models.microsoftgraphmessageruleactions
    :param conditions: messageRulePredicates.
    :type conditions: ~identity_sign_ins.models.microsoftgraphmessagerulepredicates
    :param display_name: The display name of the rule.
    :type display_name: str
    :param exceptions: messageRulePredicates.
    :type exceptions: ~identity_sign_ins.models.microsoftgraphmessagerulepredicates
    :param has_error: Indicates whether the rule is in an error condition. Read-only.
    :type has_error: bool
    :param is_enabled: Indicates whether the rule is enabled to be applied to messages.
    :type is_enabled: bool
    :param is_read_only: Indicates if the rule is read-only and cannot be modified or deleted by
     the rules REST API.
    :type is_read_only: bool
    :param sequence: Indicates the order in which the rule is executed, among other rules.
    :type sequence: int
    """

    _validation = {
        'sequence': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'actions': {'key': 'actions', 'type': 'microsoftgraphmessageruleactions'},
        'conditions': {'key': 'conditions', 'type': 'microsoftgraphmessagerulepredicates'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'exceptions': {'key': 'exceptions', 'type': 'microsoftgraphmessagerulepredicates'},
        'has_error': {'key': 'hasError', 'type': 'bool'},
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'is_read_only': {'key': 'isReadOnly', 'type': 'bool'},
        'sequence': {'key': 'sequence', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        actions: Optional["microsoftgraphmessageruleactions"] = None,
        conditions: Optional["microsoftgraphmessagerulepredicates"] = None,
        display_name: Optional[str] = None,
        exceptions: Optional["microsoftgraphmessagerulepredicates"] = None,
        has_error: Optional[bool] = None,
        is_enabled: Optional[bool] = None,
        is_read_only: Optional[bool] = None,
        sequence: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphmessagerule, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.actions = actions
        self.conditions = conditions
        self.display_name = display_name
        self.exceptions = exceptions
        self.has_error = has_error
        self.is_enabled = is_enabled
        self.is_read_only = is_read_only
        self.sequence = sequence


class microsoftgraphmessageruleactions(msrest.serialization.Model):
    """messageRuleActions.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assign_categories: A list of categories to be assigned to a message.
    :type assign_categories: list[str]
    :param copy_to_folder: The ID of a folder that a message is to be copied to.
    :type copy_to_folder: str
    :param delete: Indicates whether a message should be moved to the Deleted Items folder.
    :type delete: bool
    :param forward_as_attachment_to: The email addresses of the recipients to which a message
     should be forwarded as an attachment.
    :type forward_as_attachment_to: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param forward_to: The email addresses of the recipients to which a message should be
     forwarded.
    :type forward_to: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param mark_as_read: Indicates whether a message should be marked as read.
    :type mark_as_read: bool
    :param mark_importance:  Possible values include: "low", "normal", "high".
    :type mark_importance: str or ~identity_sign_ins.models.Microsoftgraphimportance
    :param move_to_folder: The ID of the folder that a message will be moved to.
    :type move_to_folder: str
    :param permanent_delete: Indicates whether a message should be permanently deleted and not
     saved to the Deleted Items folder.
    :type permanent_delete: bool
    :param redirect_to: The email addresses to which a message should be redirected.
    :type redirect_to: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param stop_processing_rules: Indicates whether subsequent rules should be evaluated.
    :type stop_processing_rules: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'assign_categories': {'key': 'assignCategories', 'type': '[str]'},
        'copy_to_folder': {'key': 'copyToFolder', 'type': 'str'},
        'delete': {'key': 'delete', 'type': 'bool'},
        'forward_as_attachment_to': {'key': 'forwardAsAttachmentTo', 'type': '[microsoftgraphrecipient]'},
        'forward_to': {'key': 'forwardTo', 'type': '[microsoftgraphrecipient]'},
        'mark_as_read': {'key': 'markAsRead', 'type': 'bool'},
        'mark_importance': {'key': 'markImportance', 'type': 'str'},
        'move_to_folder': {'key': 'moveToFolder', 'type': 'str'},
        'permanent_delete': {'key': 'permanentDelete', 'type': 'bool'},
        'redirect_to': {'key': 'redirectTo', 'type': '[microsoftgraphrecipient]'},
        'stop_processing_rules': {'key': 'stopProcessingRules', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        assign_categories: Optional[List[str]] = None,
        copy_to_folder: Optional[str] = None,
        delete: Optional[bool] = None,
        forward_as_attachment_to: Optional[List["microsoftgraphrecipient"]] = None,
        forward_to: Optional[List["microsoftgraphrecipient"]] = None,
        mark_as_read: Optional[bool] = None,
        mark_importance: Optional[Union[str, "Microsoftgraphimportance"]] = None,
        move_to_folder: Optional[str] = None,
        permanent_delete: Optional[bool] = None,
        redirect_to: Optional[List["microsoftgraphrecipient"]] = None,
        stop_processing_rules: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphmessageruleactions, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.assign_categories = assign_categories
        self.copy_to_folder = copy_to_folder
        self.delete = delete
        self.forward_as_attachment_to = forward_as_attachment_to
        self.forward_to = forward_to
        self.mark_as_read = mark_as_read
        self.mark_importance = mark_importance
        self.move_to_folder = move_to_folder
        self.permanent_delete = permanent_delete
        self.redirect_to = redirect_to
        self.stop_processing_rules = stop_processing_rules


class microsoftgraphmessagerulepredicates(msrest.serialization.Model):
    """messageRulePredicates.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param body_contains: Represents the strings that should appear in the body of an incoming
     message in order for the condition or exception to apply.
    :type body_contains: list[str]
    :param body_or_subject_contains: Represents the strings that should appear in the body or
     subject of an incoming message in order for the condition or exception to apply.
    :type body_or_subject_contains: list[str]
    :param categories: Represents the categories that an incoming message should be labeled with in
     order for the condition or exception to apply.
    :type categories: list[str]
    :param from_addresses: Represents the specific sender email addresses of an incoming message in
     order for the condition or exception to apply.
    :type from_addresses: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param has_attachments: Indicates whether an incoming message must have attachments in order
     for the condition or exception to apply.
    :type has_attachments: bool
    :param header_contains: Represents the strings that appear in the headers of an incoming
     message in order for the condition or exception to apply.
    :type header_contains: list[str]
    :param importance:  Possible values include: "low", "normal", "high".
    :type importance: str or ~identity_sign_ins.models.Microsoftgraphimportance
    :param is_approval_request: Indicates whether an incoming message must be an approval request
     in order for the condition or exception to apply.
    :type is_approval_request: bool
    :param is_automatic_forward: Indicates whether an incoming message must be automatically
     forwarded in order for the condition or exception to apply.
    :type is_automatic_forward: bool
    :param is_automatic_reply: Indicates whether an incoming message must be an auto reply in order
     for the condition or exception to apply.
    :type is_automatic_reply: bool
    :param is_encrypted: Indicates whether an incoming message must be encrypted in order for the
     condition or exception to apply.
    :type is_encrypted: bool
    :param is_meeting_request: Indicates whether an incoming message must be a meeting request in
     order for the condition or exception to apply.
    :type is_meeting_request: bool
    :param is_meeting_response: Indicates whether an incoming message must be a meeting response in
     order for the condition or exception to apply.
    :type is_meeting_response: bool
    :param is_non_delivery_report: Indicates whether an incoming message must be a non-delivery
     report in order for the condition or exception to apply.
    :type is_non_delivery_report: bool
    :param is_permission_controlled: Indicates whether an incoming message must be permission
     controlled (RMS-protected) in order for the condition or exception to apply.
    :type is_permission_controlled: bool
    :param is_read_receipt: Indicates whether an incoming message must be a read receipt in order
     for the condition or exception to apply.
    :type is_read_receipt: bool
    :param is_signed: Indicates whether an incoming message must be S/MIME-signed in order for the
     condition or exception to apply.
    :type is_signed: bool
    :param is_voicemail: Indicates whether an incoming message must be a voice mail in order for
     the condition or exception to apply.
    :type is_voicemail: bool
    :param message_action_flag:  Possible values include: "any", "call", "doNotForward",
     "followUp", "fyi", "forward", "noResponseNecessary", "read", "reply", "replyToAll", "review".
    :type message_action_flag: str or ~identity_sign_ins.models.Microsoftgraphmessageactionflag
    :param not_sent_to_me: Indicates whether the owner of the mailbox must not be a recipient of an
     incoming message in order for the condition or exception to apply.
    :type not_sent_to_me: bool
    :param recipient_contains: Represents the strings that appear in either the toRecipients or
     ccRecipients properties of an incoming message in order for the condition or exception to
     apply.
    :type recipient_contains: list[str]
    :param sender_contains: Represents the strings that appear in the from property of an incoming
     message in order for the condition or exception to apply.
    :type sender_contains: list[str]
    :param sensitivity:  Possible values include: "normal", "personal", "private", "confidential".
    :type sensitivity: str or ~identity_sign_ins.models.Microsoftgraphsensitivity
    :param sent_cc_me: Indicates whether the owner of the mailbox must be in the ccRecipients
     property of an incoming message in order for the condition or exception to apply.
    :type sent_cc_me: bool
    :param sent_only_to_me: Indicates whether the owner of the mailbox must be the only recipient
     in an incoming message in order for the condition or exception to apply.
    :type sent_only_to_me: bool
    :param sent_to_addresses: Represents the email addresses that an incoming message must have
     been sent to in order for the condition or exception to apply.
    :type sent_to_addresses: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param sent_to_me: Indicates whether the owner of the mailbox must be in the toRecipients
     property of an incoming message in order for the condition or exception to apply.
    :type sent_to_me: bool
    :param sent_to_or_cc_me: Indicates whether the owner of the mailbox must be in either a
     toRecipients or ccRecipients property of an incoming message in order for the condition or
     exception to apply.
    :type sent_to_or_cc_me: bool
    :param subject_contains: Represents the strings that appear in the subject of an incoming
     message in order for the condition or exception to apply.
    :type subject_contains: list[str]
    :param within_size_range: sizeRange.
    :type within_size_range: ~identity_sign_ins.models.microsoftgraphsizerange
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'body_contains': {'key': 'bodyContains', 'type': '[str]'},
        'body_or_subject_contains': {'key': 'bodyOrSubjectContains', 'type': '[str]'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'from_addresses': {'key': 'fromAddresses', 'type': '[microsoftgraphrecipient]'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'header_contains': {'key': 'headerContains', 'type': '[str]'},
        'importance': {'key': 'importance', 'type': 'str'},
        'is_approval_request': {'key': 'isApprovalRequest', 'type': 'bool'},
        'is_automatic_forward': {'key': 'isAutomaticForward', 'type': 'bool'},
        'is_automatic_reply': {'key': 'isAutomaticReply', 'type': 'bool'},
        'is_encrypted': {'key': 'isEncrypted', 'type': 'bool'},
        'is_meeting_request': {'key': 'isMeetingRequest', 'type': 'bool'},
        'is_meeting_response': {'key': 'isMeetingResponse', 'type': 'bool'},
        'is_non_delivery_report': {'key': 'isNonDeliveryReport', 'type': 'bool'},
        'is_permission_controlled': {'key': 'isPermissionControlled', 'type': 'bool'},
        'is_read_receipt': {'key': 'isReadReceipt', 'type': 'bool'},
        'is_signed': {'key': 'isSigned', 'type': 'bool'},
        'is_voicemail': {'key': 'isVoicemail', 'type': 'bool'},
        'message_action_flag': {'key': 'messageActionFlag', 'type': 'str'},
        'not_sent_to_me': {'key': 'notSentToMe', 'type': 'bool'},
        'recipient_contains': {'key': 'recipientContains', 'type': '[str]'},
        'sender_contains': {'key': 'senderContains', 'type': '[str]'},
        'sensitivity': {'key': 'sensitivity', 'type': 'str'},
        'sent_cc_me': {'key': 'sentCcMe', 'type': 'bool'},
        'sent_only_to_me': {'key': 'sentOnlyToMe', 'type': 'bool'},
        'sent_to_addresses': {'key': 'sentToAddresses', 'type': '[microsoftgraphrecipient]'},
        'sent_to_me': {'key': 'sentToMe', 'type': 'bool'},
        'sent_to_or_cc_me': {'key': 'sentToOrCcMe', 'type': 'bool'},
        'subject_contains': {'key': 'subjectContains', 'type': '[str]'},
        'within_size_range': {'key': 'withinSizeRange', 'type': 'microsoftgraphsizerange'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        body_contains: Optional[List[str]] = None,
        body_or_subject_contains: Optional[List[str]] = None,
        categories: Optional[List[str]] = None,
        from_addresses: Optional[List["microsoftgraphrecipient"]] = None,
        has_attachments: Optional[bool] = None,
        header_contains: Optional[List[str]] = None,
        importance: Optional[Union[str, "Microsoftgraphimportance"]] = None,
        is_approval_request: Optional[bool] = None,
        is_automatic_forward: Optional[bool] = None,
        is_automatic_reply: Optional[bool] = None,
        is_encrypted: Optional[bool] = None,
        is_meeting_request: Optional[bool] = None,
        is_meeting_response: Optional[bool] = None,
        is_non_delivery_report: Optional[bool] = None,
        is_permission_controlled: Optional[bool] = None,
        is_read_receipt: Optional[bool] = None,
        is_signed: Optional[bool] = None,
        is_voicemail: Optional[bool] = None,
        message_action_flag: Optional[Union[str, "Microsoftgraphmessageactionflag"]] = None,
        not_sent_to_me: Optional[bool] = None,
        recipient_contains: Optional[List[str]] = None,
        sender_contains: Optional[List[str]] = None,
        sensitivity: Optional[Union[str, "Microsoftgraphsensitivity"]] = None,
        sent_cc_me: Optional[bool] = None,
        sent_only_to_me: Optional[bool] = None,
        sent_to_addresses: Optional[List["microsoftgraphrecipient"]] = None,
        sent_to_me: Optional[bool] = None,
        sent_to_or_cc_me: Optional[bool] = None,
        subject_contains: Optional[List[str]] = None,
        within_size_range: Optional["microsoftgraphsizerange"] = None,
        **kwargs
    ):
        super(microsoftgraphmessagerulepredicates, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.body_contains = body_contains
        self.body_or_subject_contains = body_or_subject_contains
        self.categories = categories
        self.from_addresses = from_addresses
        self.has_attachments = has_attachments
        self.header_contains = header_contains
        self.importance = importance
        self.is_approval_request = is_approval_request
        self.is_automatic_forward = is_automatic_forward
        self.is_automatic_reply = is_automatic_reply
        self.is_encrypted = is_encrypted
        self.is_meeting_request = is_meeting_request
        self.is_meeting_response = is_meeting_response
        self.is_non_delivery_report = is_non_delivery_report
        self.is_permission_controlled = is_permission_controlled
        self.is_read_receipt = is_read_receipt
        self.is_signed = is_signed
        self.is_voicemail = is_voicemail
        self.message_action_flag = message_action_flag
        self.not_sent_to_me = not_sent_to_me
        self.recipient_contains = recipient_contains
        self.sender_contains = sender_contains
        self.sensitivity = sensitivity
        self.sent_cc_me = sent_cc_me
        self.sent_only_to_me = sent_only_to_me
        self.sent_to_addresses = sent_to_addresses
        self.sent_to_me = sent_to_me
        self.sent_to_or_cc_me = sent_to_or_cc_me
        self.subject_contains = subject_contains
        self.within_size_range = within_size_range


class microsoftgraphmultivaluelegacyextendedproperty(microsoftgraphentity):
    """multiValueLegacyExtendedProperty.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value: A collection of property values.
    :type value: list[str]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphmultivaluelegacyextendedproperty, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.value = value


class microsoftgraphnamedlocation(microsoftgraphentity):
    """namedLocation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The Timestamp type represents creation date and time of the location
     using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would
     look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param display_name: Human-readable name of the location.
    :type display_name: str
    :param modified_date_time: The Timestamp type represents last modified date and time of the
     location using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1,
     2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'modified_date_time': {'key': 'modifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        display_name: Optional[str] = None,
        modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphnamedlocation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.display_name = display_name
        self.modified_date_time = modified_date_time


class microsoftgraphonenoteentitybasemodel(microsoftgraphentity):
    """onenoteEntityBaseModel.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'self_property': {'key': 'self', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        self_property: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteentitybasemodel, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.self_property = self_property


class microsoftgraphonenoteentityschemaobjectmodel(microsoftgraphonenoteentitybasemodel):
    """onenoteEntitySchemaObjectModel.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteentityschemaobjectmodel, self).__init__(id=id, self_property=self_property, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time


class microsoftgraphonenoteentityhierarchymodel(microsoftgraphonenoteentityschemaobjectmodel):
    """onenoteEntityHierarchyModel.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param display_name: The name of the notebook.
    :type display_name: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The date and time when the notebook was last modified. The
     timestamp represents date and time information using ISO 8601 format and is always in UTC time.
     For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-
     only.
    :type last_modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        display_name: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteentityhierarchymodel, self).__init__(id=id, self_property=self_property, created_date_time=created_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.created_by = created_by
        self.display_name = display_name
        self.last_modified_by = last_modified_by
        self.last_modified_date_time = last_modified_date_time


class microsoftgraphnotebook(microsoftgraphonenoteentityhierarchymodel):
    """notebook.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param display_name: The name of the notebook.
    :type display_name: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The date and time when the notebook was last modified. The
     timestamp represents date and time information using ISO 8601 format and is always in UTC time.
     For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-
     only.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param is_default: Indicates whether this is the user's default notebook. Read-only.
    :type is_default: bool
    :param is_shared: Indicates whether the notebook is shared. If true, the contents of the
     notebook can be seen by people other than the owner. Read-only.
    :type is_shared: bool
    :param links: notebookLinks.
    :type links: ~identity_sign_ins.models.microsoftgraphnotebooklinks
    :param section_groups_url: The URL for the sectionGroups navigation property, which returns all
     the section groups in the notebook. Read-only.
    :type section_groups_url: str
    :param sections_url: The URL for the sections navigation property, which returns all the
     sections in the notebook. Read-only.
    :type sections_url: str
    :param user_role:  Possible values include: "Owner", "Contributor", "None", "Reader".
    :type user_role: str or ~identity_sign_ins.models.Microsoftgraphonenoteuserrole
    :param section_groups: The section groups in the notebook. Read-only. Nullable.
    :type section_groups: list[~identity_sign_ins.models.microsoftgraphsectiongroup]
    :param sections: The sections in the notebook. Read-only. Nullable.
    :type sections: list[~identity_sign_ins.models.microsoftgraphonenotesection]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'is_shared': {'key': 'isShared', 'type': 'bool'},
        'links': {'key': 'links', 'type': 'microsoftgraphnotebooklinks'},
        'section_groups_url': {'key': 'sectionGroupsUrl', 'type': 'str'},
        'sections_url': {'key': 'sectionsUrl', 'type': 'str'},
        'user_role': {'key': 'userRole', 'type': 'str'},
        'section_groups': {'key': 'sectionGroups', 'type': '[microsoftgraphsectiongroup]'},
        'sections': {'key': 'sections', 'type': '[microsoftgraphonenotesection]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        display_name: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        is_default: Optional[bool] = None,
        is_shared: Optional[bool] = None,
        links: Optional["microsoftgraphnotebooklinks"] = None,
        section_groups_url: Optional[str] = None,
        sections_url: Optional[str] = None,
        user_role: Optional[Union[str, "Microsoftgraphonenoteuserrole"]] = None,
        section_groups: Optional[List["microsoftgraphsectiongroup"]] = None,
        sections: Optional[List["microsoftgraphonenotesection"]] = None,
        **kwargs
    ):
        super(microsoftgraphnotebook, self).__init__(id=id, self_property=self_property, created_date_time=created_date_time, created_by=created_by, display_name=display_name, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.is_default = is_default
        self.is_shared = is_shared
        self.links = links
        self.section_groups_url = section_groups_url
        self.sections_url = sections_url
        self.user_role = user_role
        self.section_groups = section_groups
        self.sections = sections


class microsoftgraphnotebooklinks(msrest.serialization.Model):
    """notebookLinks.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param one_note_client_url: externalLink.
    :type one_note_client_url: ~identity_sign_ins.models.microsoftgraphexternallink
    :param one_note_web_url: externalLink.
    :type one_note_web_url: ~identity_sign_ins.models.microsoftgraphexternallink
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'one_note_client_url': {'key': 'oneNoteClientUrl', 'type': 'microsoftgraphexternallink'},
        'one_note_web_url': {'key': 'oneNoteWebUrl', 'type': 'microsoftgraphexternallink'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        one_note_client_url: Optional["microsoftgraphexternallink"] = None,
        one_note_web_url: Optional["microsoftgraphexternallink"] = None,
        **kwargs
    ):
        super(microsoftgraphnotebooklinks, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.one_note_client_url = one_note_client_url
        self.one_note_web_url = one_note_web_url


class microsoftgraphnumbercolumn(msrest.serialization.Model):
    """numberColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param decimal_places: How many decimal places to display. See below for information about the
     possible values.
    :type decimal_places: str
    :param display_as: How the value should be presented in the UX. Must be one of number or
     percentage. If unspecified, treated as number.
    :type display_as: str
    :param maximum: The maximum permitted value.
    :type maximum: float
    :param minimum: The minimum permitted value.
    :type minimum: float
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'decimal_places': {'key': 'decimalPlaces', 'type': 'str'},
        'display_as': {'key': 'displayAs', 'type': 'str'},
        'maximum': {'key': 'maximum', 'type': 'float'},
        'minimum': {'key': 'minimum', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        decimal_places: Optional[str] = None,
        display_as: Optional[str] = None,
        maximum: Optional[float] = None,
        minimum: Optional[float] = None,
        **kwargs
    ):
        super(microsoftgraphnumbercolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.decimal_places = decimal_places
        self.display_as = display_as
        self.maximum = maximum
        self.minimum = minimum


class microsoftgraphoauth2permissiongrant(microsoftgraphentity):
    """oAuth2PermissionGrant.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param client_id: The id of the client service principal for the application which is
     authorized to act on behalf of a signed-in user when accessing an API. Required. Supports
     $filter (eq only).
    :type client_id: str
    :param consent_type: Indicates if authorization is granted for the client application to
     impersonate all users or only a specific user. AllPrincipals indicates authorization to
     impersonate all users. Principal indicates authorization to impersonate a specific user.
     Consent on behalf of all users can be granted by an administrator. Non-admin users may be
     authorized to consent on behalf of themselves in some cases, for some delegated permissions.
     Required. Supports $filter (eq only).
    :type consent_type: str
    :param principal_id: The id of the user on behalf of whom the client is authorized to access
     the resource, when consentType is Principal. If consentType is AllPrincipals this value is
     null. Required when consentType is Principal.
    :type principal_id: str
    :param resource_id: The id of the resource service principal to which access is authorized.
     This identifies the API which the client is authorized to attempt to call on behalf of a
     signed-in user.
    :type resource_id: str
    :param scope: A space-separated list of the claim values for delegated permissions which should
     be included in access tokens for the resource application (the API). For example, openid
     User.Read GroupMember.Read.All. Each claim value should match the value field of one of the
     delegated permissions defined by the API, listed in the publishedPermissionScopes property of
     the resource service principal.
    :type scope: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'consent_type': {'key': 'consentType', 'type': 'str'},
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'scope': {'key': 'scope', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        client_id: Optional[str] = None,
        consent_type: Optional[str] = None,
        principal_id: Optional[str] = None,
        resource_id: Optional[str] = None,
        scope: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphoauth2permissiongrant, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.client_id = client_id
        self.consent_type = consent_type
        self.principal_id = principal_id
        self.resource_id = resource_id
        self.scope = scope


class microsoftgraphobjectidentity(msrest.serialization.Model):
    """objectIdentity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param issuer: Specifies the issuer of the identity, for example facebook.com.For local
     accounts (where signInType is not federated), this property is the local B2C tenant default
     domain name, for example contoso.onmicrosoft.com.For external users from other Azure AD
     organization, this will be the domain of the federated organization, for example
     contoso.com.Supports $filter. 512 character limit.
    :type issuer: str
    :param issuer_assigned_id: Specifies the unique identifier assigned to the user by the issuer.
     The combination of issuer and issuerAssignedId must be unique within the organization.
     Represents the sign-in name for the user, when signInType is set to emailAddress or userName
     (also known as local accounts).When signInType is set to: emailAddress, (or starts with
     emailAddress like emailAddress1) issuerAssignedId must be a valid email addressuserName,
     issuerAssignedId must be a valid local part of an email addressSupports $filter. 512 character
     limit.
    :type issuer_assigned_id: str
    :param sign_in_type: Specifies the user sign-in types in your directory, such as emailAddress,
     userName or federated. Here, federated represents a unique identifier for a user from an
     issuer, that can be in any format chosen by the issuer. Additional validation is enforced on
     issuerAssignedId when the sign-in type is set to emailAddress or userName. This property can
     also be set to any custom string.
    :type sign_in_type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'issuer': {'key': 'issuer', 'type': 'str'},
        'issuer_assigned_id': {'key': 'issuerAssignedId', 'type': 'str'},
        'sign_in_type': {'key': 'signInType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        issuer: Optional[str] = None,
        issuer_assigned_id: Optional[str] = None,
        sign_in_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphobjectidentity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.issuer = issuer
        self.issuer_assigned_id = issuer_assigned_id
        self.sign_in_type = sign_in_type


class microsoftgraphschedulechangerequest(microsoftgraphchangetrackedentity):
    """scheduleChangeRequest.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param assigned_to:  Possible values include: "sender", "recipient", "manager", "system",
     "unknownFutureValue".
    :type assigned_to: str or ~identity_sign_ins.models.Microsoftgraphschedulechangerequestactor
    :param manager_action_date_time:
    :type manager_action_date_time: ~datetime.datetime
    :param manager_action_message:
    :type manager_action_message: str
    :param manager_user_id:
    :type manager_user_id: str
    :param sender_date_time:
    :type sender_date_time: ~datetime.datetime
    :param sender_message:
    :type sender_message: str
    :param sender_user_id:
    :type sender_user_id: str
    :param state:  Possible values include: "pending", "approved", "declined",
     "unknownFutureValue".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphschedulechangestate
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'assigned_to': {'key': 'assignedTo', 'type': 'str'},
        'manager_action_date_time': {'key': 'managerActionDateTime', 'type': 'iso-8601'},
        'manager_action_message': {'key': 'managerActionMessage', 'type': 'str'},
        'manager_user_id': {'key': 'managerUserId', 'type': 'str'},
        'sender_date_time': {'key': 'senderDateTime', 'type': 'iso-8601'},
        'sender_message': {'key': 'senderMessage', 'type': 'str'},
        'sender_user_id': {'key': 'senderUserId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        assigned_to: Optional[Union[str, "Microsoftgraphschedulechangerequestactor"]] = None,
        manager_action_date_time: Optional[datetime.datetime] = None,
        manager_action_message: Optional[str] = None,
        manager_user_id: Optional[str] = None,
        sender_date_time: Optional[datetime.datetime] = None,
        sender_message: Optional[str] = None,
        sender_user_id: Optional[str] = None,
        state: Optional[Union[str, "Microsoftgraphschedulechangestate"]] = None,
        **kwargs
    ):
        super(microsoftgraphschedulechangerequest, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.assigned_to = assigned_to
        self.manager_action_date_time = manager_action_date_time
        self.manager_action_message = manager_action_message
        self.manager_user_id = manager_user_id
        self.sender_date_time = sender_date_time
        self.sender_message = sender_message
        self.sender_user_id = sender_user_id
        self.state = state


class microsoftgraphoffershiftrequest(microsoftgraphschedulechangerequest):
    """offerShiftRequest.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param assigned_to:  Possible values include: "sender", "recipient", "manager", "system",
     "unknownFutureValue".
    :type assigned_to: str or ~identity_sign_ins.models.Microsoftgraphschedulechangerequestactor
    :param manager_action_date_time:
    :type manager_action_date_time: ~datetime.datetime
    :param manager_action_message:
    :type manager_action_message: str
    :param manager_user_id:
    :type manager_user_id: str
    :param sender_date_time:
    :type sender_date_time: ~datetime.datetime
    :param sender_message:
    :type sender_message: str
    :param sender_user_id:
    :type sender_user_id: str
    :param state:  Possible values include: "pending", "approved", "declined",
     "unknownFutureValue".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphschedulechangestate
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param recipient_action_date_time: The Timestamp type represents date and time information
     using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would
     look like this: '2014-01-01T00:00:00Z'.
    :type recipient_action_date_time: ~datetime.datetime
    :param recipient_action_message: Custom message sent by recipient of the offer shift request.
    :type recipient_action_message: str
    :param recipient_user_id: User ID of the recipient of the offer shift request.
    :type recipient_user_id: str
    :param sender_shift_id: User ID of the sender of the offer shift request.
    :type sender_shift_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'assigned_to': {'key': 'assignedTo', 'type': 'str'},
        'manager_action_date_time': {'key': 'managerActionDateTime', 'type': 'iso-8601'},
        'manager_action_message': {'key': 'managerActionMessage', 'type': 'str'},
        'manager_user_id': {'key': 'managerUserId', 'type': 'str'},
        'sender_date_time': {'key': 'senderDateTime', 'type': 'iso-8601'},
        'sender_message': {'key': 'senderMessage', 'type': 'str'},
        'sender_user_id': {'key': 'senderUserId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'recipient_action_date_time': {'key': 'recipientActionDateTime', 'type': 'iso-8601'},
        'recipient_action_message': {'key': 'recipientActionMessage', 'type': 'str'},
        'recipient_user_id': {'key': 'recipientUserId', 'type': 'str'},
        'sender_shift_id': {'key': 'senderShiftId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        assigned_to: Optional[Union[str, "Microsoftgraphschedulechangerequestactor"]] = None,
        manager_action_date_time: Optional[datetime.datetime] = None,
        manager_action_message: Optional[str] = None,
        manager_user_id: Optional[str] = None,
        sender_date_time: Optional[datetime.datetime] = None,
        sender_message: Optional[str] = None,
        sender_user_id: Optional[str] = None,
        state: Optional[Union[str, "Microsoftgraphschedulechangestate"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        recipient_action_date_time: Optional[datetime.datetime] = None,
        recipient_action_message: Optional[str] = None,
        recipient_user_id: Optional[str] = None,
        sender_shift_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphoffershiftrequest, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, assigned_to=assigned_to, manager_action_date_time=manager_action_date_time, manager_action_message=manager_action_message, manager_user_id=manager_user_id, sender_date_time=sender_date_time, sender_message=sender_message, sender_user_id=sender_user_id, state=state, **kwargs)
        self.additional_properties = additional_properties
        self.recipient_action_date_time = recipient_action_date_time
        self.recipient_action_message = recipient_action_message
        self.recipient_user_id = recipient_user_id
        self.sender_shift_id = sender_shift_id


class microsoftgraphofficegraphinsights(microsoftgraphentity):
    """officeGraphInsights.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param shared: Calculated relationship identifying documents shared with or by the user. This
     includes URLs, file attachments, and reference attachments to OneDrive for Business and
     SharePoint files found in Outlook messages and meetings. This also includes URLs and reference
     attachments to Teams conversations. Ordered by recency of share.
    :type shared: list[~identity_sign_ins.models.microsoftgraphsharedinsight]
    :param trending: Calculated relationship identifying documents trending around a user. Trending
     documents are calculated based on activity of the user's closest network of people and include
     files stored in OneDrive for Business and SharePoint. Trending insights help the user to
     discover potentially useful content that the user has access to, but has never viewed before.
    :type trending: list[~identity_sign_ins.models.microsoftgraphtrending]
    :param used: Calculated relationship identifying the latest documents viewed or modified by a
     user, including OneDrive for Business and SharePoint documents, ranked by recency of use.
    :type used: list[~identity_sign_ins.models.microsoftgraphusedinsight]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'shared': {'key': 'shared', 'type': '[microsoftgraphsharedinsight]'},
        'trending': {'key': 'trending', 'type': '[microsoftgraphtrending]'},
        'used': {'key': 'used', 'type': '[microsoftgraphusedinsight]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        shared: Optional[List["microsoftgraphsharedinsight"]] = None,
        trending: Optional[List["microsoftgraphtrending"]] = None,
        used: Optional[List["microsoftgraphusedinsight"]] = None,
        **kwargs
    ):
        super(microsoftgraphofficegraphinsights, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.shared = shared
        self.trending = trending
        self.used = used


class microsoftgraphonenote(microsoftgraphentity):
    """onenote.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param notebooks: The collection of OneNote notebooks that are owned by the user or group.
     Read-only. Nullable.
    :type notebooks: list[~identity_sign_ins.models.microsoftgraphnotebook]
    :param operations: The status of OneNote operations. Getting an operations collection is not
     supported, but you can get the status of long-running operations if the Operation-Location
     header is returned in the response. Read-only. Nullable.
    :type operations: list[~identity_sign_ins.models.microsoftgraphonenoteoperation]
    :param pages: The pages in all OneNote notebooks that are owned by the user or group.  Read-
     only. Nullable.
    :type pages: list[~identity_sign_ins.models.microsoftgraphonenotepage]
    :param resources: The image and other file resources in OneNote pages. Getting a resources
     collection is not supported, but you can get the binary content of a specific resource. Read-
     only. Nullable.
    :type resources: list[~identity_sign_ins.models.microsoftgraphonenoteresource]
    :param section_groups: The section groups in all OneNote notebooks that are owned by the user
     or group.  Read-only. Nullable.
    :type section_groups: list[~identity_sign_ins.models.microsoftgraphsectiongroup]
    :param sections: The sections in all OneNote notebooks that are owned by the user or group.
     Read-only. Nullable.
    :type sections: list[~identity_sign_ins.models.microsoftgraphonenotesection]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'notebooks': {'key': 'notebooks', 'type': '[microsoftgraphnotebook]'},
        'operations': {'key': 'operations', 'type': '[microsoftgraphonenoteoperation]'},
        'pages': {'key': 'pages', 'type': '[microsoftgraphonenotepage]'},
        'resources': {'key': 'resources', 'type': '[microsoftgraphonenoteresource]'},
        'section_groups': {'key': 'sectionGroups', 'type': '[microsoftgraphsectiongroup]'},
        'sections': {'key': 'sections', 'type': '[microsoftgraphonenotesection]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        notebooks: Optional[List["microsoftgraphnotebook"]] = None,
        operations: Optional[List["microsoftgraphonenoteoperation"]] = None,
        pages: Optional[List["microsoftgraphonenotepage"]] = None,
        resources: Optional[List["microsoftgraphonenoteresource"]] = None,
        section_groups: Optional[List["microsoftgraphsectiongroup"]] = None,
        sections: Optional[List["microsoftgraphonenotesection"]] = None,
        **kwargs
    ):
        super(microsoftgraphonenote, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.notebooks = notebooks
        self.operations = operations
        self.pages = pages
        self.resources = resources
        self.section_groups = section_groups
        self.sections = sections


class microsoftgraphoperation(microsoftgraphentity):
    """operation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The start time of the operation.
    :type created_date_time: ~datetime.datetime
    :param last_action_date_time: The time of the last action of the operation.
    :type last_action_date_time: ~datetime.datetime
    :param status:  Possible values include: "NotStarted", "Running", "Completed", "Failed".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphoperationstatus
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_action_date_time': {'key': 'lastActionDateTime', 'type': 'iso-8601'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_action_date_time: Optional[datetime.datetime] = None,
        status: Optional[Union[str, "Microsoftgraphoperationstatus"]] = None,
        **kwargs
    ):
        super(microsoftgraphoperation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.last_action_date_time = last_action_date_time
        self.status = status


class microsoftgraphonenoteoperation(microsoftgraphoperation):
    """onenoteOperation.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The start time of the operation.
    :type created_date_time: ~datetime.datetime
    :param last_action_date_time: The time of the last action of the operation.
    :type last_action_date_time: ~datetime.datetime
    :param status:  Possible values include: "NotStarted", "Running", "Completed", "Failed".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphoperationstatus
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param error: onenoteOperationError.
    :type error: ~identity_sign_ins.models.microsoftgraphonenoteoperationerror
    :param percent_complete: The operation percent complete if the operation is still in running
     status.
    :type percent_complete: str
    :param resource_id: The resource id.
    :type resource_id: str
    :param resource_location: The resource URI for the object. For example, the resource URI for a
     copied page or section.
    :type resource_location: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_action_date_time': {'key': 'lastActionDateTime', 'type': 'iso-8601'},
        'status': {'key': 'status', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'error': {'key': 'error', 'type': 'microsoftgraphonenoteoperationerror'},
        'percent_complete': {'key': 'percentComplete', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'resource_location': {'key': 'resourceLocation', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_action_date_time: Optional[datetime.datetime] = None,
        status: Optional[Union[str, "Microsoftgraphoperationstatus"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        error: Optional["microsoftgraphonenoteoperationerror"] = None,
        percent_complete: Optional[str] = None,
        resource_id: Optional[str] = None,
        resource_location: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteoperation, self).__init__(id=id, created_date_time=created_date_time, last_action_date_time=last_action_date_time, status=status, **kwargs)
        self.additional_properties = additional_properties
        self.error = error
        self.percent_complete = percent_complete
        self.resource_id = resource_id
        self.resource_location = resource_location


class microsoftgraphonenoteoperationerror(msrest.serialization.Model):
    """onenoteOperationError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: The error code.
    :type code: str
    :param message: The error message.
    :type message: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        message: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteoperationerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.message = message


class microsoftgraphonenotepage(microsoftgraphonenoteentityschemaobjectmodel):
    """onenotePage.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The page's HTML content.
    :type content: bytes
    :param content_url: The URL for the page's HTML content.  Read-only.
    :type content_url: str
    :param created_by_app_id: The unique identifier of the application that created the page. Read-
     only.
    :type created_by_app_id: str
    :param last_modified_date_time: The date and time when the page was last modified. The
     timestamp represents date and time information using ISO 8601 format and is always in UTC time.
     For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-
     only.
    :type last_modified_date_time: ~datetime.datetime
    :param level: The indentation level of the page. Read-only.
    :type level: int
    :param links: pageLinks.
    :type links: ~identity_sign_ins.models.microsoftgraphpagelinks
    :param order: The order of the page within its parent section. Read-only.
    :type order: int
    :param title: The title of the page.
    :type title: str
    :param user_tags:
    :type user_tags: list[str]
    :param parent_notebook: notebook.
    :type parent_notebook: ~identity_sign_ins.models.microsoftgraphnotebook
    :param parent_section: onenoteSection.
    :type parent_section: ~identity_sign_ins.models.microsoftgraphonenotesection
    """

    _validation = {
        'level': {'maximum': 2147483647, 'minimum': -2147483648},
        'order': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'base64'},
        'content_url': {'key': 'contentUrl', 'type': 'str'},
        'created_by_app_id': {'key': 'createdByAppId', 'type': 'str'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'level': {'key': 'level', 'type': 'int'},
        'links': {'key': 'links', 'type': 'microsoftgraphpagelinks'},
        'order': {'key': 'order', 'type': 'int'},
        'title': {'key': 'title', 'type': 'str'},
        'user_tags': {'key': 'userTags', 'type': '[str]'},
        'parent_notebook': {'key': 'parentNotebook', 'type': 'microsoftgraphnotebook'},
        'parent_section': {'key': 'parentSection', 'type': 'microsoftgraphonenotesection'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[bytes] = None,
        content_url: Optional[str] = None,
        created_by_app_id: Optional[str] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        level: Optional[int] = None,
        links: Optional["microsoftgraphpagelinks"] = None,
        order: Optional[int] = None,
        title: Optional[str] = None,
        user_tags: Optional[List[str]] = None,
        parent_notebook: Optional["microsoftgraphnotebook"] = None,
        parent_section: Optional["microsoftgraphonenotesection"] = None,
        **kwargs
    ):
        super(microsoftgraphonenotepage, self).__init__(id=id, self_property=self_property, created_date_time=created_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_url = content_url
        self.created_by_app_id = created_by_app_id
        self.last_modified_date_time = last_modified_date_time
        self.level = level
        self.links = links
        self.order = order
        self.title = title
        self.user_tags = user_tags
        self.parent_notebook = parent_notebook
        self.parent_section = parent_section


class microsoftgraphonenoteresource(microsoftgraphonenoteentitybasemodel):
    """onenoteResource.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content stream.
    :type content: bytes
    :param content_url: The URL for downloading the content.
    :type content_url: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'base64'},
        'content_url': {'key': 'contentUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[bytes] = None,
        content_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonenoteresource, self).__init__(id=id, self_property=self_property, **kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_url = content_url


class microsoftgraphonenotesection(microsoftgraphonenoteentityhierarchymodel):
    """onenoteSection.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param display_name: The name of the notebook.
    :type display_name: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The date and time when the notebook was last modified. The
     timestamp represents date and time information using ISO 8601 format and is always in UTC time.
     For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-
     only.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param is_default: Indicates whether this is the user's default section. Read-only.
    :type is_default: bool
    :param links: sectionLinks.
    :type links: ~identity_sign_ins.models.microsoftgraphsectionlinks
    :param pages_url: The pages endpoint where you can get details for all the pages in the
     section. Read-only.
    :type pages_url: str
    :param pages: The collection of pages in the section.  Read-only. Nullable.
    :type pages: list[~identity_sign_ins.models.microsoftgraphonenotepage]
    :param parent_notebook: notebook.
    :type parent_notebook: ~identity_sign_ins.models.microsoftgraphnotebook
    :param parent_section_group: sectionGroup.
    :type parent_section_group: ~identity_sign_ins.models.microsoftgraphsectiongroup
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'links': {'key': 'links', 'type': 'microsoftgraphsectionlinks'},
        'pages_url': {'key': 'pagesUrl', 'type': 'str'},
        'pages': {'key': 'pages', 'type': '[microsoftgraphonenotepage]'},
        'parent_notebook': {'key': 'parentNotebook', 'type': 'microsoftgraphnotebook'},
        'parent_section_group': {'key': 'parentSectionGroup', 'type': 'microsoftgraphsectiongroup'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        display_name: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        is_default: Optional[bool] = None,
        links: Optional["microsoftgraphsectionlinks"] = None,
        pages_url: Optional[str] = None,
        pages: Optional[List["microsoftgraphonenotepage"]] = None,
        parent_notebook: Optional["microsoftgraphnotebook"] = None,
        parent_section_group: Optional["microsoftgraphsectiongroup"] = None,
        **kwargs
    ):
        super(microsoftgraphonenotesection, self).__init__(id=id, self_property=self_property, created_date_time=created_date_time, created_by=created_by, display_name=display_name, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.is_default = is_default
        self.links = links
        self.pages_url = pages_url
        self.pages = pages
        self.parent_notebook = parent_notebook
        self.parent_section_group = parent_section_group


class microsoftgraphonlinemeeting(microsoftgraphentity):
    """onlineMeeting.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param audio_conferencing: audioConferencing.
    :type audio_conferencing: ~identity_sign_ins.models.microsoftgraphaudioconferencing
    :param chat_info: chatInfo.
    :type chat_info: ~identity_sign_ins.models.microsoftgraphchatinfo
    :param creation_date_time: The meeting creation time in UTC. Read-only.
    :type creation_date_time: ~datetime.datetime
    :param end_date_time: The meeting end time in UTC.
    :type end_date_time: ~datetime.datetime
    :param external_id:
    :type external_id: str
    :param join_information: itemBody.
    :type join_information: ~identity_sign_ins.models.microsoftgraphitembody
    :param join_web_url: The join URL of the online meeting. Read-only.
    :type join_web_url: str
    :param participants: meetingParticipants.
    :type participants: ~identity_sign_ins.models.microsoftgraphmeetingparticipants
    :param start_date_time: The meeting start time in UTC.
    :type start_date_time: ~datetime.datetime
    :param subject: The subject of the online meeting.
    :type subject: str
    :param video_teleconference_id: The video teleconferencing ID. Read-only.
    :type video_teleconference_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'audio_conferencing': {'key': 'audioConferencing', 'type': 'microsoftgraphaudioconferencing'},
        'chat_info': {'key': 'chatInfo', 'type': 'microsoftgraphchatinfo'},
        'creation_date_time': {'key': 'creationDateTime', 'type': 'iso-8601'},
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'external_id': {'key': 'externalId', 'type': 'str'},
        'join_information': {'key': 'joinInformation', 'type': 'microsoftgraphitembody'},
        'join_web_url': {'key': 'joinWebUrl', 'type': 'str'},
        'participants': {'key': 'participants', 'type': 'microsoftgraphmeetingparticipants'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'subject': {'key': 'subject', 'type': 'str'},
        'video_teleconference_id': {'key': 'videoTeleconferenceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        audio_conferencing: Optional["microsoftgraphaudioconferencing"] = None,
        chat_info: Optional["microsoftgraphchatinfo"] = None,
        creation_date_time: Optional[datetime.datetime] = None,
        end_date_time: Optional[datetime.datetime] = None,
        external_id: Optional[str] = None,
        join_information: Optional["microsoftgraphitembody"] = None,
        join_web_url: Optional[str] = None,
        participants: Optional["microsoftgraphmeetingparticipants"] = None,
        start_date_time: Optional[datetime.datetime] = None,
        subject: Optional[str] = None,
        video_teleconference_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonlinemeeting, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.audio_conferencing = audio_conferencing
        self.chat_info = chat_info
        self.creation_date_time = creation_date_time
        self.end_date_time = end_date_time
        self.external_id = external_id
        self.join_information = join_information
        self.join_web_url = join_web_url
        self.participants = participants
        self.start_date_time = start_date_time
        self.subject = subject
        self.video_teleconference_id = video_teleconference_id


class microsoftgraphonlinemeetinginfo(msrest.serialization.Model):
    """onlineMeetingInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param conference_id: The ID of the conference.
    :type conference_id: str
    :param join_url: The external link that launches the online meeting. This is a URL that clients
     will launch into a browser and will redirect the user to join the meeting.
    :type join_url: str
    :param phones: All of the phone numbers associated with this conference.
    :type phones: list[~identity_sign_ins.models.microsoftgraphphone]
    :param quick_dial: The pre-formatted quickdial for this call.
    :type quick_dial: str
    :param toll_free_numbers: The toll free numbers that can be used to join the conference.
    :type toll_free_numbers: list[str]
    :param toll_number: The toll number that can be used to join the conference.
    :type toll_number: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'conference_id': {'key': 'conferenceId', 'type': 'str'},
        'join_url': {'key': 'joinUrl', 'type': 'str'},
        'phones': {'key': 'phones', 'type': '[microsoftgraphphone]'},
        'quick_dial': {'key': 'quickDial', 'type': 'str'},
        'toll_free_numbers': {'key': 'tollFreeNumbers', 'type': '[str]'},
        'toll_number': {'key': 'tollNumber', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        conference_id: Optional[str] = None,
        join_url: Optional[str] = None,
        phones: Optional[List["microsoftgraphphone"]] = None,
        quick_dial: Optional[str] = None,
        toll_free_numbers: Optional[List[str]] = None,
        toll_number: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonlinemeetinginfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.conference_id = conference_id
        self.join_url = join_url
        self.phones = phones
        self.quick_dial = quick_dial
        self.toll_free_numbers = toll_free_numbers
        self.toll_number = toll_number


class microsoftgraphonpremisesextensionattributes(msrest.serialization.Model):
    """onPremisesExtensionAttributes.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param extension_attribute1: First customizable extension attribute.
    :type extension_attribute1: str
    :param extension_attribute10: Tenth customizable extension attribute.
    :type extension_attribute10: str
    :param extension_attribute11: Eleventh customizable extension attribute.
    :type extension_attribute11: str
    :param extension_attribute12: Twelfth customizable extension attribute.
    :type extension_attribute12: str
    :param extension_attribute13: Thirteenth customizable extension attribute.
    :type extension_attribute13: str
    :param extension_attribute14: Fourteenth customizable extension attribute.
    :type extension_attribute14: str
    :param extension_attribute15: Fifteenth customizable extension attribute.
    :type extension_attribute15: str
    :param extension_attribute2: Second customizable extension attribute.
    :type extension_attribute2: str
    :param extension_attribute3: Third customizable extension attribute.
    :type extension_attribute3: str
    :param extension_attribute4: Fourth customizable extension attribute.
    :type extension_attribute4: str
    :param extension_attribute5: Fifth customizable extension attribute.
    :type extension_attribute5: str
    :param extension_attribute6: Sixth customizable extension attribute.
    :type extension_attribute6: str
    :param extension_attribute7: Seventh customizable extension attribute.
    :type extension_attribute7: str
    :param extension_attribute8: Eighth customizable extension attribute.
    :type extension_attribute8: str
    :param extension_attribute9: Ninth customizable extension attribute.
    :type extension_attribute9: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'extension_attribute1': {'key': 'extensionAttribute1', 'type': 'str'},
        'extension_attribute10': {'key': 'extensionAttribute10', 'type': 'str'},
        'extension_attribute11': {'key': 'extensionAttribute11', 'type': 'str'},
        'extension_attribute12': {'key': 'extensionAttribute12', 'type': 'str'},
        'extension_attribute13': {'key': 'extensionAttribute13', 'type': 'str'},
        'extension_attribute14': {'key': 'extensionAttribute14', 'type': 'str'},
        'extension_attribute15': {'key': 'extensionAttribute15', 'type': 'str'},
        'extension_attribute2': {'key': 'extensionAttribute2', 'type': 'str'},
        'extension_attribute3': {'key': 'extensionAttribute3', 'type': 'str'},
        'extension_attribute4': {'key': 'extensionAttribute4', 'type': 'str'},
        'extension_attribute5': {'key': 'extensionAttribute5', 'type': 'str'},
        'extension_attribute6': {'key': 'extensionAttribute6', 'type': 'str'},
        'extension_attribute7': {'key': 'extensionAttribute7', 'type': 'str'},
        'extension_attribute8': {'key': 'extensionAttribute8', 'type': 'str'},
        'extension_attribute9': {'key': 'extensionAttribute9', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        extension_attribute1: Optional[str] = None,
        extension_attribute10: Optional[str] = None,
        extension_attribute11: Optional[str] = None,
        extension_attribute12: Optional[str] = None,
        extension_attribute13: Optional[str] = None,
        extension_attribute14: Optional[str] = None,
        extension_attribute15: Optional[str] = None,
        extension_attribute2: Optional[str] = None,
        extension_attribute3: Optional[str] = None,
        extension_attribute4: Optional[str] = None,
        extension_attribute5: Optional[str] = None,
        extension_attribute6: Optional[str] = None,
        extension_attribute7: Optional[str] = None,
        extension_attribute8: Optional[str] = None,
        extension_attribute9: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonpremisesextensionattributes, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.extension_attribute1 = extension_attribute1
        self.extension_attribute10 = extension_attribute10
        self.extension_attribute11 = extension_attribute11
        self.extension_attribute12 = extension_attribute12
        self.extension_attribute13 = extension_attribute13
        self.extension_attribute14 = extension_attribute14
        self.extension_attribute15 = extension_attribute15
        self.extension_attribute2 = extension_attribute2
        self.extension_attribute3 = extension_attribute3
        self.extension_attribute4 = extension_attribute4
        self.extension_attribute5 = extension_attribute5
        self.extension_attribute6 = extension_attribute6
        self.extension_attribute7 = extension_attribute7
        self.extension_attribute8 = extension_attribute8
        self.extension_attribute9 = extension_attribute9


class microsoftgraphonpremisesprovisioningerror(msrest.serialization.Model):
    """onPremisesProvisioningError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param category: Category of the provisioning error. Note: Currently, there is only one
     possible value. Possible value: PropertyConflict - indicates a property value is not unique.
     Other objects contain the same value for the property.
    :type category: str
    :param occurred_date_time: The date and time at which the error occurred.
    :type occurred_date_time: ~datetime.datetime
    :param property_causing_error: Name of the directory property causing the error. Current
     possible values: UserPrincipalName or ProxyAddress.
    :type property_causing_error: str
    :param value: Value of the property causing the error.
    :type value: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'category': {'key': 'category', 'type': 'str'},
        'occurred_date_time': {'key': 'occurredDateTime', 'type': 'iso-8601'},
        'property_causing_error': {'key': 'propertyCausingError', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        category: Optional[str] = None,
        occurred_date_time: Optional[datetime.datetime] = None,
        property_causing_error: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphonpremisesprovisioningerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.category = category
        self.occurred_date_time = occurred_date_time
        self.property_causing_error = property_causing_error
        self.value = value


class microsoftgraphopenshift(microsoftgraphchangetrackedentity):
    """openShift.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param draft_open_shift: openShiftItem.
    :type draft_open_shift: ~identity_sign_ins.models.microsoftgraphopenshiftitem
    :param scheduling_group_id: ID for the scheduling group that the open shift belongs to.
    :type scheduling_group_id: str
    :param shared_open_shift: openShiftItem.
    :type shared_open_shift: ~identity_sign_ins.models.microsoftgraphopenshiftitem
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'draft_open_shift': {'key': 'draftOpenShift', 'type': 'microsoftgraphopenshiftitem'},
        'scheduling_group_id': {'key': 'schedulingGroupId', 'type': 'str'},
        'shared_open_shift': {'key': 'sharedOpenShift', 'type': 'microsoftgraphopenshiftitem'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        draft_open_shift: Optional["microsoftgraphopenshiftitem"] = None,
        scheduling_group_id: Optional[str] = None,
        shared_open_shift: Optional["microsoftgraphopenshiftitem"] = None,
        **kwargs
    ):
        super(microsoftgraphopenshift, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.draft_open_shift = draft_open_shift
        self.scheduling_group_id = scheduling_group_id
        self.shared_open_shift = shared_open_shift


class microsoftgraphopenshiftchangerequest(microsoftgraphschedulechangerequest):
    """openShiftChangeRequest.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param assigned_to:  Possible values include: "sender", "recipient", "manager", "system",
     "unknownFutureValue".
    :type assigned_to: str or ~identity_sign_ins.models.Microsoftgraphschedulechangerequestactor
    :param manager_action_date_time:
    :type manager_action_date_time: ~datetime.datetime
    :param manager_action_message:
    :type manager_action_message: str
    :param manager_user_id:
    :type manager_user_id: str
    :param sender_date_time:
    :type sender_date_time: ~datetime.datetime
    :param sender_message:
    :type sender_message: str
    :param sender_user_id:
    :type sender_user_id: str
    :param state:  Possible values include: "pending", "approved", "declined",
     "unknownFutureValue".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphschedulechangestate
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param open_shift_id: ID for the open shift.
    :type open_shift_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'assigned_to': {'key': 'assignedTo', 'type': 'str'},
        'manager_action_date_time': {'key': 'managerActionDateTime', 'type': 'iso-8601'},
        'manager_action_message': {'key': 'managerActionMessage', 'type': 'str'},
        'manager_user_id': {'key': 'managerUserId', 'type': 'str'},
        'sender_date_time': {'key': 'senderDateTime', 'type': 'iso-8601'},
        'sender_message': {'key': 'senderMessage', 'type': 'str'},
        'sender_user_id': {'key': 'senderUserId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'open_shift_id': {'key': 'openShiftId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        assigned_to: Optional[Union[str, "Microsoftgraphschedulechangerequestactor"]] = None,
        manager_action_date_time: Optional[datetime.datetime] = None,
        manager_action_message: Optional[str] = None,
        manager_user_id: Optional[str] = None,
        sender_date_time: Optional[datetime.datetime] = None,
        sender_message: Optional[str] = None,
        sender_user_id: Optional[str] = None,
        state: Optional[Union[str, "Microsoftgraphschedulechangestate"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        open_shift_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphopenshiftchangerequest, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, assigned_to=assigned_to, manager_action_date_time=manager_action_date_time, manager_action_message=manager_action_message, manager_user_id=manager_user_id, sender_date_time=sender_date_time, sender_message=sender_message, sender_user_id=sender_user_id, state=state, **kwargs)
        self.additional_properties = additional_properties
        self.open_shift_id = open_shift_id


class microsoftgraphscheduleentity(msrest.serialization.Model):
    """scheduleEntity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param end_date_time:
    :type end_date_time: ~datetime.datetime
    :param start_date_time:
    :type start_date_time: ~datetime.datetime
    :param theme:  Possible values include: "white", "blue", "green", "purple", "pink", "yellow",
     "gray", "darkBlue", "darkGreen", "darkPurple", "darkPink", "darkYellow", "unknownFutureValue".
    :type theme: str or ~identity_sign_ins.models.Microsoftgraphscheduleentitytheme
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'theme': {'key': 'theme', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        end_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        theme: Optional[Union[str, "Microsoftgraphscheduleentitytheme"]] = None,
        **kwargs
    ):
        super(microsoftgraphscheduleentity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.end_date_time = end_date_time
        self.start_date_time = start_date_time
        self.theme = theme


class microsoftgraphshiftitem(microsoftgraphscheduleentity):
    """shiftItem.

    :param end_date_time:
    :type end_date_time: ~datetime.datetime
    :param start_date_time:
    :type start_date_time: ~datetime.datetime
    :param theme:  Possible values include: "white", "blue", "green", "purple", "pink", "yellow",
     "gray", "darkBlue", "darkGreen", "darkPurple", "darkPink", "darkYellow", "unknownFutureValue".
    :type theme: str or ~identity_sign_ins.models.Microsoftgraphscheduleentitytheme
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param activities: An incremental part of a shift which can cover details of when and where an
     employee is during their shift. For example, an assignment or a scheduled break or lunch.
     Required.
    :type activities: list[~identity_sign_ins.models.microsoftgraphshiftactivity]
    :param display_name: The shift label of the shiftItem.
    :type display_name: str
    :param notes: The shift notes for the shiftItem.
    :type notes: str
    """

    _attribute_map = {
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'theme': {'key': 'theme', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'activities': {'key': 'activities', 'type': '[microsoftgraphshiftactivity]'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'notes': {'key': 'notes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        end_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        theme: Optional[Union[str, "Microsoftgraphscheduleentitytheme"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        activities: Optional[List["microsoftgraphshiftactivity"]] = None,
        display_name: Optional[str] = None,
        notes: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphshiftitem, self).__init__(end_date_time=end_date_time, start_date_time=start_date_time, theme=theme, **kwargs)
        self.additional_properties = additional_properties
        self.activities = activities
        self.display_name = display_name
        self.notes = notes


class microsoftgraphopenshiftitem(microsoftgraphshiftitem):
    """openShiftItem.

    :param end_date_time:
    :type end_date_time: ~datetime.datetime
    :param start_date_time:
    :type start_date_time: ~datetime.datetime
    :param theme:  Possible values include: "white", "blue", "green", "purple", "pink", "yellow",
     "gray", "darkBlue", "darkGreen", "darkPurple", "darkPink", "darkYellow", "unknownFutureValue".
    :type theme: str or ~identity_sign_ins.models.Microsoftgraphscheduleentitytheme
    :param activities: An incremental part of a shift which can cover details of when and where an
     employee is during their shift. For example, an assignment or a scheduled break or lunch.
     Required.
    :type activities: list[~identity_sign_ins.models.microsoftgraphshiftactivity]
    :param display_name: The shift label of the shiftItem.
    :type display_name: str
    :param notes: The shift notes for the shiftItem.
    :type notes: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param open_slot_count: Count of the number of slots for the given open shift.
    :type open_slot_count: int
    """

    _validation = {
        'open_slot_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'theme': {'key': 'theme', 'type': 'str'},
        'activities': {'key': 'activities', 'type': '[microsoftgraphshiftactivity]'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'notes': {'key': 'notes', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'open_slot_count': {'key': 'openSlotCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        end_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        theme: Optional[Union[str, "Microsoftgraphscheduleentitytheme"]] = None,
        activities: Optional[List["microsoftgraphshiftactivity"]] = None,
        display_name: Optional[str] = None,
        notes: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        open_slot_count: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphopenshiftitem, self).__init__(end_date_time=end_date_time, start_date_time=start_date_time, theme=theme, activities=activities, display_name=display_name, notes=notes, **kwargs)
        self.additional_properties = additional_properties
        self.open_slot_count = open_slot_count


class microsoftgraphoperationerror(msrest.serialization.Model):
    """operationError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: Operation error code.
    :type code: str
    :param message: Operation error message.
    :type message: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        message: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphoperationerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.message = message


class microsoftgraphoutlookcategory(microsoftgraphentity):
    """outlookCategory.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param color:  Possible values include: "preset0", "preset1", "none", "preset2", "preset3",
     "preset4", "preset5", "preset6", "preset7", "preset8", "preset9", "preset10", "preset11",
     "preset12", "preset13", "preset14", "preset15", "preset16", "preset17", "preset18", "preset19",
     "preset20", "preset21", "preset22", "preset23", "preset24".
    :type color: str or ~identity_sign_ins.models.Microsoftgraphcategorycolor
    :param display_name: A unique name that identifies a category in the user's mailbox. After a
     category is created, the name cannot be changed. Read-only.
    :type display_name: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'color': {'key': 'color', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        color: Optional[Union[str, "Microsoftgraphcategorycolor"]] = None,
        display_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphoutlookcategory, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.color = color
        self.display_name = display_name


class microsoftgraphoutlookgeocoordinates(msrest.serialization.Model):
    """outlookGeoCoordinates.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param accuracy: The accuracy of the latitude and longitude. As an example, the accuracy can be
     measured in meters, such as the latitude and longitude are accurate to within 50 meters.
    :type accuracy: float
    :param altitude: The altitude of the location.
    :type altitude: float
    :param altitude_accuracy: The accuracy of the altitude.
    :type altitude_accuracy: float
    :param latitude: The latitude of the location.
    :type latitude: float
    :param longitude: The longitude of the location.
    :type longitude: float
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'accuracy': {'key': 'accuracy', 'type': 'float'},
        'altitude': {'key': 'altitude', 'type': 'float'},
        'altitude_accuracy': {'key': 'altitudeAccuracy', 'type': 'float'},
        'latitude': {'key': 'latitude', 'type': 'float'},
        'longitude': {'key': 'longitude', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        accuracy: Optional[float] = None,
        altitude: Optional[float] = None,
        altitude_accuracy: Optional[float] = None,
        latitude: Optional[float] = None,
        longitude: Optional[float] = None,
        **kwargs
    ):
        super(microsoftgraphoutlookgeocoordinates, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.accuracy = accuracy
        self.altitude = altitude
        self.altitude_accuracy = altitude_accuracy
        self.latitude = latitude
        self.longitude = longitude


class microsoftgraphoutlookuser(microsoftgraphentity):
    """outlookUser.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param master_categories: A list of categories defined for the user.
    :type master_categories: list[~identity_sign_ins.models.microsoftgraphoutlookcategory]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'master_categories': {'key': 'masterCategories', 'type': '[microsoftgraphoutlookcategory]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        master_categories: Optional[List["microsoftgraphoutlookcategory"]] = None,
        **kwargs
    ):
        super(microsoftgraphoutlookuser, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.master_categories = master_categories


class microsoftgraphpackage(msrest.serialization.Model):
    """package.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param type: A string indicating the type of package. While oneNote is the only currently
     defined value, you should expect other package types to be returned and handle them
     accordingly.
    :type type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpackage, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.type = type


class microsoftgraphpagelinks(msrest.serialization.Model):
    """pageLinks.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param one_note_client_url: externalLink.
    :type one_note_client_url: ~identity_sign_ins.models.microsoftgraphexternallink
    :param one_note_web_url: externalLink.
    :type one_note_web_url: ~identity_sign_ins.models.microsoftgraphexternallink
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'one_note_client_url': {'key': 'oneNoteClientUrl', 'type': 'microsoftgraphexternallink'},
        'one_note_web_url': {'key': 'oneNoteWebUrl', 'type': 'microsoftgraphexternallink'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        one_note_client_url: Optional["microsoftgraphexternallink"] = None,
        one_note_web_url: Optional["microsoftgraphexternallink"] = None,
        **kwargs
    ):
        super(microsoftgraphpagelinks, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.one_note_client_url = one_note_client_url
        self.one_note_web_url = one_note_web_url


class microsoftgraphpasswordprofile(msrest.serialization.Model):
    """passwordProfile.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param force_change_password_next_sign_in: true if the user must change her password on the
     next login; otherwise false.
    :type force_change_password_next_sign_in: bool
    :param force_change_password_next_sign_in_with_mfa: If true, at next sign-in, the user must
     perform a multi-factor authentication (MFA) before being forced to change their password. The
     behavior is identical to forceChangePasswordNextSignIn except that the user is required to
     first perform a multi-factor authentication before password change. After a password change,
     this property will be automatically reset to false. If not set, default is false.
    :type force_change_password_next_sign_in_with_mfa: bool
    :param password: The password for the user. This property is required when a user is created.
     It can be updated, but the user will be required to change the password on the next login. The
     password must satisfy minimum requirements as specified by the user’s passwordPolicies
     property. By default, a strong password is required.
    :type password: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'force_change_password_next_sign_in': {'key': 'forceChangePasswordNextSignIn', 'type': 'bool'},
        'force_change_password_next_sign_in_with_mfa': {'key': 'forceChangePasswordNextSignInWithMfa', 'type': 'bool'},
        'password': {'key': 'password', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        force_change_password_next_sign_in: Optional[bool] = None,
        force_change_password_next_sign_in_with_mfa: Optional[bool] = None,
        password: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpasswordprofile, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.force_change_password_next_sign_in = force_change_password_next_sign_in
        self.force_change_password_next_sign_in_with_mfa = force_change_password_next_sign_in_with_mfa
        self.password = password


class microsoftgraphpatternedrecurrence(msrest.serialization.Model):
    """patternedRecurrence.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param pattern: recurrencePattern.
    :type pattern: ~identity_sign_ins.models.microsoftgraphrecurrencepattern
    :param range: recurrenceRange.
    :type range: ~identity_sign_ins.models.microsoftgraphrecurrencerange
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'pattern': {'key': 'pattern', 'type': 'microsoftgraphrecurrencepattern'},
        'range': {'key': 'range', 'type': 'microsoftgraphrecurrencerange'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        pattern: Optional["microsoftgraphrecurrencepattern"] = None,
        range: Optional["microsoftgraphrecurrencerange"] = None,
        **kwargs
    ):
        super(microsoftgraphpatternedrecurrence, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.pattern = pattern
        self.range = range


class microsoftgraphpendingcontentupdate(msrest.serialization.Model):
    """pendingContentUpdate.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param queued_date_time: Date and time the pending binary operation was queued in UTC time.
     Read-only.
    :type queued_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'queued_date_time': {'key': 'queuedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        queued_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphpendingcontentupdate, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.queued_date_time = queued_date_time


class microsoftgraphpendingoperations(msrest.serialization.Model):
    """pendingOperations.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param pending_content_update: pendingContentUpdate.
    :type pending_content_update: ~identity_sign_ins.models.microsoftgraphpendingcontentupdate
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'pending_content_update': {'key': 'pendingContentUpdate', 'type': 'microsoftgraphpendingcontentupdate'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        pending_content_update: Optional["microsoftgraphpendingcontentupdate"] = None,
        **kwargs
    ):
        super(microsoftgraphpendingoperations, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.pending_content_update = pending_content_update


class microsoftgraphpermission(microsoftgraphentity):
    """permission.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param expiration_date_time: A format of yyyy-MM-ddTHH:mm:ssZ of DateTimeOffset indicates the
     expiration time of the permission. DateTime.MinValue indicates there is no expiration set for
     this permission. Optional.
    :type expiration_date_time: ~datetime.datetime
    :param granted_to: identitySet.
    :type granted_to: ~identity_sign_ins.models.microsoftgraphidentityset
    :param granted_to_identities: For link type permissions, the details of the users to whom
     permission was granted. Read-only.
    :type granted_to_identities: list[~identity_sign_ins.models.microsoftgraphidentityset]
    :param has_password: This indicates whether password is set for this permission, it's only
     showing in response. Optional and Read-only and for OneDrive Personal only.
    :type has_password: bool
    :param inherited_from: itemReference.
    :type inherited_from: ~identity_sign_ins.models.microsoftgraphitemreference
    :param invitation: sharingInvitation.
    :type invitation: ~identity_sign_ins.models.microsoftgraphsharinginvitation
    :param link: sharingLink.
    :type link: ~identity_sign_ins.models.microsoftgraphsharinglink
    :param roles: The type of permission, e.g. read. See below for the full list of roles. Read-
     only.
    :type roles: list[str]
    :param share_id: A unique token that can be used to access this shared item via the **shares**
     API. Read-only.
    :type share_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'expiration_date_time': {'key': 'expirationDateTime', 'type': 'iso-8601'},
        'granted_to': {'key': 'grantedTo', 'type': 'microsoftgraphidentityset'},
        'granted_to_identities': {'key': 'grantedToIdentities', 'type': '[microsoftgraphidentityset]'},
        'has_password': {'key': 'hasPassword', 'type': 'bool'},
        'inherited_from': {'key': 'inheritedFrom', 'type': 'microsoftgraphitemreference'},
        'invitation': {'key': 'invitation', 'type': 'microsoftgraphsharinginvitation'},
        'link': {'key': 'link', 'type': 'microsoftgraphsharinglink'},
        'roles': {'key': 'roles', 'type': '[str]'},
        'share_id': {'key': 'shareId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        expiration_date_time: Optional[datetime.datetime] = None,
        granted_to: Optional["microsoftgraphidentityset"] = None,
        granted_to_identities: Optional[List["microsoftgraphidentityset"]] = None,
        has_password: Optional[bool] = None,
        inherited_from: Optional["microsoftgraphitemreference"] = None,
        invitation: Optional["microsoftgraphsharinginvitation"] = None,
        link: Optional["microsoftgraphsharinglink"] = None,
        roles: Optional[List[str]] = None,
        share_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpermission, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.expiration_date_time = expiration_date_time
        self.granted_to = granted_to
        self.granted_to_identities = granted_to_identities
        self.has_password = has_password
        self.inherited_from = inherited_from
        self.invitation = invitation
        self.link = link
        self.roles = roles
        self.share_id = share_id


class microsoftgraphpermissiongrantconditionset(microsoftgraphentity):
    """permissionGrantConditionSet.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param client_application_ids:
    :type client_application_ids: list[str]
    :param client_application_publisher_ids:
    :type client_application_publisher_ids: list[str]
    :param client_applications_from_verified_publisher_only:
    :type client_applications_from_verified_publisher_only: bool
    :param client_application_tenant_ids:
    :type client_application_tenant_ids: list[str]
    :param permission_classification:
    :type permission_classification: str
    :param permissions:
    :type permissions: list[str]
    :param permission_type:  Possible values include: "application", "delegated",
     "delegatedUserConsentable".
    :type permission_type: str or ~identity_sign_ins.models.Microsoftgraphpermissiontype
    :param resource_application:
    :type resource_application: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'client_application_ids': {'key': 'clientApplicationIds', 'type': '[str]'},
        'client_application_publisher_ids': {'key': 'clientApplicationPublisherIds', 'type': '[str]'},
        'client_applications_from_verified_publisher_only': {'key': 'clientApplicationsFromVerifiedPublisherOnly', 'type': 'bool'},
        'client_application_tenant_ids': {'key': 'clientApplicationTenantIds', 'type': '[str]'},
        'permission_classification': {'key': 'permissionClassification', 'type': 'str'},
        'permissions': {'key': 'permissions', 'type': '[str]'},
        'permission_type': {'key': 'permissionType', 'type': 'str'},
        'resource_application': {'key': 'resourceApplication', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        client_application_ids: Optional[List[str]] = None,
        client_application_publisher_ids: Optional[List[str]] = None,
        client_applications_from_verified_publisher_only: Optional[bool] = None,
        client_application_tenant_ids: Optional[List[str]] = None,
        permission_classification: Optional[str] = None,
        permissions: Optional[List[str]] = None,
        permission_type: Optional[Union[str, "Microsoftgraphpermissiontype"]] = None,
        resource_application: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpermissiongrantconditionset, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.client_application_ids = client_application_ids
        self.client_application_publisher_ids = client_application_publisher_ids
        self.client_applications_from_verified_publisher_only = client_applications_from_verified_publisher_only
        self.client_application_tenant_ids = client_application_tenant_ids
        self.permission_classification = permission_classification
        self.permissions = permissions
        self.permission_type = permission_type
        self.resource_application = resource_application


class microsoftgraphpermissiongrantpolicy(microsoftgraphpolicybase):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param excludes:
    :type excludes: list[~identity_sign_ins.models.microsoftgraphpermissiongrantconditionset]
    :param includes:
    :type includes: list[~identity_sign_ins.models.microsoftgraphpermissiongrantconditionset]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'excludes': {'key': 'excludes', 'type': '[microsoftgraphpermissiongrantconditionset]'},
        'includes': {'key': 'includes', 'type': '[microsoftgraphpermissiongrantconditionset]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        excludes: Optional[List["microsoftgraphpermissiongrantconditionset"]] = None,
        includes: Optional[List["microsoftgraphpermissiongrantconditionset"]] = None,
        **kwargs
    ):
        super(microsoftgraphpermissiongrantpolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, **kwargs)
        self.additional_properties = additional_properties
        self.excludes = excludes
        self.includes = includes


class microsoftgraphpersistentbrowsersessioncontrol(microsoftgraphconditionalaccesssessioncontrol):
    """persistentBrowserSessionControl.

    :param is_enabled: Specifies whether the session control is enabled.
    :type is_enabled: bool
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param mode:  Possible values include: "always", "never".
    :type mode: str or ~identity_sign_ins.models.Microsoftgraphpersistentbrowsersessionmode
    """

    _attribute_map = {
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        is_enabled: Optional[bool] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        mode: Optional[Union[str, "Microsoftgraphpersistentbrowsersessionmode"]] = None,
        **kwargs
    ):
        super(microsoftgraphpersistentbrowsersessioncontrol, self).__init__(is_enabled=is_enabled, **kwargs)
        self.additional_properties = additional_properties
        self.mode = mode


class microsoftgraphperson(microsoftgraphentity):
    """person.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param birthday: The person's birthday.
    :type birthday: str
    :param company_name: The name of the person's company.
    :type company_name: str
    :param department: The person's department.
    :type department: str
    :param display_name: The person's display name.
    :type display_name: str
    :param given_name: The person's given name.
    :type given_name: str
    :param im_address: The instant message voice over IP (VOIP) session initiation protocol (SIP)
     address for the user. Read-only.
    :type im_address: str
    :param is_favorite: true if the user has flagged this person as a favorite.
    :type is_favorite: bool
    :param job_title: The person's job title.
    :type job_title: str
    :param office_location: The location of the person's office.
    :type office_location: str
    :param person_notes: Free-form notes that the user has taken about this person.
    :type person_notes: str
    :param person_type: personType.
    :type person_type: ~identity_sign_ins.models.microsoftgraphpersontype
    :param phones: The person's phone numbers.
    :type phones: list[~identity_sign_ins.models.microsoftgraphphone]
    :param postal_addresses: The person's addresses.
    :type postal_addresses: list[~identity_sign_ins.models.microsoftgraphlocation]
    :param profession: The person's profession.
    :type profession: str
    :param scored_email_addresses: The person's email addresses.
    :type scored_email_addresses: list[~identity_sign_ins.models.microsoftgraphscoredemailaddress]
    :param surname: The person's surname.
    :type surname: str
    :param user_principal_name: The user principal name (UPN) of the person. The UPN is an
     Internet-style login name for the person based on the Internet standard RFC 822. By convention,
     this should map to the person's email name. The general format is alias@domain.
    :type user_principal_name: str
    :param websites: The person's websites.
    :type websites: list[~identity_sign_ins.models.microsoftgraphwebsite]
    :param yomi_company: The phonetic Japanese name of the person's company.
    :type yomi_company: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'birthday': {'key': 'birthday', 'type': 'str'},
        'company_name': {'key': 'companyName', 'type': 'str'},
        'department': {'key': 'department', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'given_name': {'key': 'givenName', 'type': 'str'},
        'im_address': {'key': 'imAddress', 'type': 'str'},
        'is_favorite': {'key': 'isFavorite', 'type': 'bool'},
        'job_title': {'key': 'jobTitle', 'type': 'str'},
        'office_location': {'key': 'officeLocation', 'type': 'str'},
        'person_notes': {'key': 'personNotes', 'type': 'str'},
        'person_type': {'key': 'personType', 'type': 'microsoftgraphpersontype'},
        'phones': {'key': 'phones', 'type': '[microsoftgraphphone]'},
        'postal_addresses': {'key': 'postalAddresses', 'type': '[microsoftgraphlocation]'},
        'profession': {'key': 'profession', 'type': 'str'},
        'scored_email_addresses': {'key': 'scoredEmailAddresses', 'type': '[microsoftgraphscoredemailaddress]'},
        'surname': {'key': 'surname', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
        'websites': {'key': 'websites', 'type': '[microsoftgraphwebsite]'},
        'yomi_company': {'key': 'yomiCompany', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        birthday: Optional[str] = None,
        company_name: Optional[str] = None,
        department: Optional[str] = None,
        display_name: Optional[str] = None,
        given_name: Optional[str] = None,
        im_address: Optional[str] = None,
        is_favorite: Optional[bool] = None,
        job_title: Optional[str] = None,
        office_location: Optional[str] = None,
        person_notes: Optional[str] = None,
        person_type: Optional["microsoftgraphpersontype"] = None,
        phones: Optional[List["microsoftgraphphone"]] = None,
        postal_addresses: Optional[List["microsoftgraphlocation"]] = None,
        profession: Optional[str] = None,
        scored_email_addresses: Optional[List["microsoftgraphscoredemailaddress"]] = None,
        surname: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        websites: Optional[List["microsoftgraphwebsite"]] = None,
        yomi_company: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphperson, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.birthday = birthday
        self.company_name = company_name
        self.department = department
        self.display_name = display_name
        self.given_name = given_name
        self.im_address = im_address
        self.is_favorite = is_favorite
        self.job_title = job_title
        self.office_location = office_location
        self.person_notes = person_notes
        self.person_type = person_type
        self.phones = phones
        self.postal_addresses = postal_addresses
        self.profession = profession
        self.scored_email_addresses = scored_email_addresses
        self.surname = surname
        self.user_principal_name = user_principal_name
        self.websites = websites
        self.yomi_company = yomi_company


class microsoftgraphpersonorgroupcolumn(msrest.serialization.Model):
    """personOrGroupColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_multiple_selection: Indicates whether multiple values can be selected from the
     source.
    :type allow_multiple_selection: bool
    :param choose_from_type: Whether to allow selection of people only, or people and groups. Must
     be one of peopleAndGroups or peopleOnly.
    :type choose_from_type: str
    :param display_as: How to display the information about the person or group chosen. See below.
    :type display_as: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_multiple_selection': {'key': 'allowMultipleSelection', 'type': 'bool'},
        'choose_from_type': {'key': 'chooseFromType', 'type': 'str'},
        'display_as': {'key': 'displayAs', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_multiple_selection: Optional[bool] = None,
        choose_from_type: Optional[str] = None,
        display_as: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpersonorgroupcolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_multiple_selection = allow_multiple_selection
        self.choose_from_type = choose_from_type
        self.display_as = display_as


class microsoftgraphpersontype(msrest.serialization.Model):
    """personType.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param class_property: The type of data source, such as Person.
    :type class_property: str
    :param subclass: The secondary type of data source, such as OrganizationUser.
    :type subclass: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'class_property': {'key': 'class', 'type': 'str'},
        'subclass': {'key': 'subclass', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        class_property: Optional[str] = None,
        subclass: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpersontype, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.class_property = class_property
        self.subclass = subclass


class microsoftgraphphone(msrest.serialization.Model):
    """phone.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param language:
    :type language: str
    :param number: The phone number.
    :type number: str
    :param region:
    :type region: str
    :param type:  Possible values include: "home", "business", "mobile", "other", "assistant",
     "homeFax", "businessFax", "otherFax", "pager", "radio".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphphonetype
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'language': {'key': 'language', 'type': 'str'},
        'number': {'key': 'number', 'type': 'str'},
        'region': {'key': 'region', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        language: Optional[str] = None,
        number: Optional[str] = None,
        region: Optional[str] = None,
        type: Optional[Union[str, "Microsoftgraphphonetype"]] = None,
        **kwargs
    ):
        super(microsoftgraphphone, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.language = language
        self.number = number
        self.region = region
        self.type = type


class microsoftgraphphoto(msrest.serialization.Model):
    """photo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param camera_make: Camera manufacturer. Read-only.
    :type camera_make: str
    :param camera_model: Camera model. Read-only.
    :type camera_model: str
    :param exposure_denominator: The denominator for the exposure time fraction from the camera.
     Read-only.
    :type exposure_denominator: float
    :param exposure_numerator: The numerator for the exposure time fraction from the camera. Read-
     only.
    :type exposure_numerator: float
    :param f_number: The F-stop value from the camera. Read-only.
    :type f_number: float
    :param focal_length: The focal length from the camera. Read-only.
    :type focal_length: float
    :param iso: The ISO value from the camera. Read-only.
    :type iso: int
    :param orientation: The orientation value from the camera. Writable on OneDrive Personal.
    :type orientation: int
    :param taken_date_time: Represents the date and time the photo was taken. Read-only.
    :type taken_date_time: ~datetime.datetime
    """

    _validation = {
        'iso': {'maximum': 2147483647, 'minimum': -2147483648},
        'orientation': {'maximum': 32767, 'minimum': -32768},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'camera_make': {'key': 'cameraMake', 'type': 'str'},
        'camera_model': {'key': 'cameraModel', 'type': 'str'},
        'exposure_denominator': {'key': 'exposureDenominator', 'type': 'float'},
        'exposure_numerator': {'key': 'exposureNumerator', 'type': 'float'},
        'f_number': {'key': 'fNumber', 'type': 'float'},
        'focal_length': {'key': 'focalLength', 'type': 'float'},
        'iso': {'key': 'iso', 'type': 'int'},
        'orientation': {'key': 'orientation', 'type': 'int'},
        'taken_date_time': {'key': 'takenDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        camera_make: Optional[str] = None,
        camera_model: Optional[str] = None,
        exposure_denominator: Optional[float] = None,
        exposure_numerator: Optional[float] = None,
        f_number: Optional[float] = None,
        focal_length: Optional[float] = None,
        iso: Optional[int] = None,
        orientation: Optional[int] = None,
        taken_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphphoto, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.camera_make = camera_make
        self.camera_model = camera_model
        self.exposure_denominator = exposure_denominator
        self.exposure_numerator = exposure_numerator
        self.f_number = f_number
        self.focal_length = focal_length
        self.iso = iso
        self.orientation = orientation
        self.taken_date_time = taken_date_time


class microsoftgraphphysicaladdress(msrest.serialization.Model):
    """physicalAddress.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param city: The city.
    :type city: str
    :param country_or_region: The country or region. It's a free-format string value, for example,
     'United States'.
    :type country_or_region: str
    :param postal_code: The postal code.
    :type postal_code: str
    :param state: The state.
    :type state: str
    :param street: The street.
    :type street: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'city': {'key': 'city', 'type': 'str'},
        'country_or_region': {'key': 'countryOrRegion', 'type': 'str'},
        'postal_code': {'key': 'postalCode', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'street': {'key': 'street', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        city: Optional[str] = None,
        country_or_region: Optional[str] = None,
        postal_code: Optional[str] = None,
        state: Optional[str] = None,
        street: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphphysicaladdress, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.city = city
        self.country_or_region = country_or_region
        self.postal_code = postal_code
        self.state = state
        self.street = street


class microsoftgraphplannerassignedtotaskboardtaskformat(microsoftgraphentity):
    """plannerAssignedToTaskBoardTaskFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param order_hints_by_assignee: plannerOrderHintsByAssignee.
    :type order_hints_by_assignee: dict[str, object]
    :param unassigned_order_hint: Hint value used to order the task on the AssignedTo view of the
     Task Board when the task is not assigned to anyone, or if the orderHintsByAssignee dictionary
     does not provide an order hint for the user the task is assigned to. The format is defined as
     outlined here.
    :type unassigned_order_hint: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'order_hints_by_assignee': {'key': 'orderHintsByAssignee', 'type': '{object}'},
        'unassigned_order_hint': {'key': 'unassignedOrderHint', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        order_hints_by_assignee: Optional[Dict[str, object]] = None,
        unassigned_order_hint: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphplannerassignedtotaskboardtaskformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.order_hints_by_assignee = order_hints_by_assignee
        self.unassigned_order_hint = unassigned_order_hint


class microsoftgraphplannerbucket(microsoftgraphentity):
    """plannerBucket.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: Name of the bucket.
    :type name: str
    :param order_hint: Hint used to order items of this type in a list view. The format is defined
     as outlined here.
    :type order_hint: str
    :param plan_id: Plan ID to which the bucket belongs.
    :type plan_id: str
    :param tasks: Read-only. Nullable. The collection of tasks in the bucket.
    :type tasks: list[~identity_sign_ins.models.microsoftgraphplannertask]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'order_hint': {'key': 'orderHint', 'type': 'str'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'tasks': {'key': 'tasks', 'type': '[microsoftgraphplannertask]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        order_hint: Optional[str] = None,
        plan_id: Optional[str] = None,
        tasks: Optional[List["microsoftgraphplannertask"]] = None,
        **kwargs
    ):
        super(microsoftgraphplannerbucket, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.order_hint = order_hint
        self.plan_id = plan_id
        self.tasks = tasks


class microsoftgraphplannerbuckettaskboardtaskformat(microsoftgraphentity):
    """plannerBucketTaskBoardTaskFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param order_hint: Hint used to order tasks in the Bucket view of the Task Board. The format is
     defined as outlined here.
    :type order_hint: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'order_hint': {'key': 'orderHint', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        order_hint: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphplannerbuckettaskboardtaskformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.order_hint = order_hint


class microsoftgraphplannercategorydescriptions(msrest.serialization.Model):
    """plannerCategoryDescriptions.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param category1: The label associated with Category 1.
    :type category1: str
    :param category2: The label associated with Category 2.
    :type category2: str
    :param category3: The label associated with Category 3.
    :type category3: str
    :param category4: The label associated with Category 4.
    :type category4: str
    :param category5: The label associated with Category 5.
    :type category5: str
    :param category6: The label associated with Category 6.
    :type category6: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'category1': {'key': 'category1', 'type': 'str'},
        'category2': {'key': 'category2', 'type': 'str'},
        'category3': {'key': 'category3', 'type': 'str'},
        'category4': {'key': 'category4', 'type': 'str'},
        'category5': {'key': 'category5', 'type': 'str'},
        'category6': {'key': 'category6', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        category1: Optional[str] = None,
        category2: Optional[str] = None,
        category3: Optional[str] = None,
        category4: Optional[str] = None,
        category5: Optional[str] = None,
        category6: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphplannercategorydescriptions, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.category1 = category1
        self.category2 = category2
        self.category3 = category3
        self.category4 = category4
        self.category5 = category5
        self.category6 = category6


class microsoftgraphplannergroup(microsoftgraphentity):
    """plannerGroup.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param plans: Read-only. Nullable. Returns the plannerPlans owned by the group.
    :type plans: list[~identity_sign_ins.models.microsoftgraphplannerplan]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'plans': {'key': 'plans', 'type': '[microsoftgraphplannerplan]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        plans: Optional[List["microsoftgraphplannerplan"]] = None,
        **kwargs
    ):
        super(microsoftgraphplannergroup, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.plans = plans


class microsoftgraphplannerplan(microsoftgraphentity):
    """plannerPlan.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Read-only. Date and time at which the plan is created. The Timestamp
     type represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param owner: ID of the Group that owns the plan. A valid group must exist before this field
     can be set. After it is set, this property can’t be updated.
    :type owner: str
    :param title: Required. Title of the plan.
    :type title: str
    :param buckets: Read-only. Nullable. Collection of buckets in the plan.
    :type buckets: list[~identity_sign_ins.models.microsoftgraphplannerbucket]
    :param details: plannerPlanDetails.
    :type details: ~identity_sign_ins.models.microsoftgraphplannerplandetails
    :param tasks: Read-only. Nullable. Collection of tasks in the plan.
    :type tasks: list[~identity_sign_ins.models.microsoftgraphplannertask]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'str'},
        'title': {'key': 'title', 'type': 'str'},
        'buckets': {'key': 'buckets', 'type': '[microsoftgraphplannerbucket]'},
        'details': {'key': 'details', 'type': 'microsoftgraphplannerplandetails'},
        'tasks': {'key': 'tasks', 'type': '[microsoftgraphplannertask]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        owner: Optional[str] = None,
        title: Optional[str] = None,
        buckets: Optional[List["microsoftgraphplannerbucket"]] = None,
        details: Optional["microsoftgraphplannerplandetails"] = None,
        tasks: Optional[List["microsoftgraphplannertask"]] = None,
        **kwargs
    ):
        super(microsoftgraphplannerplan, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_by = created_by
        self.created_date_time = created_date_time
        self.owner = owner
        self.title = title
        self.buckets = buckets
        self.details = details
        self.tasks = tasks


class microsoftgraphplannerplandetails(microsoftgraphentity):
    """plannerPlanDetails.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param category_descriptions: plannerCategoryDescriptions.
    :type category_descriptions:
     ~identity_sign_ins.models.microsoftgraphplannercategorydescriptions
    :param shared_with: plannerUserIds.
    :type shared_with: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'category_descriptions': {'key': 'categoryDescriptions', 'type': 'microsoftgraphplannercategorydescriptions'},
        'shared_with': {'key': 'sharedWith', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        category_descriptions: Optional["microsoftgraphplannercategorydescriptions"] = None,
        shared_with: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphplannerplandetails, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.category_descriptions = category_descriptions
        self.shared_with = shared_with


class microsoftgraphplannerprogresstaskboardtaskformat(microsoftgraphentity):
    """plannerProgressTaskBoardTaskFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param order_hint: Hint value used to order the task on the Progress view of the Task Board.
     The format is defined as outlined here.
    :type order_hint: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'order_hint': {'key': 'orderHint', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        order_hint: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphplannerprogresstaskboardtaskformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.order_hint = order_hint


class microsoftgraphplannertask(microsoftgraphentity):
    """plannerTask.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param active_checklist_item_count: Number of checklist items with value set to false,
     representing incomplete items.
    :type active_checklist_item_count: int
    :param applied_categories: plannerAppliedCategories.
    :type applied_categories: dict[str, object]
    :param assignee_priority: Hint used to order items of this type in a list view. The format is
     defined as outlined here.
    :type assignee_priority: str
    :param assignments: plannerAssignments.
    :type assignments: dict[str, object]
    :param bucket_id: Bucket ID to which the task belongs. The bucket needs to be in the plan that
     the task is in. It is 28 characters long and case-sensitive. Format validation is done on the
     service.
    :type bucket_id: str
    :param checklist_item_count: Number of checklist items that are present on the task.
    :type checklist_item_count: int
    :param completed_by: identitySet.
    :type completed_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param completed_date_time: Read-only. Date and time at which the 'percentComplete' of the task
     is set to '100'. The Timestamp type represents date and time information using ISO 8601 format
     and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this:
     '2014-01-01T00:00:00Z'.
    :type completed_date_time: ~datetime.datetime
    :param conversation_thread_id: Thread ID of the conversation on the task. This is the ID of the
     conversation thread object created in the group.
    :type conversation_thread_id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Read-only. Date and time at which the task is created. The Timestamp
     type represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param due_date_time: Date and time at which the task is due. The Timestamp type represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type due_date_time: ~datetime.datetime
    :param has_description: Read-only. Value is true if the details object of the task has a non-
     empty description and false otherwise.
    :type has_description: bool
    :param order_hint: Hint used to order items of this type in a list view. The format is defined
     as outlined here.
    :type order_hint: str
    :param percent_complete: Percentage of task completion. When set to 100, the task is considered
     completed.
    :type percent_complete: int
    :param plan_id: Plan ID to which the task belongs.
    :type plan_id: str
    :param preview_type:  Possible values include: "automatic", "noPreview", "checklist",
     "description", "reference".
    :type preview_type: str or ~identity_sign_ins.models.Microsoftgraphplannerpreviewtype
    :param reference_count: Number of external references that exist on the task.
    :type reference_count: int
    :param start_date_time: Date and time at which the task starts. The Timestamp type represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type start_date_time: ~datetime.datetime
    :param title: Title of the task.
    :type title: str
    :param assigned_to_task_board_format: plannerAssignedToTaskBoardTaskFormat.
    :type assigned_to_task_board_format:
     ~identity_sign_ins.models.microsoftgraphplannerassignedtotaskboardtaskformat
    :param bucket_task_board_format: plannerBucketTaskBoardTaskFormat.
    :type bucket_task_board_format:
     ~identity_sign_ins.models.microsoftgraphplannerbuckettaskboardtaskformat
    :param details: plannerTaskDetails.
    :type details: ~identity_sign_ins.models.microsoftgraphplannertaskdetails
    :param progress_task_board_format: plannerProgressTaskBoardTaskFormat.
    :type progress_task_board_format:
     ~identity_sign_ins.models.microsoftgraphplannerprogresstaskboardtaskformat
    """

    _validation = {
        'active_checklist_item_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'checklist_item_count': {'maximum': 2147483647, 'minimum': -2147483648},
        'percent_complete': {'maximum': 2147483647, 'minimum': -2147483648},
        'reference_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'active_checklist_item_count': {'key': 'activeChecklistItemCount', 'type': 'int'},
        'applied_categories': {'key': 'appliedCategories', 'type': '{object}'},
        'assignee_priority': {'key': 'assigneePriority', 'type': 'str'},
        'assignments': {'key': 'assignments', 'type': '{object}'},
        'bucket_id': {'key': 'bucketId', 'type': 'str'},
        'checklist_item_count': {'key': 'checklistItemCount', 'type': 'int'},
        'completed_by': {'key': 'completedBy', 'type': 'microsoftgraphidentityset'},
        'completed_date_time': {'key': 'completedDateTime', 'type': 'iso-8601'},
        'conversation_thread_id': {'key': 'conversationThreadId', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'due_date_time': {'key': 'dueDateTime', 'type': 'iso-8601'},
        'has_description': {'key': 'hasDescription', 'type': 'bool'},
        'order_hint': {'key': 'orderHint', 'type': 'str'},
        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'preview_type': {'key': 'previewType', 'type': 'str'},
        'reference_count': {'key': 'referenceCount', 'type': 'int'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'title': {'key': 'title', 'type': 'str'},
        'assigned_to_task_board_format': {'key': 'assignedToTaskBoardFormat', 'type': 'microsoftgraphplannerassignedtotaskboardtaskformat'},
        'bucket_task_board_format': {'key': 'bucketTaskBoardFormat', 'type': 'microsoftgraphplannerbuckettaskboardtaskformat'},
        'details': {'key': 'details', 'type': 'microsoftgraphplannertaskdetails'},
        'progress_task_board_format': {'key': 'progressTaskBoardFormat', 'type': 'microsoftgraphplannerprogresstaskboardtaskformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        active_checklist_item_count: Optional[int] = None,
        applied_categories: Optional[Dict[str, object]] = None,
        assignee_priority: Optional[str] = None,
        assignments: Optional[Dict[str, object]] = None,
        bucket_id: Optional[str] = None,
        checklist_item_count: Optional[int] = None,
        completed_by: Optional["microsoftgraphidentityset"] = None,
        completed_date_time: Optional[datetime.datetime] = None,
        conversation_thread_id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        due_date_time: Optional[datetime.datetime] = None,
        has_description: Optional[bool] = None,
        order_hint: Optional[str] = None,
        percent_complete: Optional[int] = None,
        plan_id: Optional[str] = None,
        preview_type: Optional[Union[str, "Microsoftgraphplannerpreviewtype"]] = None,
        reference_count: Optional[int] = None,
        start_date_time: Optional[datetime.datetime] = None,
        title: Optional[str] = None,
        assigned_to_task_board_format: Optional["microsoftgraphplannerassignedtotaskboardtaskformat"] = None,
        bucket_task_board_format: Optional["microsoftgraphplannerbuckettaskboardtaskformat"] = None,
        details: Optional["microsoftgraphplannertaskdetails"] = None,
        progress_task_board_format: Optional["microsoftgraphplannerprogresstaskboardtaskformat"] = None,
        **kwargs
    ):
        super(microsoftgraphplannertask, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.active_checklist_item_count = active_checklist_item_count
        self.applied_categories = applied_categories
        self.assignee_priority = assignee_priority
        self.assignments = assignments
        self.bucket_id = bucket_id
        self.checklist_item_count = checklist_item_count
        self.completed_by = completed_by
        self.completed_date_time = completed_date_time
        self.conversation_thread_id = conversation_thread_id
        self.created_by = created_by
        self.created_date_time = created_date_time
        self.due_date_time = due_date_time
        self.has_description = has_description
        self.order_hint = order_hint
        self.percent_complete = percent_complete
        self.plan_id = plan_id
        self.preview_type = preview_type
        self.reference_count = reference_count
        self.start_date_time = start_date_time
        self.title = title
        self.assigned_to_task_board_format = assigned_to_task_board_format
        self.bucket_task_board_format = bucket_task_board_format
        self.details = details
        self.progress_task_board_format = progress_task_board_format


class microsoftgraphplannertaskdetails(microsoftgraphentity):
    """plannerTaskDetails.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param checklist: plannerChecklistItems.
    :type checklist: dict[str, object]
    :param description: Description of the task.
    :type description: str
    :param preview_type:  Possible values include: "automatic", "noPreview", "checklist",
     "description", "reference".
    :type preview_type: str or ~identity_sign_ins.models.Microsoftgraphplannerpreviewtype
    :param references: plannerExternalReferences.
    :type references: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'checklist': {'key': 'checklist', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'preview_type': {'key': 'previewType', 'type': 'str'},
        'references': {'key': 'references', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        checklist: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        preview_type: Optional[Union[str, "Microsoftgraphplannerpreviewtype"]] = None,
        references: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphplannertaskdetails, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.checklist = checklist
        self.description = description
        self.preview_type = preview_type
        self.references = references


class microsoftgraphplanneruser(microsoftgraphentity):
    """plannerUser.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param plans: Read-only. Nullable. Returns the plannerTasks assigned to the user.
    :type plans: list[~identity_sign_ins.models.microsoftgraphplannerplan]
    :param tasks: Read-only. Nullable. Returns the plannerPlans shared with the user.
    :type tasks: list[~identity_sign_ins.models.microsoftgraphplannertask]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'plans': {'key': 'plans', 'type': '[microsoftgraphplannerplan]'},
        'tasks': {'key': 'tasks', 'type': '[microsoftgraphplannertask]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        plans: Optional[List["microsoftgraphplannerplan"]] = None,
        tasks: Optional[List["microsoftgraphplannertask"]] = None,
        **kwargs
    ):
        super(microsoftgraphplanneruser, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.plans = plans
        self.tasks = tasks


class microsoftgraphpolicyroot(microsoftgraphentity):
    """policyRoot.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param activity_based_timeout_policies:
    :type activity_based_timeout_policies:
     list[~identity_sign_ins.models.microsoftgraphactivitybasedtimeoutpolicy]
    :param claims_mapping_policies:
    :type claims_mapping_policies:
     list[~identity_sign_ins.models.microsoftgraphclaimsmappingpolicy]
    :param home_realm_discovery_policies:
    :type home_realm_discovery_policies:
     list[~identity_sign_ins.models.microsoftgraphhomerealmdiscoverypolicy]
    :param permission_grant_policies:
    :type permission_grant_policies:
     list[~identity_sign_ins.models.microsoftgraphpermissiongrantpolicy]
    :param token_issuance_policies:
    :type token_issuance_policies:
     list[~identity_sign_ins.models.microsoftgraphtokenissuancepolicy]
    :param token_lifetime_policies:
    :type token_lifetime_policies:
     list[~identity_sign_ins.models.microsoftgraphtokenlifetimepolicy]
    :param conditional_access_policies:
    :type conditional_access_policies:
     list[~identity_sign_ins.models.microsoftgraphconditionalaccesspolicy]
    :param identity_security_defaults_enforcement_policy: Represents an Azure Active Directory
     object. The directoryObject type is the base type for many other directory entity types.
    :type identity_security_defaults_enforcement_policy:
     ~identity_sign_ins.models.microsoftgraphidentitysecuritydefaultsenforcementpolicy
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'activity_based_timeout_policies': {'key': 'activityBasedTimeoutPolicies', 'type': '[microsoftgraphactivitybasedtimeoutpolicy]'},
        'claims_mapping_policies': {'key': 'claimsMappingPolicies', 'type': '[microsoftgraphclaimsmappingpolicy]'},
        'home_realm_discovery_policies': {'key': 'homeRealmDiscoveryPolicies', 'type': '[microsoftgraphhomerealmdiscoverypolicy]'},
        'permission_grant_policies': {'key': 'permissionGrantPolicies', 'type': '[microsoftgraphpermissiongrantpolicy]'},
        'token_issuance_policies': {'key': 'tokenIssuancePolicies', 'type': '[microsoftgraphtokenissuancepolicy]'},
        'token_lifetime_policies': {'key': 'tokenLifetimePolicies', 'type': '[microsoftgraphtokenlifetimepolicy]'},
        'conditional_access_policies': {'key': 'conditionalAccessPolicies', 'type': '[microsoftgraphconditionalaccesspolicy]'},
        'identity_security_defaults_enforcement_policy': {'key': 'identitySecurityDefaultsEnforcementPolicy', 'type': 'microsoftgraphidentitysecuritydefaultsenforcementpolicy'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        activity_based_timeout_policies: Optional[List["microsoftgraphactivitybasedtimeoutpolicy"]] = None,
        claims_mapping_policies: Optional[List["microsoftgraphclaimsmappingpolicy"]] = None,
        home_realm_discovery_policies: Optional[List["microsoftgraphhomerealmdiscoverypolicy"]] = None,
        permission_grant_policies: Optional[List["microsoftgraphpermissiongrantpolicy"]] = None,
        token_issuance_policies: Optional[List["microsoftgraphtokenissuancepolicy"]] = None,
        token_lifetime_policies: Optional[List["microsoftgraphtokenlifetimepolicy"]] = None,
        conditional_access_policies: Optional[List["microsoftgraphconditionalaccesspolicy"]] = None,
        identity_security_defaults_enforcement_policy: Optional["microsoftgraphidentitysecuritydefaultsenforcementpolicy"] = None,
        **kwargs
    ):
        super(microsoftgraphpolicyroot, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.activity_based_timeout_policies = activity_based_timeout_policies
        self.claims_mapping_policies = claims_mapping_policies
        self.home_realm_discovery_policies = home_realm_discovery_policies
        self.permission_grant_policies = permission_grant_policies
        self.token_issuance_policies = token_issuance_policies
        self.token_lifetime_policies = token_lifetime_policies
        self.conditional_access_policies = conditional_access_policies
        self.identity_security_defaults_enforcement_policy = identity_security_defaults_enforcement_policy


class microsoftgraphpost(microsoftgraphoutlookitem):
    """post.

    :param id: Read-only.
    :type id: str
    :param categories: The categories associated with the item.
    :type categories: list[str]
    :param change_key: Identifies the version of the item. Every time the item is changed,
     changeKey changes as well. This allows Exchange to apply changes to the correct version of the
     object. Read-only.
    :type change_key: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param body: itemBody.
    :type body: ~identity_sign_ins.models.microsoftgraphitembody
    :param conversation_id: Unique ID of the conversation. Read-only.
    :type conversation_id: str
    :param conversation_thread_id: Unique ID of the conversation thread. Read-only.
    :type conversation_thread_id: str
    :param from_property: recipient.
    :type from_property: ~identity_sign_ins.models.microsoftgraphrecipient
    :param has_attachments: Indicates whether the post has at least one attachment. This is a
     default property.
    :type has_attachments: bool
    :param new_participants: Conversation participants that were added to the thread as part of
     this post.
    :type new_participants: list[~identity_sign_ins.models.microsoftgraphrecipient]
    :param received_date_time: Specifies when the post was received. The DateTimeOffset type
     represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type received_date_time: ~datetime.datetime
    :param sender: recipient.
    :type sender: ~identity_sign_ins.models.microsoftgraphrecipient
    :param attachments: Read-only. Nullable.
    :type attachments: list[~identity_sign_ins.models.microsoftgraphattachment]
    :param extensions: The collection of open extensions defined for the post. Read-only. Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param in_reply_to: post.
    :type in_reply_to: ~identity_sign_ins.models.microsoftgraphpost
    :param multi_value_extended_properties: The collection of multi-value extended properties
     defined for the post. Read-only. Nullable.
    :type multi_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphmultivaluelegacyextendedproperty]
    :param single_value_extended_properties: The collection of single-value extended properties
     defined for the post. Read-only. Nullable.
    :type single_value_extended_properties:
     list[~identity_sign_ins.models.microsoftgraphsinglevaluelegacyextendedproperty]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'categories': {'key': 'categories', 'type': '[str]'},
        'change_key': {'key': 'changeKey', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'body': {'key': 'body', 'type': 'microsoftgraphitembody'},
        'conversation_id': {'key': 'conversationId', 'type': 'str'},
        'conversation_thread_id': {'key': 'conversationThreadId', 'type': 'str'},
        'from_property': {'key': 'from', 'type': 'microsoftgraphrecipient'},
        'has_attachments': {'key': 'hasAttachments', 'type': 'bool'},
        'new_participants': {'key': 'newParticipants', 'type': '[microsoftgraphrecipient]'},
        'received_date_time': {'key': 'receivedDateTime', 'type': 'iso-8601'},
        'sender': {'key': 'sender', 'type': 'microsoftgraphrecipient'},
        'attachments': {'key': 'attachments', 'type': '[microsoftgraphattachment]'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'in_reply_to': {'key': 'inReplyTo', 'type': 'microsoftgraphpost'},
        'multi_value_extended_properties': {'key': 'multiValueExtendedProperties', 'type': '[microsoftgraphmultivaluelegacyextendedproperty]'},
        'single_value_extended_properties': {'key': 'singleValueExtendedProperties', 'type': '[microsoftgraphsinglevaluelegacyextendedproperty]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        categories: Optional[List[str]] = None,
        change_key: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        body: Optional["microsoftgraphitembody"] = None,
        conversation_id: Optional[str] = None,
        conversation_thread_id: Optional[str] = None,
        from_property: Optional["microsoftgraphrecipient"] = None,
        has_attachments: Optional[bool] = None,
        new_participants: Optional[List["microsoftgraphrecipient"]] = None,
        received_date_time: Optional[datetime.datetime] = None,
        sender: Optional["microsoftgraphrecipient"] = None,
        attachments: Optional[List["microsoftgraphattachment"]] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        in_reply_to: Optional["microsoftgraphpost"] = None,
        multi_value_extended_properties: Optional[List["microsoftgraphmultivaluelegacyextendedproperty"]] = None,
        single_value_extended_properties: Optional[List["microsoftgraphsinglevaluelegacyextendedproperty"]] = None,
        **kwargs
    ):
        super(microsoftgraphpost, self).__init__(id=id, categories=categories, change_key=change_key, created_date_time=created_date_time, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.body = body
        self.conversation_id = conversation_id
        self.conversation_thread_id = conversation_thread_id
        self.from_property = from_property
        self.has_attachments = has_attachments
        self.new_participants = new_participants
        self.received_date_time = received_date_time
        self.sender = sender
        self.attachments = attachments
        self.extensions = extensions
        self.in_reply_to = in_reply_to
        self.multi_value_extended_properties = multi_value_extended_properties
        self.single_value_extended_properties = single_value_extended_properties


class microsoftgraphprofilephoto(microsoftgraphentity):
    """profilePhoto.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param height: The height of the photo. Read-only.
    :type height: int
    :param width: The width of the photo. Read-only.
    :type width: int
    """

    _validation = {
        'height': {'maximum': 2147483647, 'minimum': -2147483648},
        'width': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'height': {'key': 'height', 'type': 'int'},
        'width': {'key': 'width', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        height: Optional[int] = None,
        width: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphprofilephoto, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.height = height
        self.width = width


class microsoftgraphprovisionedplan(msrest.serialization.Model):
    """provisionedPlan.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param capability_status: For example, 'Enabled'.
    :type capability_status: str
    :param provisioning_status: For example, 'Success'.
    :type provisioning_status: str
    :param service: The name of the service; for example, 'AccessControlS2S'.
    :type service: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'capability_status': {'key': 'capabilityStatus', 'type': 'str'},
        'provisioning_status': {'key': 'provisioningStatus', 'type': 'str'},
        'service': {'key': 'service', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        capability_status: Optional[str] = None,
        provisioning_status: Optional[str] = None,
        service: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphprovisionedplan, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.capability_status = capability_status
        self.provisioning_status = provisioning_status
        self.service = service


class microsoftgraphpublicationfacet(msrest.serialization.Model):
    """publicationFacet.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param level: The state of publication for this document. Either published or checkout. Read-
     only.
    :type level: str
    :param version_id: The unique identifier for the version that is visible to the current caller.
     Read-only.
    :type version_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'level': {'key': 'level', 'type': 'str'},
        'version_id': {'key': 'versionId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        level: Optional[str] = None,
        version_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpublicationfacet, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.level = level
        self.version_id = version_id


class microsoftgraphpublicerror(msrest.serialization.Model):
    """publicError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code:
    :type code: str
    :param details:
    :type details: list[~identity_sign_ins.models.microsoftgraphpublicerrordetail]
    :param inner_error: publicInnerError.
    :type inner_error: ~identity_sign_ins.models.microsoftgraphpublicinnererror
    :param message:
    :type message: str
    :param target:
    :type target: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'details': {'key': 'details', 'type': '[microsoftgraphpublicerrordetail]'},
        'inner_error': {'key': 'innerError', 'type': 'microsoftgraphpublicinnererror'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        details: Optional[List["microsoftgraphpublicerrordetail"]] = None,
        inner_error: Optional["microsoftgraphpublicinnererror"] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpublicerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.details = details
        self.inner_error = inner_error
        self.message = message
        self.target = target


class microsoftgraphpublicerrordetail(msrest.serialization.Model):
    """publicErrorDetail.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code:
    :type code: str
    :param message:
    :type message: str
    :param target:
    :type target: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpublicerrordetail, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.message = message
        self.target = target


class microsoftgraphpublicinnererror(msrest.serialization.Model):
    """publicInnerError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code:
    :type code: str
    :param details:
    :type details: list[~identity_sign_ins.models.microsoftgraphpublicerrordetail]
    :param message:
    :type message: str
    :param target:
    :type target: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'details': {'key': 'details', 'type': '[microsoftgraphpublicerrordetail]'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        details: Optional[List["microsoftgraphpublicerrordetail"]] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphpublicinnererror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.details = details
        self.message = message
        self.target = target


class microsoftgraphquota(msrest.serialization.Model):
    """quota.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param deleted: Total space consumed by files in the recycle bin, in bytes. Read-only.
    :type deleted: long
    :param remaining: Total space remaining before reaching the quota limit, in bytes. Read-only.
    :type remaining: long
    :param state: Enumeration value that indicates the state of the storage space. Read-only.
    :type state: str
    :param storage_plan_information: storagePlanInformation.
    :type storage_plan_information: ~identity_sign_ins.models.microsoftgraphstorageplaninformation
    :param total: Total allowed storage space, in bytes. Read-only.
    :type total: long
    :param used: Total space used, in bytes. Read-only.
    :type used: long
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'deleted': {'key': 'deleted', 'type': 'long'},
        'remaining': {'key': 'remaining', 'type': 'long'},
        'state': {'key': 'state', 'type': 'str'},
        'storage_plan_information': {'key': 'storagePlanInformation', 'type': 'microsoftgraphstorageplaninformation'},
        'total': {'key': 'total', 'type': 'long'},
        'used': {'key': 'used', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        deleted: Optional[int] = None,
        remaining: Optional[int] = None,
        state: Optional[str] = None,
        storage_plan_information: Optional["microsoftgraphstorageplaninformation"] = None,
        total: Optional[int] = None,
        used: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphquota, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.deleted = deleted
        self.remaining = remaining
        self.state = state
        self.storage_plan_information = storage_plan_information
        self.total = total
        self.used = used


class microsoftgraphrecurrencepattern(msrest.serialization.Model):
    """recurrencePattern.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param day_of_month: The day of the month on which the event occurs. Required if type is
     absoluteMonthly or absoluteYearly.
    :type day_of_month: int
    :param days_of_week: A collection of the days of the week on which the event occurs. The
     possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday. If type is
     relativeMonthly or relativeYearly, and daysOfWeek specifies more than one day, the event falls
     on the first day that satisfies the pattern.  Required if type is weekly, relativeMonthly, or
     relativeYearly.
    :type days_of_week: list[str or ~identity_sign_ins.models.Microsoftgraphdayofweek]
    :param first_day_of_week:  Possible values include: "sunday", "monday", "tuesday", "wednesday",
     "thursday", "friday", "saturday".
    :type first_day_of_week: str or ~identity_sign_ins.models.Microsoftgraphdayofweek
    :param index:  Possible values include: "first", "second", "third", "fourth", "last".
    :type index: str or ~identity_sign_ins.models.Microsoftgraphweekindex
    :param interval: The number of units between occurrences, where units can be in days, weeks,
     months, or years, depending on the type. Required.
    :type interval: int
    :param month: The month in which the event occurs.  This is a number from 1 to 12.
    :type month: int
    :param type:  Possible values include: "daily", "weekly", "absoluteMonthly", "relativeMonthly",
     "absoluteYearly", "relativeYearly".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphrecurrencepatterntype
    """

    _validation = {
        'day_of_month': {'maximum': 2147483647, 'minimum': -2147483648},
        'interval': {'maximum': 2147483647, 'minimum': -2147483648},
        'month': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'day_of_month': {'key': 'dayOfMonth', 'type': 'int'},
        'days_of_week': {'key': 'daysOfWeek', 'type': '[str]'},
        'first_day_of_week': {'key': 'firstDayOfWeek', 'type': 'str'},
        'index': {'key': 'index', 'type': 'str'},
        'interval': {'key': 'interval', 'type': 'int'},
        'month': {'key': 'month', 'type': 'int'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        day_of_month: Optional[int] = None,
        days_of_week: Optional[List[Union[str, "Microsoftgraphdayofweek"]]] = None,
        first_day_of_week: Optional[Union[str, "Microsoftgraphdayofweek"]] = None,
        index: Optional[Union[str, "Microsoftgraphweekindex"]] = None,
        interval: Optional[int] = None,
        month: Optional[int] = None,
        type: Optional[Union[str, "Microsoftgraphrecurrencepatterntype"]] = None,
        **kwargs
    ):
        super(microsoftgraphrecurrencepattern, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.day_of_month = day_of_month
        self.days_of_week = days_of_week
        self.first_day_of_week = first_day_of_week
        self.index = index
        self.interval = interval
        self.month = month
        self.type = type


class microsoftgraphrecurrencerange(msrest.serialization.Model):
    """recurrenceRange.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param end_date: The date to stop applying the recurrence pattern. Depending on the recurrence
     pattern of the event, the last occurrence of the meeting may not be this date. Required if type
     is endDate.
    :type end_date: ~datetime.date
    :param number_of_occurrences: The number of times to repeat the event. Required and must be
     positive if type is numbered.
    :type number_of_occurrences: int
    :param recurrence_time_zone: Time zone for the startDate and endDate properties. Optional. If
     not specified, the time zone of the event is used.
    :type recurrence_time_zone: str
    :param start_date: The date to start applying the recurrence pattern. The first occurrence of
     the meeting may be this date or later, depending on the recurrence pattern of the event. Must
     be the same value as the start property of the recurring event. Required.
    :type start_date: ~datetime.date
    :param type:  Possible values include: "endDate", "noEnd", "numbered".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphrecurrencerangetype
    """

    _validation = {
        'number_of_occurrences': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'end_date': {'key': 'endDate', 'type': 'date'},
        'number_of_occurrences': {'key': 'numberOfOccurrences', 'type': 'int'},
        'recurrence_time_zone': {'key': 'recurrenceTimeZone', 'type': 'str'},
        'start_date': {'key': 'startDate', 'type': 'date'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        end_date: Optional[datetime.date] = None,
        number_of_occurrences: Optional[int] = None,
        recurrence_time_zone: Optional[str] = None,
        start_date: Optional[datetime.date] = None,
        type: Optional[Union[str, "Microsoftgraphrecurrencerangetype"]] = None,
        **kwargs
    ):
        super(microsoftgraphrecurrencerange, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.end_date = end_date
        self.number_of_occurrences = number_of_occurrences
        self.recurrence_time_zone = recurrence_time_zone
        self.start_date = start_date
        self.type = type


class microsoftgraphremoteitem(msrest.serialization.Model):
    """remoteItem.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param file: file.
    :type file: ~identity_sign_ins.models.microsoftgraphfile
    :param file_system_info: fileSystemInfo.
    :type file_system_info: ~identity_sign_ins.models.microsoftgraphfilesysteminfo
    :param folder: folder.
    :type folder: ~identity_sign_ins.models.microsoftgraphfolder
    :param id: Unique identifier for the remote item in its drive. Read-only.
    :type id: str
    :param image: image.
    :type image: ~identity_sign_ins.models.microsoftgraphimage
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: Optional. Filename of the remote item. Read-only.
    :type name: str
    :param package: package.
    :type package: ~identity_sign_ins.models.microsoftgraphpackage
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param shared: shared.
    :type shared: ~identity_sign_ins.models.microsoftgraphshared
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param size: Size of the remote item. Read-only.
    :type size: long
    :param special_folder: specialFolder.
    :type special_folder: ~identity_sign_ins.models.microsoftgraphspecialfolder
    :param video: video.
    :type video: ~identity_sign_ins.models.microsoftgraphvideo
    :param web_dav_url: DAV compatible URL for the item.
    :type web_dav_url: str
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'file': {'key': 'file', 'type': 'microsoftgraphfile'},
        'file_system_info': {'key': 'fileSystemInfo', 'type': 'microsoftgraphfilesysteminfo'},
        'folder': {'key': 'folder', 'type': 'microsoftgraphfolder'},
        'id': {'key': 'id', 'type': 'str'},
        'image': {'key': 'image', 'type': 'microsoftgraphimage'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'package': {'key': 'package', 'type': 'microsoftgraphpackage'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'shared': {'key': 'shared', 'type': 'microsoftgraphshared'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'size': {'key': 'size', 'type': 'long'},
        'special_folder': {'key': 'specialFolder', 'type': 'microsoftgraphspecialfolder'},
        'video': {'key': 'video', 'type': 'microsoftgraphvideo'},
        'web_dav_url': {'key': 'webDavUrl', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        file: Optional["microsoftgraphfile"] = None,
        file_system_info: Optional["microsoftgraphfilesysteminfo"] = None,
        folder: Optional["microsoftgraphfolder"] = None,
        id: Optional[str] = None,
        image: Optional["microsoftgraphimage"] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        package: Optional["microsoftgraphpackage"] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        shared: Optional["microsoftgraphshared"] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        size: Optional[int] = None,
        special_folder: Optional["microsoftgraphspecialfolder"] = None,
        video: Optional["microsoftgraphvideo"] = None,
        web_dav_url: Optional[str] = None,
        web_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphremoteitem, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.created_by = created_by
        self.created_date_time = created_date_time
        self.file = file
        self.file_system_info = file_system_info
        self.folder = folder
        self.id = id
        self.image = image
        self.last_modified_by = last_modified_by
        self.last_modified_date_time = last_modified_date_time
        self.name = name
        self.package = package
        self.parent_reference = parent_reference
        self.shared = shared
        self.sharepoint_ids = sharepoint_ids
        self.size = size
        self.special_folder = special_folder
        self.video = video
        self.web_dav_url = web_dav_url
        self.web_url = web_url


class microsoftgraphresourcereference(msrest.serialization.Model):
    """resourceReference.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param id: The item's unique identifier.
    :type id: str
    :param type: A string value that can be used to classify the item, such as
     'microsoft.graph.driveItem'.
    :type type: str
    :param web_url: A URL leading to the referenced item.
    :type web_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'id': {'key': 'id', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        id: Optional[str] = None,
        type: Optional[str] = None,
        web_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphresourcereference, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.id = id
        self.type = type
        self.web_url = web_url


class microsoftgraphresourcevisualization(msrest.serialization.Model):
    """resourceVisualization.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param container_display_name: A string describing where the item is stored. For example, the
     name of a SharePoint site or the user name identifying the owner of the OneDrive storing the
     item.
    :type container_display_name: str
    :param container_type: Can be used for filtering by the type of container in which the file is
     stored. Such as Site or OneDriveBusiness.
    :type container_type: str
    :param container_web_url: A path leading to the folder in which the item is stored.
    :type container_web_url: str
    :param media_type: The item's media type. Can be used for filtering for a specific type of file
     based on supported IANA Media Mime Types. Note that not all Media Mime Types are supported.
    :type media_type: str
    :param preview_image_url: A URL leading to the preview image for the item.
    :type preview_image_url: str
    :param preview_text: A preview text for the item.
    :type preview_text: str
    :param title: The item's title text.
    :type title: str
    :param type: The item's media type. Can be used for filtering for a specific file based on a
     specific type. See below for supported types.
    :type type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'container_display_name': {'key': 'containerDisplayName', 'type': 'str'},
        'container_type': {'key': 'containerType', 'type': 'str'},
        'container_web_url': {'key': 'containerWebUrl', 'type': 'str'},
        'media_type': {'key': 'mediaType', 'type': 'str'},
        'preview_image_url': {'key': 'previewImageUrl', 'type': 'str'},
        'preview_text': {'key': 'previewText', 'type': 'str'},
        'title': {'key': 'title', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        container_display_name: Optional[str] = None,
        container_type: Optional[str] = None,
        container_web_url: Optional[str] = None,
        media_type: Optional[str] = None,
        preview_image_url: Optional[str] = None,
        preview_text: Optional[str] = None,
        title: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphresourcevisualization, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.container_display_name = container_display_name
        self.container_type = container_type
        self.container_web_url = container_web_url
        self.media_type = media_type
        self.preview_image_url = preview_image_url
        self.preview_text = preview_text
        self.title = title
        self.type = type


class microsoftgraphresponsestatus(msrest.serialization.Model):
    """responseStatus.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param response:  Possible values include: "none", "organizer", "tentativelyAccepted",
     "accepted", "declined", "notResponded".
    :type response: str or ~identity_sign_ins.models.Microsoftgraphresponsetype
    :param time: The date and time that the response was returned. It uses ISO 8601 format and is
     always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this:
     '2014-01-01T00:00:00Z'.
    :type time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'response': {'key': 'response', 'type': 'str'},
        'time': {'key': 'time', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        response: Optional[Union[str, "Microsoftgraphresponsetype"]] = None,
        time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphresponsestatus, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.response = response
        self.time = time


class microsoftgraphschedule(microsoftgraphentity):
    """schedule.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param enabled: Indicates whether the schedule is enabled for the team. Required.
    :type enabled: bool
    :param offer_shift_requests_enabled: Indicates whether offer shift requests are enabled for the
     schedule.
    :type offer_shift_requests_enabled: bool
    :param open_shifts_enabled: Indicates whether open shifts are enabled for the schedule.
    :type open_shifts_enabled: bool
    :param provision_status:  Possible values include: "NotStarted", "Running", "Completed",
     "Failed".
    :type provision_status: str or ~identity_sign_ins.models.Microsoftgraphoperationstatus
    :param provision_status_code: Additional information about why schedule provisioning failed.
    :type provision_status_code: str
    :param swap_shifts_requests_enabled: Indicates whether swap shifts requests are enabled for the
     schedule.
    :type swap_shifts_requests_enabled: bool
    :param time_clock_enabled: Indicates whether time clock is enabled for the schedule.
    :type time_clock_enabled: bool
    :param time_off_requests_enabled: Indicates whether time off requests are enabled for the
     schedule.
    :type time_off_requests_enabled: bool
    :param time_zone: Indicates the time zone of the schedule team using tz database format.
     Required.
    :type time_zone: str
    :param workforce_integration_ids:
    :type workforce_integration_ids: list[str]
    :param offer_shift_requests:
    :type offer_shift_requests: list[~identity_sign_ins.models.microsoftgraphoffershiftrequest]
    :param open_shift_change_requests:
    :type open_shift_change_requests:
     list[~identity_sign_ins.models.microsoftgraphopenshiftchangerequest]
    :param open_shifts:
    :type open_shifts: list[~identity_sign_ins.models.microsoftgraphopenshift]
    :param scheduling_groups: The logical grouping of users in the schedule (usually by role).
    :type scheduling_groups: list[~identity_sign_ins.models.microsoftgraphschedulinggroup]
    :param shifts: The shifts in the schedule.
    :type shifts: list[~identity_sign_ins.models.microsoftgraphshift]
    :param swap_shifts_change_requests:
    :type swap_shifts_change_requests:
     list[~identity_sign_ins.models.microsoftgraphswapshiftschangerequest]
    :param time_off_reasons: The set of reasons for a time off in the schedule.
    :type time_off_reasons: list[~identity_sign_ins.models.microsoftgraphtimeoffreason]
    :param time_off_requests:
    :type time_off_requests: list[~identity_sign_ins.models.microsoftgraphtimeoffrequest]
    :param times_off: The instances of times off in the schedule.
    :type times_off: list[~identity_sign_ins.models.microsoftgraphtimeoff]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'enabled': {'key': 'enabled', 'type': 'bool'},
        'offer_shift_requests_enabled': {'key': 'offerShiftRequestsEnabled', 'type': 'bool'},
        'open_shifts_enabled': {'key': 'openShiftsEnabled', 'type': 'bool'},
        'provision_status': {'key': 'provisionStatus', 'type': 'str'},
        'provision_status_code': {'key': 'provisionStatusCode', 'type': 'str'},
        'swap_shifts_requests_enabled': {'key': 'swapShiftsRequestsEnabled', 'type': 'bool'},
        'time_clock_enabled': {'key': 'timeClockEnabled', 'type': 'bool'},
        'time_off_requests_enabled': {'key': 'timeOffRequestsEnabled', 'type': 'bool'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'workforce_integration_ids': {'key': 'workforceIntegrationIds', 'type': '[str]'},
        'offer_shift_requests': {'key': 'offerShiftRequests', 'type': '[microsoftgraphoffershiftrequest]'},
        'open_shift_change_requests': {'key': 'openShiftChangeRequests', 'type': '[microsoftgraphopenshiftchangerequest]'},
        'open_shifts': {'key': 'openShifts', 'type': '[microsoftgraphopenshift]'},
        'scheduling_groups': {'key': 'schedulingGroups', 'type': '[microsoftgraphschedulinggroup]'},
        'shifts': {'key': 'shifts', 'type': '[microsoftgraphshift]'},
        'swap_shifts_change_requests': {'key': 'swapShiftsChangeRequests', 'type': '[microsoftgraphswapshiftschangerequest]'},
        'time_off_reasons': {'key': 'timeOffReasons', 'type': '[microsoftgraphtimeoffreason]'},
        'time_off_requests': {'key': 'timeOffRequests', 'type': '[microsoftgraphtimeoffrequest]'},
        'times_off': {'key': 'timesOff', 'type': '[microsoftgraphtimeoff]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        enabled: Optional[bool] = None,
        offer_shift_requests_enabled: Optional[bool] = None,
        open_shifts_enabled: Optional[bool] = None,
        provision_status: Optional[Union[str, "Microsoftgraphoperationstatus"]] = None,
        provision_status_code: Optional[str] = None,
        swap_shifts_requests_enabled: Optional[bool] = None,
        time_clock_enabled: Optional[bool] = None,
        time_off_requests_enabled: Optional[bool] = None,
        time_zone: Optional[str] = None,
        workforce_integration_ids: Optional[List[str]] = None,
        offer_shift_requests: Optional[List["microsoftgraphoffershiftrequest"]] = None,
        open_shift_change_requests: Optional[List["microsoftgraphopenshiftchangerequest"]] = None,
        open_shifts: Optional[List["microsoftgraphopenshift"]] = None,
        scheduling_groups: Optional[List["microsoftgraphschedulinggroup"]] = None,
        shifts: Optional[List["microsoftgraphshift"]] = None,
        swap_shifts_change_requests: Optional[List["microsoftgraphswapshiftschangerequest"]] = None,
        time_off_reasons: Optional[List["microsoftgraphtimeoffreason"]] = None,
        time_off_requests: Optional[List["microsoftgraphtimeoffrequest"]] = None,
        times_off: Optional[List["microsoftgraphtimeoff"]] = None,
        **kwargs
    ):
        super(microsoftgraphschedule, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.enabled = enabled
        self.offer_shift_requests_enabled = offer_shift_requests_enabled
        self.open_shifts_enabled = open_shifts_enabled
        self.provision_status = provision_status
        self.provision_status_code = provision_status_code
        self.swap_shifts_requests_enabled = swap_shifts_requests_enabled
        self.time_clock_enabled = time_clock_enabled
        self.time_off_requests_enabled = time_off_requests_enabled
        self.time_zone = time_zone
        self.workforce_integration_ids = workforce_integration_ids
        self.offer_shift_requests = offer_shift_requests
        self.open_shift_change_requests = open_shift_change_requests
        self.open_shifts = open_shifts
        self.scheduling_groups = scheduling_groups
        self.shifts = shifts
        self.swap_shifts_change_requests = swap_shifts_change_requests
        self.time_off_reasons = time_off_reasons
        self.time_off_requests = time_off_requests
        self.times_off = times_off


class microsoftgraphschedulinggroup(microsoftgraphchangetrackedentity):
    """schedulingGroup.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The display name for the schedulingGroup. Required.
    :type display_name: str
    :param is_active: Indicates whether the schedulingGroup can be used when creating new entities
     or updating existing ones. Required.
    :type is_active: bool
    :param user_ids: The list of user IDs that are a member of the schedulingGroup. Required.
    :type user_ids: list[str]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'is_active': {'key': 'isActive', 'type': 'bool'},
        'user_ids': {'key': 'userIds', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        is_active: Optional[bool] = None,
        user_ids: Optional[List[str]] = None,
        **kwargs
    ):
        super(microsoftgraphschedulinggroup, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.is_active = is_active
        self.user_ids = user_ids


class microsoftgraphscopedrolemembership(microsoftgraphentity):
    """scopedRoleMembership.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param administrative_unit_id: Unique identifier for the administrative unit that the directory
     role is scoped to.
    :type administrative_unit_id: str
    :param role_id: Unique identifier for the directory role that the member is in.
    :type role_id: str
    :param role_member_info: identity.
    :type role_member_info: ~identity_sign_ins.models.microsoftgraphidentity
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'administrative_unit_id': {'key': 'administrativeUnitId', 'type': 'str'},
        'role_id': {'key': 'roleId', 'type': 'str'},
        'role_member_info': {'key': 'roleMemberInfo', 'type': 'microsoftgraphidentity'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        administrative_unit_id: Optional[str] = None,
        role_id: Optional[str] = None,
        role_member_info: Optional["microsoftgraphidentity"] = None,
        **kwargs
    ):
        super(microsoftgraphscopedrolemembership, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.administrative_unit_id = administrative_unit_id
        self.role_id = role_id
        self.role_member_info = role_member_info


class microsoftgraphscoredemailaddress(msrest.serialization.Model):
    """scoredEmailAddress.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param address: The email address.
    :type address: str
    :param item_id:
    :type item_id: str
    :param relevance_score: The relevance score of the email address. A relevance score is used as
     a sort key, in relation to the other returned results. A higher relevance score value
     corresponds to a more relevant result. Relevance is determined by the user’s communication and
     collaboration patterns and business relationships.
    :type relevance_score: float
    :param selection_likelihood:  Possible values include: "notSpecified", "high".
    :type selection_likelihood: str or
     ~identity_sign_ins.models.Microsoftgraphselectionlikelihoodinfo
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'address': {'key': 'address', 'type': 'str'},
        'item_id': {'key': 'itemId', 'type': 'str'},
        'relevance_score': {'key': 'relevanceScore', 'type': 'float'},
        'selection_likelihood': {'key': 'selectionLikelihood', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        address: Optional[str] = None,
        item_id: Optional[str] = None,
        relevance_score: Optional[float] = None,
        selection_likelihood: Optional[Union[str, "Microsoftgraphselectionlikelihoodinfo"]] = None,
        **kwargs
    ):
        super(microsoftgraphscoredemailaddress, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.address = address
        self.item_id = item_id
        self.relevance_score = relevance_score
        self.selection_likelihood = selection_likelihood


class microsoftgraphsearchresult(msrest.serialization.Model):
    """searchResult.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param on_click_telemetry_url: A callback URL that can be used to record telemetry information.
     The application should issue a GET on this URL if the user interacts with this item to improve
     the quality of results.
    :type on_click_telemetry_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'on_click_telemetry_url': {'key': 'onClickTelemetryUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        on_click_telemetry_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsearchresult, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.on_click_telemetry_url = on_click_telemetry_url


class microsoftgraphsectiongroup(microsoftgraphonenoteentityhierarchymodel):
    """sectionGroup.

    :param id: Read-only.
    :type id: str
    :param self_property: The endpoint where you can get details about the page. Read-only.
    :type self_property: str
    :param created_date_time: The date and time when the page was created. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type created_date_time: ~datetime.datetime
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param display_name: The name of the notebook.
    :type display_name: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The date and time when the notebook was last modified. The
     timestamp represents date and time information using ISO 8601 format and is always in UTC time.
     For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-
     only.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param section_groups_url: The URL for the sectionGroups navigation property, which returns all
     the section groups in the section group. Read-only.
    :type section_groups_url: str
    :param sections_url: The URL for the sections navigation property, which returns all the
     sections in the section group. Read-only.
    :type sections_url: str
    :param parent_notebook: notebook.
    :type parent_notebook: ~identity_sign_ins.models.microsoftgraphnotebook
    :param parent_section_group: sectionGroup.
    :type parent_section_group: ~identity_sign_ins.models.microsoftgraphsectiongroup
    :param section_groups: The section groups in the section. Read-only. Nullable.
    :type section_groups: list[~identity_sign_ins.models.microsoftgraphsectiongroup]
    :param sections: The sections in the section group. Read-only. Nullable.
    :type sections: list[~identity_sign_ins.models.microsoftgraphonenotesection]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'self_property': {'key': 'self', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'section_groups_url': {'key': 'sectionGroupsUrl', 'type': 'str'},
        'sections_url': {'key': 'sectionsUrl', 'type': 'str'},
        'parent_notebook': {'key': 'parentNotebook', 'type': 'microsoftgraphnotebook'},
        'parent_section_group': {'key': 'parentSectionGroup', 'type': 'microsoftgraphsectiongroup'},
        'section_groups': {'key': 'sectionGroups', 'type': '[microsoftgraphsectiongroup]'},
        'sections': {'key': 'sections', 'type': '[microsoftgraphonenotesection]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        self_property: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        display_name: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        section_groups_url: Optional[str] = None,
        sections_url: Optional[str] = None,
        parent_notebook: Optional["microsoftgraphnotebook"] = None,
        parent_section_group: Optional["microsoftgraphsectiongroup"] = None,
        section_groups: Optional[List["microsoftgraphsectiongroup"]] = None,
        sections: Optional[List["microsoftgraphonenotesection"]] = None,
        **kwargs
    ):
        super(microsoftgraphsectiongroup, self).__init__(id=id, self_property=self_property, created_date_time=created_date_time, created_by=created_by, display_name=display_name, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.section_groups_url = section_groups_url
        self.sections_url = sections_url
        self.parent_notebook = parent_notebook
        self.parent_section_group = parent_section_group
        self.section_groups = section_groups
        self.sections = sections


class microsoftgraphsectionlinks(msrest.serialization.Model):
    """sectionLinks.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param one_note_client_url: externalLink.
    :type one_note_client_url: ~identity_sign_ins.models.microsoftgraphexternallink
    :param one_note_web_url: externalLink.
    :type one_note_web_url: ~identity_sign_ins.models.microsoftgraphexternallink
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'one_note_client_url': {'key': 'oneNoteClientUrl', 'type': 'microsoftgraphexternallink'},
        'one_note_web_url': {'key': 'oneNoteWebUrl', 'type': 'microsoftgraphexternallink'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        one_note_client_url: Optional["microsoftgraphexternallink"] = None,
        one_note_web_url: Optional["microsoftgraphexternallink"] = None,
        **kwargs
    ):
        super(microsoftgraphsectionlinks, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.one_note_client_url = one_note_client_url
        self.one_note_web_url = one_note_web_url


class microsoftgraphserviceplaninfo(msrest.serialization.Model):
    """servicePlanInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param applies_to: The object the service plan can be assigned to. Possible values:'User' -
     service plan can be assigned to individual users.'Company' - service plan can be assigned to
     the entire tenant.
    :type applies_to: str
    :param provisioning_status: The provisioning status of the service plan. Possible
     values:'Success' - Service is fully provisioned.'Disabled' - Service has been
     disabled.'PendingInput' - Service is not yet provisioned; awaiting service
     confirmation.'PendingActivation' - Service is provisioned but requires explicit activation by
     administrator (for example, Intune_O365 service plan)'PendingProvisioning' - Microsoft has
     added a new service to the product SKU and it has not been activated in the tenant, yet.
    :type provisioning_status: str
    :param service_plan_id: The unique identifier of the service plan.
    :type service_plan_id: str
    :param service_plan_name: The name of the service plan.
    :type service_plan_name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'applies_to': {'key': 'appliesTo', 'type': 'str'},
        'provisioning_status': {'key': 'provisioningStatus', 'type': 'str'},
        'service_plan_id': {'key': 'servicePlanId', 'type': 'str'},
        'service_plan_name': {'key': 'servicePlanName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        applies_to: Optional[str] = None,
        provisioning_status: Optional[str] = None,
        service_plan_id: Optional[str] = None,
        service_plan_name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphserviceplaninfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.applies_to = applies_to
        self.provisioning_status = provisioning_status
        self.service_plan_id = service_plan_id
        self.service_plan_name = service_plan_name


class microsoftgraphsettingsource(msrest.serialization.Model):
    """settingSource.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: Not yet documented.
    :type display_name: str
    :param id: Not yet documented.
    :type id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsettingsource, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.id = id


class microsoftgraphsettingvalue(msrest.serialization.Model):
    """settingValue.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: Name of the setting (as defined by the groupSettingTemplate).
    :type name: str
    :param value: Value of the setting.
    :type value: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsettingvalue, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.value = value


class microsoftgraphshared(msrest.serialization.Model):
    """shared.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param owner: identitySet.
    :type owner: ~identity_sign_ins.models.microsoftgraphidentityset
    :param scope: Indicates the scope of how the item is shared: anonymous, organization, or users.
     Read-only.
    :type scope: str
    :param shared_by: identitySet.
    :type shared_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param shared_date_time: The UTC date and time when the item was shared. Read-only.
    :type shared_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'owner': {'key': 'owner', 'type': 'microsoftgraphidentityset'},
        'scope': {'key': 'scope', 'type': 'str'},
        'shared_by': {'key': 'sharedBy', 'type': 'microsoftgraphidentityset'},
        'shared_date_time': {'key': 'sharedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        owner: Optional["microsoftgraphidentityset"] = None,
        scope: Optional[str] = None,
        shared_by: Optional["microsoftgraphidentityset"] = None,
        shared_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphshared, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.owner = owner
        self.scope = scope
        self.shared_by = shared_by
        self.shared_date_time = shared_date_time


class microsoftgraphsharedinsight(microsoftgraphentity):
    """sharedInsight.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param last_shared: sharingDetail.
    :type last_shared: ~identity_sign_ins.models.microsoftgraphsharingdetail
    :param resource_reference: resourceReference.
    :type resource_reference: ~identity_sign_ins.models.microsoftgraphresourcereference
    :param resource_visualization: resourceVisualization.
    :type resource_visualization: ~identity_sign_ins.models.microsoftgraphresourcevisualization
    :param sharing_history:
    :type sharing_history: list[~identity_sign_ins.models.microsoftgraphsharingdetail]
    :param last_shared_method: entity.
    :type last_shared_method: ~identity_sign_ins.models.microsoftgraphentity
    :param resource: entity.
    :type resource: ~identity_sign_ins.models.microsoftgraphentity
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'last_shared': {'key': 'lastShared', 'type': 'microsoftgraphsharingdetail'},
        'resource_reference': {'key': 'resourceReference', 'type': 'microsoftgraphresourcereference'},
        'resource_visualization': {'key': 'resourceVisualization', 'type': 'microsoftgraphresourcevisualization'},
        'sharing_history': {'key': 'sharingHistory', 'type': '[microsoftgraphsharingdetail]'},
        'last_shared_method': {'key': 'lastSharedMethod', 'type': 'microsoftgraphentity'},
        'resource': {'key': 'resource', 'type': 'microsoftgraphentity'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        last_shared: Optional["microsoftgraphsharingdetail"] = None,
        resource_reference: Optional["microsoftgraphresourcereference"] = None,
        resource_visualization: Optional["microsoftgraphresourcevisualization"] = None,
        sharing_history: Optional[List["microsoftgraphsharingdetail"]] = None,
        last_shared_method: Optional["microsoftgraphentity"] = None,
        resource: Optional["microsoftgraphentity"] = None,
        **kwargs
    ):
        super(microsoftgraphsharedinsight, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.last_shared = last_shared
        self.resource_reference = resource_reference
        self.resource_visualization = resource_visualization
        self.sharing_history = sharing_history
        self.last_shared_method = last_shared_method
        self.resource = resource


class microsoftgraphsharepointids(msrest.serialization.Model):
    """sharepointIds.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param list_id: The unique identifier (guid) for the item's list in SharePoint.
    :type list_id: str
    :param list_item_id: An integer identifier for the item within the containing list.
    :type list_item_id: str
    :param list_item_unique_id: The unique identifier (guid) for the item within OneDrive for
     Business or a SharePoint site.
    :type list_item_unique_id: str
    :param site_id: The unique identifier (guid) for the item's site collection (SPSite).
    :type site_id: str
    :param site_url: The SharePoint URL for the site that contains the item.
    :type site_url: str
    :param tenant_id: The unique identifier (guid) for the tenancy.
    :type tenant_id: str
    :param web_id: The unique identifier (guid) for the item's site (SPWeb).
    :type web_id: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'list_id': {'key': 'listId', 'type': 'str'},
        'list_item_id': {'key': 'listItemId', 'type': 'str'},
        'list_item_unique_id': {'key': 'listItemUniqueId', 'type': 'str'},
        'site_id': {'key': 'siteId', 'type': 'str'},
        'site_url': {'key': 'siteUrl', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'web_id': {'key': 'webId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        list_id: Optional[str] = None,
        list_item_id: Optional[str] = None,
        list_item_unique_id: Optional[str] = None,
        site_id: Optional[str] = None,
        site_url: Optional[str] = None,
        tenant_id: Optional[str] = None,
        web_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsharepointids, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.list_id = list_id
        self.list_item_id = list_item_id
        self.list_item_unique_id = list_item_unique_id
        self.site_id = site_id
        self.site_url = site_url
        self.tenant_id = tenant_id
        self.web_id = web_id


class microsoftgraphsharingdetail(msrest.serialization.Model):
    """sharingDetail.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param shared_by: insightIdentity.
    :type shared_by: ~identity_sign_ins.models.microsoftgraphinsightidentity
    :param shared_date_time: The date and time the file was last shared. The timestamp represents
     date and time information using ISO 8601 format and is always in UTC time. For example,
     midnight UTC on Jan 1, 2014 would look like this: 2014-01-01T00:00:00Z. Read-only.
    :type shared_date_time: ~datetime.datetime
    :param sharing_reference: resourceReference.
    :type sharing_reference: ~identity_sign_ins.models.microsoftgraphresourcereference
    :param sharing_subject: The subject with which the document was shared.
    :type sharing_subject: str
    :param sharing_type: Determines the way the document was shared, can be by a 'Link',
     'Attachment', 'Group', 'Site'.
    :type sharing_type: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'shared_by': {'key': 'sharedBy', 'type': 'microsoftgraphinsightidentity'},
        'shared_date_time': {'key': 'sharedDateTime', 'type': 'iso-8601'},
        'sharing_reference': {'key': 'sharingReference', 'type': 'microsoftgraphresourcereference'},
        'sharing_subject': {'key': 'sharingSubject', 'type': 'str'},
        'sharing_type': {'key': 'sharingType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        shared_by: Optional["microsoftgraphinsightidentity"] = None,
        shared_date_time: Optional[datetime.datetime] = None,
        sharing_reference: Optional["microsoftgraphresourcereference"] = None,
        sharing_subject: Optional[str] = None,
        sharing_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsharingdetail, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.shared_by = shared_by
        self.shared_date_time = shared_date_time
        self.sharing_reference = sharing_reference
        self.sharing_subject = sharing_subject
        self.sharing_type = sharing_type


class microsoftgraphsharinginvitation(msrest.serialization.Model):
    """sharingInvitation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param email: The email address provided for the recipient of the sharing invitation. Read-
     only.
    :type email: str
    :param invited_by: identitySet.
    :type invited_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param redeemed_by:
    :type redeemed_by: str
    :param sign_in_required: If true the recipient of the invitation needs to sign in in order to
     access the shared item. Read-only.
    :type sign_in_required: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'email': {'key': 'email', 'type': 'str'},
        'invited_by': {'key': 'invitedBy', 'type': 'microsoftgraphidentityset'},
        'redeemed_by': {'key': 'redeemedBy', 'type': 'str'},
        'sign_in_required': {'key': 'signInRequired', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        email: Optional[str] = None,
        invited_by: Optional["microsoftgraphidentityset"] = None,
        redeemed_by: Optional[str] = None,
        sign_in_required: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphsharinginvitation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.email = email
        self.invited_by = invited_by
        self.redeemed_by = redeemed_by
        self.sign_in_required = sign_in_required


class microsoftgraphsharinglink(msrest.serialization.Model):
    """sharingLink.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param application: identity.
    :type application: ~identity_sign_ins.models.microsoftgraphidentity
    :param prevents_download: If true then the user can only use this link to view the item on the
     web, and cannot use it to download the contents of the item. Only for OneDrive for Business and
     SharePoint.
    :type prevents_download: bool
    :param scope: The scope of the link represented by this permission. Value anonymous indicates
     the link is usable by anyone, organization indicates the link is only usable for users signed
     into the same tenant.
    :type scope: str
    :param type: The type of the link created.
    :type type: str
    :param web_html: For embed links, this property contains the HTML code for an :code:`<iframe>`
     element that will embed the item in a webpage.
    :type web_html: str
    :param web_url: A URL that opens the item in the browser on the OneDrive website.
    :type web_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'application': {'key': 'application', 'type': 'microsoftgraphidentity'},
        'prevents_download': {'key': 'preventsDownload', 'type': 'bool'},
        'scope': {'key': 'scope', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'web_html': {'key': 'webHtml', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        application: Optional["microsoftgraphidentity"] = None,
        prevents_download: Optional[bool] = None,
        scope: Optional[str] = None,
        type: Optional[str] = None,
        web_html: Optional[str] = None,
        web_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsharinglink, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.application = application
        self.prevents_download = prevents_download
        self.scope = scope
        self.type = type
        self.web_html = web_html
        self.web_url = web_url


class microsoftgraphshift(microsoftgraphchangetrackedentity):
    """shift.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param draft_shift: shiftItem.
    :type draft_shift: ~identity_sign_ins.models.microsoftgraphshiftitem
    :param scheduling_group_id: ID of the scheduling group the shift is part of. Required.
    :type scheduling_group_id: str
    :param shared_shift: shiftItem.
    :type shared_shift: ~identity_sign_ins.models.microsoftgraphshiftitem
    :param user_id: ID of the user assigned to the shift. Required.
    :type user_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'draft_shift': {'key': 'draftShift', 'type': 'microsoftgraphshiftitem'},
        'scheduling_group_id': {'key': 'schedulingGroupId', 'type': 'str'},
        'shared_shift': {'key': 'sharedShift', 'type': 'microsoftgraphshiftitem'},
        'user_id': {'key': 'userId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        draft_shift: Optional["microsoftgraphshiftitem"] = None,
        scheduling_group_id: Optional[str] = None,
        shared_shift: Optional["microsoftgraphshiftitem"] = None,
        user_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphshift, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.draft_shift = draft_shift
        self.scheduling_group_id = scheduling_group_id
        self.shared_shift = shared_shift
        self.user_id = user_id


class microsoftgraphshiftactivity(msrest.serialization.Model):
    """shiftActivity.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: Customer defined code for the shiftActivity. Required.
    :type code: str
    :param display_name: The name of the shiftActivity. Required.
    :type display_name: str
    :param end_date_time: The end date and time for the shiftActivity. The Timestamp type
     represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Required.
    :type end_date_time: ~datetime.datetime
    :param is_paid: Indicates whether the microsoft.graph.user should be paid for the activity
     during their shift. Required.
    :type is_paid: bool
    :param start_date_time: The start date and time for the shiftActivity. The Timestamp type
     represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Required.
    :type start_date_time: ~datetime.datetime
    :param theme:  Possible values include: "white", "blue", "green", "purple", "pink", "yellow",
     "gray", "darkBlue", "darkGreen", "darkPurple", "darkPink", "darkYellow", "unknownFutureValue".
    :type theme: str or ~identity_sign_ins.models.Microsoftgraphscheduleentitytheme
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'is_paid': {'key': 'isPaid', 'type': 'bool'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'theme': {'key': 'theme', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        display_name: Optional[str] = None,
        end_date_time: Optional[datetime.datetime] = None,
        is_paid: Optional[bool] = None,
        start_date_time: Optional[datetime.datetime] = None,
        theme: Optional[Union[str, "Microsoftgraphscheduleentitytheme"]] = None,
        **kwargs
    ):
        super(microsoftgraphshiftactivity, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.display_name = display_name
        self.end_date_time = end_date_time
        self.is_paid = is_paid
        self.start_date_time = start_date_time
        self.theme = theme


class microsoftgraphshiftavailability(msrest.serialization.Model):
    """shiftAvailability.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param recurrence: patternedRecurrence.
    :type recurrence: ~identity_sign_ins.models.microsoftgraphpatternedrecurrence
    :param time_slots: The time slot(s) preferred by the user.
    :type time_slots: list[~identity_sign_ins.models.microsoftgraphtimerange]
    :param time_zone: Specifies the time zone for the indicated time.
    :type time_zone: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'recurrence': {'key': 'recurrence', 'type': 'microsoftgraphpatternedrecurrence'},
        'time_slots': {'key': 'timeSlots', 'type': '[microsoftgraphtimerange]'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        recurrence: Optional["microsoftgraphpatternedrecurrence"] = None,
        time_slots: Optional[List["microsoftgraphtimerange"]] = None,
        time_zone: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphshiftavailability, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.recurrence = recurrence
        self.time_slots = time_slots
        self.time_zone = time_zone


class microsoftgraphshiftpreferences(microsoftgraphchangetrackedentity):
    """shiftPreferences.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param availability: Availability of the user to be scheduled for work and its recurrence
     pattern.
    :type availability: list[~identity_sign_ins.models.microsoftgraphshiftavailability]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'availability': {'key': 'availability', 'type': '[microsoftgraphshiftavailability]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        availability: Optional[List["microsoftgraphshiftavailability"]] = None,
        **kwargs
    ):
        super(microsoftgraphshiftpreferences, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.availability = availability


class microsoftgraphsigninfrequencysessioncontrol(microsoftgraphconditionalaccesssessioncontrol):
    """signInFrequencySessionControl.

    :param is_enabled: Specifies whether the session control is enabled.
    :type is_enabled: bool
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param type:  Possible values include: "days", "hours".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphsigninfrequencytype
    :param value: The number of days or hours.
    :type value: int
    """

    _validation = {
        'value': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'type': {'key': 'type', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        is_enabled: Optional[bool] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        type: Optional[Union[str, "Microsoftgraphsigninfrequencytype"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphsigninfrequencysessioncontrol, self).__init__(is_enabled=is_enabled, **kwargs)
        self.additional_properties = additional_properties
        self.type = type
        self.value = value


class microsoftgraphsinglevaluelegacyextendedproperty(microsoftgraphentity):
    """singleValueLegacyExtendedProperty.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value: A property value.
    :type value: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsinglevaluelegacyextendedproperty, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.value = value


class microsoftgraphsite(microsoftgraphbaseitem):
    """site.

    :param id: Read-only.
    :type id: str
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: Date and time of item creation. Read-only.
    :type created_date_time: ~datetime.datetime
    :param description: Provides a user-visible description of the item. Optional.
    :type description: str
    :param e_tag: ETag for the item. Read-only.
    :type e_tag: str
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: Date and time the item was last modified. Read-only.
    :type last_modified_date_time: ~datetime.datetime
    :param name: The name of the item. Read-write.
    :type name: str
    :param parent_reference: itemReference.
    :type parent_reference: ~identity_sign_ins.models.microsoftgraphitemreference
    :param web_url: URL that displays the resource in the browser. Read-only.
    :type web_url: str
    :param created_by_user: Represents an Azure Active Directory user object.
    :type created_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param last_modified_by_user: Represents an Azure Active Directory user object.
    :type last_modified_by_user: ~identity_sign_ins.models.microsoftgraphuser
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The full title for the site. Read-only.
    :type display_name: str
    :param error: publicError.
    :type error: ~identity_sign_ins.models.microsoftgraphpublicerror
    :param root: root.
    :type root: dict[str, object]
    :param sharepoint_ids: sharepointIds.
    :type sharepoint_ids: ~identity_sign_ins.models.microsoftgraphsharepointids
    :param site_collection: siteCollection.
    :type site_collection: ~identity_sign_ins.models.microsoftgraphsitecollection
    :param analytics: itemAnalytics.
    :type analytics: ~identity_sign_ins.models.microsoftgraphitemanalytics
    :param columns: The collection of column definitions reusable across lists under this site.
    :type columns: list[~identity_sign_ins.models.microsoftgraphcolumndefinition]
    :param content_types: The collection of content types defined for this site.
    :type content_types: list[~identity_sign_ins.models.microsoftgraphcontenttype]
    :param drive: drive.
    :type drive: ~identity_sign_ins.models.microsoftgraphdrive
    :param drives: The collection of drives (document libraries) under this site.
    :type drives: list[~identity_sign_ins.models.microsoftgraphdrive]
    :param items: Used to address any item contained in this site. This collection cannot be
     enumerated.
    :type items: list[~identity_sign_ins.models.microsoftgraphbaseitem]
    :param lists: The collection of lists under this site.
    :type lists: list[~identity_sign_ins.models.microsoftgraphlist]
    :param sites: The collection of the sub-sites under this site.
    :type sites: list[~identity_sign_ins.models.microsoftgraphsite]
    :param onenote: onenote.
    :type onenote: ~identity_sign_ins.models.microsoftgraphonenote
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'parent_reference': {'key': 'parentReference', 'type': 'microsoftgraphitemreference'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'created_by_user': {'key': 'createdByUser', 'type': 'microsoftgraphuser'},
        'last_modified_by_user': {'key': 'lastModifiedByUser', 'type': 'microsoftgraphuser'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'error': {'key': 'error', 'type': 'microsoftgraphpublicerror'},
        'root': {'key': 'root', 'type': '{object}'},
        'sharepoint_ids': {'key': 'sharepointIds', 'type': 'microsoftgraphsharepointids'},
        'site_collection': {'key': 'siteCollection', 'type': 'microsoftgraphsitecollection'},
        'analytics': {'key': 'analytics', 'type': 'microsoftgraphitemanalytics'},
        'columns': {'key': 'columns', 'type': '[microsoftgraphcolumndefinition]'},
        'content_types': {'key': 'contentTypes', 'type': '[microsoftgraphcontenttype]'},
        'drive': {'key': 'drive', 'type': 'microsoftgraphdrive'},
        'drives': {'key': 'drives', 'type': '[microsoftgraphdrive]'},
        'items': {'key': 'items', 'type': '[microsoftgraphbaseitem]'},
        'lists': {'key': 'lists', 'type': '[microsoftgraphlist]'},
        'sites': {'key': 'sites', 'type': '[microsoftgraphsite]'},
        'onenote': {'key': 'onenote', 'type': 'microsoftgraphonenote'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        e_tag: Optional[str] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        parent_reference: Optional["microsoftgraphitemreference"] = None,
        web_url: Optional[str] = None,
        created_by_user: Optional["microsoftgraphuser"] = None,
        last_modified_by_user: Optional["microsoftgraphuser"] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        error: Optional["microsoftgraphpublicerror"] = None,
        root: Optional[Dict[str, object]] = None,
        sharepoint_ids: Optional["microsoftgraphsharepointids"] = None,
        site_collection: Optional["microsoftgraphsitecollection"] = None,
        analytics: Optional["microsoftgraphitemanalytics"] = None,
        columns: Optional[List["microsoftgraphcolumndefinition"]] = None,
        content_types: Optional[List["microsoftgraphcontenttype"]] = None,
        drive: Optional["microsoftgraphdrive"] = None,
        drives: Optional[List["microsoftgraphdrive"]] = None,
        items: Optional[List["microsoftgraphbaseitem"]] = None,
        lists: Optional[List["microsoftgraphlist"]] = None,
        sites: Optional[List["microsoftgraphsite"]] = None,
        onenote: Optional["microsoftgraphonenote"] = None,
        **kwargs
    ):
        super(microsoftgraphsite, self).__init__(id=id, created_by=created_by, created_date_time=created_date_time, description=description, e_tag=e_tag, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, name=name, parent_reference=parent_reference, web_url=web_url, created_by_user=created_by_user, last_modified_by_user=last_modified_by_user, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.error = error
        self.root = root
        self.sharepoint_ids = sharepoint_ids
        self.site_collection = site_collection
        self.analytics = analytics
        self.columns = columns
        self.content_types = content_types
        self.drive = drive
        self.drives = drives
        self.items = items
        self.lists = lists
        self.sites = sites
        self.onenote = onenote


class microsoftgraphsitecollection(msrest.serialization.Model):
    """siteCollection.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param data_location_code: The geographic region code for where this site collection resides.
     Read-only.
    :type data_location_code: str
    :param hostname: The hostname for the site collection. Read-only.
    :type hostname: str
    :param root: root.
    :type root: dict[str, object]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'data_location_code': {'key': 'dataLocationCode', 'type': 'str'},
        'hostname': {'key': 'hostname', 'type': 'str'},
        'root': {'key': 'root', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        data_location_code: Optional[str] = None,
        hostname: Optional[str] = None,
        root: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphsitecollection, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.data_location_code = data_location_code
        self.hostname = hostname
        self.root = root


class microsoftgraphsizerange(msrest.serialization.Model):
    """sizeRange.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param maximum_size: The maximum size (in kilobytes) that an incoming message must have in
     order for a condition or exception to apply.
    :type maximum_size: int
    :param minimum_size: The minimum size (in kilobytes) that an incoming message must have in
     order for a condition or exception to apply.
    :type minimum_size: int
    """

    _validation = {
        'maximum_size': {'maximum': 2147483647, 'minimum': -2147483648},
        'minimum_size': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'maximum_size': {'key': 'maximumSize', 'type': 'int'},
        'minimum_size': {'key': 'minimumSize', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        maximum_size: Optional[int] = None,
        minimum_size: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphsizerange, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.maximum_size = maximum_size
        self.minimum_size = minimum_size


class microsoftgraphspecialfolder(msrest.serialization.Model):
    """specialFolder.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: The unique identifier for this item in the /drive/special collection.
    :type name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphspecialfolder, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.name = name


class microsoftgraphstorageplaninformation(msrest.serialization.Model):
    """storagePlanInformation.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param upgrade_available: Indicates whether there are higher storage quota plans available.
     Read-only.
    :type upgrade_available: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'upgrade_available': {'key': 'upgradeAvailable', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        upgrade_available: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphstorageplaninformation, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.upgrade_available = upgrade_available


class microsoftgraphsubscription(microsoftgraphentity):
    """subscription.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param application_id: Identifier of the application used to create the subscription. Read-
     only.
    :type application_id: str
    :param change_type: Required. Indicates the type of change in the subscribed resource that will
     raise a change notification. The supported values are: created, updated, deleted. Multiple
     values can be combined using a comma-separated list.Note: Drive root item and list change
     notifications support only the updated changeType. User and group change notifications support
     updated and deleted changeType.
    :type change_type: str
    :param client_state: Optional. Specifies the value of the clientState property sent by the
     service in each change notification. The maximum length is 128 characters. The client can check
     that the change notification came from the service by comparing the value of the clientState
     property sent with the subscription with the value of the clientState property received with
     each change notification.
    :type client_state: str
    :param creator_id: Identifier of the user or service principal that created the subscription.
     If the app used delegated permissions to create the subscription, this field contains the id of
     the signed-in user the app called on behalf of. If the app used application permissions, this
     field contains the id of the service principal corresponding to the app. Read-only.
    :type creator_id: str
    :param encryption_certificate: A base64-encoded representation of a certificate with a public
     key used to encrypt resource data in change notifications. Optional. Required when
     includeResourceData is true.
    :type encryption_certificate: str
    :param encryption_certificate_id: A custom app-provided identifier to help identify the
     certificate needed to decrypt resource data. Optional.
    :type encryption_certificate_id: str
    :param expiration_date_time: Required. Specifies the date and time when the webhook
     subscription expires. The time is in UTC, and can be an amount of time from subscription
     creation that varies for the resource subscribed to.  See the table below for maximum supported
     subscription length of time.
    :type expiration_date_time: ~datetime.datetime
    :param include_resource_data: When set to true, change notifications include resource data
     (such as content of a chat message). Optional.
    :type include_resource_data: bool
    :param latest_supported_tls_version:
    :type latest_supported_tls_version: str
    :param lifecycle_notification_url:
    :type lifecycle_notification_url: str
    :param notification_url: Required. The URL of the endpoint that will receive the change
     notifications. This URL must make use of the HTTPS protocol.
    :type notification_url: str
    :param resource: Required. Specifies the resource that will be monitored for changes. Do not
     include the base URL (https://graph.microsoft.com/v1.0/). See the possible resource path values
     for each supported resource.
    :type resource: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'application_id': {'key': 'applicationId', 'type': 'str'},
        'change_type': {'key': 'changeType', 'type': 'str'},
        'client_state': {'key': 'clientState', 'type': 'str'},
        'creator_id': {'key': 'creatorId', 'type': 'str'},
        'encryption_certificate': {'key': 'encryptionCertificate', 'type': 'str'},
        'encryption_certificate_id': {'key': 'encryptionCertificateId', 'type': 'str'},
        'expiration_date_time': {'key': 'expirationDateTime', 'type': 'iso-8601'},
        'include_resource_data': {'key': 'includeResourceData', 'type': 'bool'},
        'latest_supported_tls_version': {'key': 'latestSupportedTlsVersion', 'type': 'str'},
        'lifecycle_notification_url': {'key': 'lifecycleNotificationUrl', 'type': 'str'},
        'notification_url': {'key': 'notificationUrl', 'type': 'str'},
        'resource': {'key': 'resource', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        application_id: Optional[str] = None,
        change_type: Optional[str] = None,
        client_state: Optional[str] = None,
        creator_id: Optional[str] = None,
        encryption_certificate: Optional[str] = None,
        encryption_certificate_id: Optional[str] = None,
        expiration_date_time: Optional[datetime.datetime] = None,
        include_resource_data: Optional[bool] = None,
        latest_supported_tls_version: Optional[str] = None,
        lifecycle_notification_url: Optional[str] = None,
        notification_url: Optional[str] = None,
        resource: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphsubscription, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.application_id = application_id
        self.change_type = change_type
        self.client_state = client_state
        self.creator_id = creator_id
        self.encryption_certificate = encryption_certificate
        self.encryption_certificate_id = encryption_certificate_id
        self.expiration_date_time = expiration_date_time
        self.include_resource_data = include_resource_data
        self.latest_supported_tls_version = latest_supported_tls_version
        self.lifecycle_notification_url = lifecycle_notification_url
        self.notification_url = notification_url
        self.resource = resource


class microsoftgraphswapshiftschangerequest(microsoftgraphoffershiftrequest):
    """swapShiftsChangeRequest.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param assigned_to:  Possible values include: "sender", "recipient", "manager", "system",
     "unknownFutureValue".
    :type assigned_to: str or ~identity_sign_ins.models.Microsoftgraphschedulechangerequestactor
    :param manager_action_date_time:
    :type manager_action_date_time: ~datetime.datetime
    :param manager_action_message:
    :type manager_action_message: str
    :param manager_user_id:
    :type manager_user_id: str
    :param sender_date_time:
    :type sender_date_time: ~datetime.datetime
    :param sender_message:
    :type sender_message: str
    :param sender_user_id:
    :type sender_user_id: str
    :param state:  Possible values include: "pending", "approved", "declined",
     "unknownFutureValue".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphschedulechangestate
    :param recipient_action_date_time: The Timestamp type represents date and time information
     using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would
     look like this: '2014-01-01T00:00:00Z'.
    :type recipient_action_date_time: ~datetime.datetime
    :param recipient_action_message: Custom message sent by recipient of the offer shift request.
    :type recipient_action_message: str
    :param recipient_user_id: User ID of the recipient of the offer shift request.
    :type recipient_user_id: str
    :param sender_shift_id: User ID of the sender of the offer shift request.
    :type sender_shift_id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param recipient_shift_id: ShiftId for the recipient user with whom the request is to swap.
    :type recipient_shift_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'assigned_to': {'key': 'assignedTo', 'type': 'str'},
        'manager_action_date_time': {'key': 'managerActionDateTime', 'type': 'iso-8601'},
        'manager_action_message': {'key': 'managerActionMessage', 'type': 'str'},
        'manager_user_id': {'key': 'managerUserId', 'type': 'str'},
        'sender_date_time': {'key': 'senderDateTime', 'type': 'iso-8601'},
        'sender_message': {'key': 'senderMessage', 'type': 'str'},
        'sender_user_id': {'key': 'senderUserId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'recipient_action_date_time': {'key': 'recipientActionDateTime', 'type': 'iso-8601'},
        'recipient_action_message': {'key': 'recipientActionMessage', 'type': 'str'},
        'recipient_user_id': {'key': 'recipientUserId', 'type': 'str'},
        'sender_shift_id': {'key': 'senderShiftId', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'recipient_shift_id': {'key': 'recipientShiftId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        assigned_to: Optional[Union[str, "Microsoftgraphschedulechangerequestactor"]] = None,
        manager_action_date_time: Optional[datetime.datetime] = None,
        manager_action_message: Optional[str] = None,
        manager_user_id: Optional[str] = None,
        sender_date_time: Optional[datetime.datetime] = None,
        sender_message: Optional[str] = None,
        sender_user_id: Optional[str] = None,
        state: Optional[Union[str, "Microsoftgraphschedulechangestate"]] = None,
        recipient_action_date_time: Optional[datetime.datetime] = None,
        recipient_action_message: Optional[str] = None,
        recipient_user_id: Optional[str] = None,
        sender_shift_id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        recipient_shift_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphswapshiftschangerequest, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, assigned_to=assigned_to, manager_action_date_time=manager_action_date_time, manager_action_message=manager_action_message, manager_user_id=manager_user_id, sender_date_time=sender_date_time, sender_message=sender_message, sender_user_id=sender_user_id, state=state, recipient_action_date_time=recipient_action_date_time, recipient_action_message=recipient_action_message, recipient_user_id=recipient_user_id, sender_shift_id=sender_shift_id, **kwargs)
        self.additional_properties = additional_properties
        self.recipient_shift_id = recipient_shift_id


class microsoftgraphteam(microsoftgraphentity):
    """team.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param classification: An optional label. Typically describes the data or business sensitivity
     of the team. Must match one of a pre-configured set in the tenant's directory.
    :type classification: str
    :param description: An optional description for the team.
    :type description: str
    :param display_name: The name of the team.
    :type display_name: str
    :param fun_settings: teamFunSettings.
    :type fun_settings: ~identity_sign_ins.models.microsoftgraphteamfunsettings
    :param guest_settings: teamGuestSettings.
    :type guest_settings: ~identity_sign_ins.models.microsoftgraphteamguestsettings
    :param internal_id: A unique ID for the team that has been used in a few places such as the
     audit log/Office 365 Management Activity API.
    :type internal_id: str
    :param is_archived: Whether this team is in read-only mode.
    :type is_archived: bool
    :param member_settings: teamMemberSettings.
    :type member_settings: ~identity_sign_ins.models.microsoftgraphteammembersettings
    :param messaging_settings: teamMessagingSettings.
    :type messaging_settings: ~identity_sign_ins.models.microsoftgraphteammessagingsettings
    :param specialization:  Possible values include: "none", "educationStandard", "educationClass",
     "educationProfessionalLearningCommunity", "educationStaff", "healthcareStandard",
     "healthcareCareCoordination", "unknownFutureValue".
    :type specialization: str or ~identity_sign_ins.models.Microsoftgraphteamspecialization
    :param visibility:  Possible values include: "private", "public", "hiddenMembership",
     "unknownFutureValue".
    :type visibility: str or ~identity_sign_ins.models.Microsoftgraphteamvisibilitytype
    :param web_url: A hyperlink that will go to the team in the Microsoft Teams client. This is the
     URL that you get when you right-click a team in the Microsoft Teams client and select Get link
     to team. This URL should be treated as an opaque blob, and not parsed.
    :type web_url: str
    :param schedule: schedule.
    :type schedule: ~identity_sign_ins.models.microsoftgraphschedule
    :param channels: The collection of channels & messages associated with the team.
    :type channels: list[~identity_sign_ins.models.microsoftgraphchannel]
    :param group: Represents an Azure Active Directory object. The directoryObject type is the base
     type for many other directory entity types.
    :type group: ~identity_sign_ins.models.microsoftgraphgroup
    :param installed_apps: The apps installed in this team.
    :type installed_apps: list[~identity_sign_ins.models.microsoftgraphteamsappinstallation]
    :param members: Members and owners of the team.
    :type members: list[~identity_sign_ins.models.microsoftgraphconversationmember]
    :param operations: The async operations that ran or are running on this team.
    :type operations: list[~identity_sign_ins.models.microsoftgraphteamsasyncoperation]
    :param primary_channel: channel.
    :type primary_channel: ~identity_sign_ins.models.microsoftgraphchannel
    :param template: teamsTemplate.
    :type template: ~identity_sign_ins.models.microsoftgraphteamstemplate
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'classification': {'key': 'classification', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'fun_settings': {'key': 'funSettings', 'type': 'microsoftgraphteamfunsettings'},
        'guest_settings': {'key': 'guestSettings', 'type': 'microsoftgraphteamguestsettings'},
        'internal_id': {'key': 'internalId', 'type': 'str'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'member_settings': {'key': 'memberSettings', 'type': 'microsoftgraphteammembersettings'},
        'messaging_settings': {'key': 'messagingSettings', 'type': 'microsoftgraphteammessagingsettings'},
        'specialization': {'key': 'specialization', 'type': 'str'},
        'visibility': {'key': 'visibility', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'schedule': {'key': 'schedule', 'type': 'microsoftgraphschedule'},
        'channels': {'key': 'channels', 'type': '[microsoftgraphchannel]'},
        'group': {'key': 'group', 'type': 'microsoftgraphgroup'},
        'installed_apps': {'key': 'installedApps', 'type': '[microsoftgraphteamsappinstallation]'},
        'members': {'key': 'members', 'type': '[microsoftgraphconversationmember]'},
        'operations': {'key': 'operations', 'type': '[microsoftgraphteamsasyncoperation]'},
        'primary_channel': {'key': 'primaryChannel', 'type': 'microsoftgraphchannel'},
        'template': {'key': 'template', 'type': 'microsoftgraphteamstemplate'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        classification: Optional[str] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        fun_settings: Optional["microsoftgraphteamfunsettings"] = None,
        guest_settings: Optional["microsoftgraphteamguestsettings"] = None,
        internal_id: Optional[str] = None,
        is_archived: Optional[bool] = None,
        member_settings: Optional["microsoftgraphteammembersettings"] = None,
        messaging_settings: Optional["microsoftgraphteammessagingsettings"] = None,
        specialization: Optional[Union[str, "Microsoftgraphteamspecialization"]] = None,
        visibility: Optional[Union[str, "Microsoftgraphteamvisibilitytype"]] = None,
        web_url: Optional[str] = None,
        schedule: Optional["microsoftgraphschedule"] = None,
        channels: Optional[List["microsoftgraphchannel"]] = None,
        group: Optional["microsoftgraphgroup"] = None,
        installed_apps: Optional[List["microsoftgraphteamsappinstallation"]] = None,
        members: Optional[List["microsoftgraphconversationmember"]] = None,
        operations: Optional[List["microsoftgraphteamsasyncoperation"]] = None,
        primary_channel: Optional["microsoftgraphchannel"] = None,
        template: Optional["microsoftgraphteamstemplate"] = None,
        **kwargs
    ):
        super(microsoftgraphteam, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.classification = classification
        self.description = description
        self.display_name = display_name
        self.fun_settings = fun_settings
        self.guest_settings = guest_settings
        self.internal_id = internal_id
        self.is_archived = is_archived
        self.member_settings = member_settings
        self.messaging_settings = messaging_settings
        self.specialization = specialization
        self.visibility = visibility
        self.web_url = web_url
        self.schedule = schedule
        self.channels = channels
        self.group = group
        self.installed_apps = installed_apps
        self.members = members
        self.operations = operations
        self.primary_channel = primary_channel
        self.template = template


class microsoftgraphteamfunsettings(msrest.serialization.Model):
    """teamFunSettings.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_custom_memes: If set to true, enables users to include custom memes.
    :type allow_custom_memes: bool
    :param allow_giphy: If set to true, enables Giphy use.
    :type allow_giphy: bool
    :param allow_stickers_and_memes: If set to true, enables users to include stickers and memes.
    :type allow_stickers_and_memes: bool
    :param giphy_content_rating:  Possible values include: "strict", "moderate",
     "unknownFutureValue".
    :type giphy_content_rating: str or ~identity_sign_ins.models.Microsoftgraphgiphyratingtype
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_custom_memes': {'key': 'allowCustomMemes', 'type': 'bool'},
        'allow_giphy': {'key': 'allowGiphy', 'type': 'bool'},
        'allow_stickers_and_memes': {'key': 'allowStickersAndMemes', 'type': 'bool'},
        'giphy_content_rating': {'key': 'giphyContentRating', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_custom_memes: Optional[bool] = None,
        allow_giphy: Optional[bool] = None,
        allow_stickers_and_memes: Optional[bool] = None,
        giphy_content_rating: Optional[Union[str, "Microsoftgraphgiphyratingtype"]] = None,
        **kwargs
    ):
        super(microsoftgraphteamfunsettings, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_custom_memes = allow_custom_memes
        self.allow_giphy = allow_giphy
        self.allow_stickers_and_memes = allow_stickers_and_memes
        self.giphy_content_rating = giphy_content_rating


class microsoftgraphteamguestsettings(msrest.serialization.Model):
    """teamGuestSettings.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_create_update_channels: If set to true, guests can add and update channels.
    :type allow_create_update_channels: bool
    :param allow_delete_channels: If set to true, guests can delete channels.
    :type allow_delete_channels: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_create_update_channels': {'key': 'allowCreateUpdateChannels', 'type': 'bool'},
        'allow_delete_channels': {'key': 'allowDeleteChannels', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_create_update_channels: Optional[bool] = None,
        allow_delete_channels: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphteamguestsettings, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_create_update_channels = allow_create_update_channels
        self.allow_delete_channels = allow_delete_channels


class microsoftgraphteammembersettings(msrest.serialization.Model):
    """teamMemberSettings.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_add_remove_apps: If set to true, members can add and remove apps.
    :type allow_add_remove_apps: bool
    :param allow_create_private_channels: If set to true, members can add and update private
     channels.
    :type allow_create_private_channels: bool
    :param allow_create_update_channels: If set to true, members can add and update channels.
    :type allow_create_update_channels: bool
    :param allow_create_update_remove_connectors: If set to true, members can add, update, and
     remove connectors.
    :type allow_create_update_remove_connectors: bool
    :param allow_create_update_remove_tabs: If set to true, members can add, update, and remove
     tabs.
    :type allow_create_update_remove_tabs: bool
    :param allow_delete_channels: If set to true, members can delete channels.
    :type allow_delete_channels: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_add_remove_apps': {'key': 'allowAddRemoveApps', 'type': 'bool'},
        'allow_create_private_channels': {'key': 'allowCreatePrivateChannels', 'type': 'bool'},
        'allow_create_update_channels': {'key': 'allowCreateUpdateChannels', 'type': 'bool'},
        'allow_create_update_remove_connectors': {'key': 'allowCreateUpdateRemoveConnectors', 'type': 'bool'},
        'allow_create_update_remove_tabs': {'key': 'allowCreateUpdateRemoveTabs', 'type': 'bool'},
        'allow_delete_channels': {'key': 'allowDeleteChannels', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_add_remove_apps: Optional[bool] = None,
        allow_create_private_channels: Optional[bool] = None,
        allow_create_update_channels: Optional[bool] = None,
        allow_create_update_remove_connectors: Optional[bool] = None,
        allow_create_update_remove_tabs: Optional[bool] = None,
        allow_delete_channels: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphteammembersettings, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_add_remove_apps = allow_add_remove_apps
        self.allow_create_private_channels = allow_create_private_channels
        self.allow_create_update_channels = allow_create_update_channels
        self.allow_create_update_remove_connectors = allow_create_update_remove_connectors
        self.allow_create_update_remove_tabs = allow_create_update_remove_tabs
        self.allow_delete_channels = allow_delete_channels


class microsoftgraphteammessagingsettings(msrest.serialization.Model):
    """teamMessagingSettings.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_channel_mentions: If set to true, @channel mentions are allowed.
    :type allow_channel_mentions: bool
    :param allow_owner_delete_messages: If set to true, owners can delete any message.
    :type allow_owner_delete_messages: bool
    :param allow_team_mentions: If set to true, @team mentions are allowed.
    :type allow_team_mentions: bool
    :param allow_user_delete_messages: If set to true, users can delete their messages.
    :type allow_user_delete_messages: bool
    :param allow_user_edit_messages: If set to true, users can edit their messages.
    :type allow_user_edit_messages: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_channel_mentions': {'key': 'allowChannelMentions', 'type': 'bool'},
        'allow_owner_delete_messages': {'key': 'allowOwnerDeleteMessages', 'type': 'bool'},
        'allow_team_mentions': {'key': 'allowTeamMentions', 'type': 'bool'},
        'allow_user_delete_messages': {'key': 'allowUserDeleteMessages', 'type': 'bool'},
        'allow_user_edit_messages': {'key': 'allowUserEditMessages', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_channel_mentions: Optional[bool] = None,
        allow_owner_delete_messages: Optional[bool] = None,
        allow_team_mentions: Optional[bool] = None,
        allow_user_delete_messages: Optional[bool] = None,
        allow_user_edit_messages: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphteammessagingsettings, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_channel_mentions = allow_channel_mentions
        self.allow_owner_delete_messages = allow_owner_delete_messages
        self.allow_team_mentions = allow_team_mentions
        self.allow_user_delete_messages = allow_user_delete_messages
        self.allow_user_edit_messages = allow_user_edit_messages


class microsoftgraphteamsapp(microsoftgraphentity):
    """teamsApp.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The name of the catalog app provided by the app developer in the Microsoft
     Teams zip app package.
    :type display_name: str
    :param distribution_method:  Possible values include: "store", "organization", "sideloaded",
     "unknownFutureValue".
    :type distribution_method: str or
     ~identity_sign_ins.models.Microsoftgraphteamsappdistributionmethod
    :param external_id: The ID of the catalog provided by the app developer in the Microsoft Teams
     zip app package.
    :type external_id: str
    :param app_definitions: The details for each version of the app.
    :type app_definitions: list[~identity_sign_ins.models.microsoftgraphteamsappdefinition]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'distribution_method': {'key': 'distributionMethod', 'type': 'str'},
        'external_id': {'key': 'externalId', 'type': 'str'},
        'app_definitions': {'key': 'appDefinitions', 'type': '[microsoftgraphteamsappdefinition]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        distribution_method: Optional[Union[str, "Microsoftgraphteamsappdistributionmethod"]] = None,
        external_id: Optional[str] = None,
        app_definitions: Optional[List["microsoftgraphteamsappdefinition"]] = None,
        **kwargs
    ):
        super(microsoftgraphteamsapp, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.distribution_method = distribution_method
        self.external_id = external_id
        self.app_definitions = app_definitions


class microsoftgraphteamsappdefinition(microsoftgraphentity):
    """teamsAppDefinition.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The name of the app provided by the app developer.
    :type display_name: str
    :param teams_app_id: The ID from the Teams app manifest.
    :type teams_app_id: str
    :param version: The version number of the application.
    :type version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'teams_app_id': {'key': 'teamsAppId', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        teams_app_id: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphteamsappdefinition, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.teams_app_id = teams_app_id
        self.version = version


class microsoftgraphteamsappinstallation(microsoftgraphentity):
    """teamsAppInstallation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param teams_app: teamsApp.
    :type teams_app: ~identity_sign_ins.models.microsoftgraphteamsapp
    :param teams_app_definition: teamsAppDefinition.
    :type teams_app_definition: ~identity_sign_ins.models.microsoftgraphteamsappdefinition
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'teams_app': {'key': 'teamsApp', 'type': 'microsoftgraphteamsapp'},
        'teams_app_definition': {'key': 'teamsAppDefinition', 'type': 'microsoftgraphteamsappdefinition'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        teams_app: Optional["microsoftgraphteamsapp"] = None,
        teams_app_definition: Optional["microsoftgraphteamsappdefinition"] = None,
        **kwargs
    ):
        super(microsoftgraphteamsappinstallation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.teams_app = teams_app
        self.teams_app_definition = teams_app_definition


class microsoftgraphteamsasyncoperation(microsoftgraphentity):
    """teamsAsyncOperation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param attempts_count: Number of times the operation was attempted before being marked
     successful or failed.
    :type attempts_count: int
    :param created_date_time: Time when the operation was created.
    :type created_date_time: ~datetime.datetime
    :param error: operationError.
    :type error: ~identity_sign_ins.models.microsoftgraphoperationerror
    :param last_action_date_time: Time when the async operation was last updated.
    :type last_action_date_time: ~datetime.datetime
    :param operation_type:  Possible values include: "invalid", "cloneTeam", "archiveTeam",
     "unarchiveTeam", "createTeam", "unknownFutureValue".
    :type operation_type: str or ~identity_sign_ins.models.Microsoftgraphteamsasyncoperationtype
    :param status:  Possible values include: "invalid", "notStarted", "inProgress", "succeeded",
     "failed", "unknownFutureValue".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphteamsasyncoperationstatus
    :param target_resource_id: The ID of the object that's created or modified as result of this
     async operation, typically a team.
    :type target_resource_id: str
    :param target_resource_location: The location of the object that's created or modified as
     result of this async operation. This URL should be treated as an opaque value and not parsed
     into its component paths.
    :type target_resource_location: str
    """

    _validation = {
        'attempts_count': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'attempts_count': {'key': 'attemptsCount', 'type': 'int'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'error': {'key': 'error', 'type': 'microsoftgraphoperationerror'},
        'last_action_date_time': {'key': 'lastActionDateTime', 'type': 'iso-8601'},
        'operation_type': {'key': 'operationType', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
        'target_resource_location': {'key': 'targetResourceLocation', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        attempts_count: Optional[int] = None,
        created_date_time: Optional[datetime.datetime] = None,
        error: Optional["microsoftgraphoperationerror"] = None,
        last_action_date_time: Optional[datetime.datetime] = None,
        operation_type: Optional[Union[str, "Microsoftgraphteamsasyncoperationtype"]] = None,
        status: Optional[Union[str, "Microsoftgraphteamsasyncoperationstatus"]] = None,
        target_resource_id: Optional[str] = None,
        target_resource_location: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphteamsasyncoperation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.attempts_count = attempts_count
        self.created_date_time = created_date_time
        self.error = error
        self.last_action_date_time = last_action_date_time
        self.operation_type = operation_type
        self.status = status
        self.target_resource_id = target_resource_id
        self.target_resource_location = target_resource_location


class microsoftgraphteamstab(microsoftgraphentity):
    """teamsTab.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param configuration: teamsTabConfiguration.
    :type configuration: ~identity_sign_ins.models.microsoftgraphteamstabconfiguration
    :param display_name: Name of the tab.
    :type display_name: str
    :param web_url: Deep link URL of the tab instance. Read only.
    :type web_url: str
    :param teams_app: teamsApp.
    :type teams_app: ~identity_sign_ins.models.microsoftgraphteamsapp
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'configuration': {'key': 'configuration', 'type': 'microsoftgraphteamstabconfiguration'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'web_url': {'key': 'webUrl', 'type': 'str'},
        'teams_app': {'key': 'teamsApp', 'type': 'microsoftgraphteamsapp'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        configuration: Optional["microsoftgraphteamstabconfiguration"] = None,
        display_name: Optional[str] = None,
        web_url: Optional[str] = None,
        teams_app: Optional["microsoftgraphteamsapp"] = None,
        **kwargs
    ):
        super(microsoftgraphteamstab, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.configuration = configuration
        self.display_name = display_name
        self.web_url = web_url
        self.teams_app = teams_app


class microsoftgraphteamstabconfiguration(msrest.serialization.Model):
    """teamsTabConfiguration.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content_url: Url used for rendering tab contents in Teams. Required.
    :type content_url: str
    :param entity_id: Identifier for the entity hosted by the tab provider.
    :type entity_id: str
    :param remove_url: Url called by Teams client when a Tab is removed using the Teams Client.
    :type remove_url: str
    :param website_url: Url for showing tab contents outside of Teams.
    :type website_url: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'content_url': {'key': 'contentUrl', 'type': 'str'},
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'remove_url': {'key': 'removeUrl', 'type': 'str'},
        'website_url': {'key': 'websiteUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        content_url: Optional[str] = None,
        entity_id: Optional[str] = None,
        remove_url: Optional[str] = None,
        website_url: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphteamstabconfiguration, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.content_url = content_url
        self.entity_id = entity_id
        self.remove_url = remove_url
        self.website_url = website_url


class microsoftgraphteamstemplate(microsoftgraphentity):
    """teamsTemplate.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphteamstemplate, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphtextcolumn(msrest.serialization.Model):
    """textColumn.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_multiple_lines: Whether to allow multiple lines of text.
    :type allow_multiple_lines: bool
    :param append_changes_to_existing_text: Whether updates to this column should replace existing
     text, or append to it.
    :type append_changes_to_existing_text: bool
    :param lines_for_editing: The size of the text box.
    :type lines_for_editing: int
    :param max_length: The maximum number of characters for the value.
    :type max_length: int
    :param text_type: The type of text being stored. Must be one of plain or richText.
    :type text_type: str
    """

    _validation = {
        'lines_for_editing': {'maximum': 2147483647, 'minimum': -2147483648},
        'max_length': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_multiple_lines': {'key': 'allowMultipleLines', 'type': 'bool'},
        'append_changes_to_existing_text': {'key': 'appendChangesToExistingText', 'type': 'bool'},
        'lines_for_editing': {'key': 'linesForEditing', 'type': 'int'},
        'max_length': {'key': 'maxLength', 'type': 'int'},
        'text_type': {'key': 'textType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_multiple_lines: Optional[bool] = None,
        append_changes_to_existing_text: Optional[bool] = None,
        lines_for_editing: Optional[int] = None,
        max_length: Optional[int] = None,
        text_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphtextcolumn, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_multiple_lines = allow_multiple_lines
        self.append_changes_to_existing_text = append_changes_to_existing_text
        self.lines_for_editing = lines_for_editing
        self.max_length = max_length
        self.text_type = text_type


class microsoftgraphthreatassessmentrequest(microsoftgraphentity):
    """threatAssessmentRequest.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param category:  Possible values include: "undefined", "spam", "phishing", "malware",
     "unknownFutureValue".
    :type category: str or ~identity_sign_ins.models.Microsoftgraphthreatcategory
    :param content_type:  Possible values include: "mail", "url", "file".
    :type content_type: str or ~identity_sign_ins.models.Microsoftgraphthreatassessmentcontenttype
    :param created_by: identitySet.
    :type created_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param expected_assessment:  Possible values include: "block", "unblock".
    :type expected_assessment: str or
     ~identity_sign_ins.models.Microsoftgraphthreatexpectedassessment
    :param request_source:  Possible values include: "undefined", "user", "administrator".
    :type request_source: str or
     ~identity_sign_ins.models.Microsoftgraphthreatassessmentrequestsource
    :param status:  Possible values include: "pending", "completed".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphthreatassessmentstatus
    :param results: A collection of threat assessment results. Read-only. By default, a GET
     /threatAssessmentRequests/{id} does not return this property unless you apply $expand on it.
    :type results: list[~identity_sign_ins.models.microsoftgraphthreatassessmentresult]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'category': {'key': 'category', 'type': 'str'},
        'content_type': {'key': 'contentType', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'microsoftgraphidentityset'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'expected_assessment': {'key': 'expectedAssessment', 'type': 'str'},
        'request_source': {'key': 'requestSource', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'results': {'key': 'results', 'type': '[microsoftgraphthreatassessmentresult]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        category: Optional[Union[str, "Microsoftgraphthreatcategory"]] = None,
        content_type: Optional[Union[str, "Microsoftgraphthreatassessmentcontenttype"]] = None,
        created_by: Optional["microsoftgraphidentityset"] = None,
        created_date_time: Optional[datetime.datetime] = None,
        expected_assessment: Optional[Union[str, "Microsoftgraphthreatexpectedassessment"]] = None,
        request_source: Optional[Union[str, "Microsoftgraphthreatassessmentrequestsource"]] = None,
        status: Optional[Union[str, "Microsoftgraphthreatassessmentstatus"]] = None,
        results: Optional[List["microsoftgraphthreatassessmentresult"]] = None,
        **kwargs
    ):
        super(microsoftgraphthreatassessmentrequest, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.category = category
        self.content_type = content_type
        self.created_by = created_by
        self.created_date_time = created_date_time
        self.expected_assessment = expected_assessment
        self.request_source = request_source
        self.status = status
        self.results = results


class microsoftgraphthreatassessmentresult(microsoftgraphentity):
    """threatAssessmentResult.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param message: The result message for each threat assessment.
    :type message: str
    :param result_type:  Possible values include: "checkPolicy", "rescan", "unknownFutureValue".
    :type result_type: str or ~identity_sign_ins.models.Microsoftgraphthreatassessmentresulttype
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'message': {'key': 'message', 'type': 'str'},
        'result_type': {'key': 'resultType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        created_date_time: Optional[datetime.datetime] = None,
        message: Optional[str] = None,
        result_type: Optional[Union[str, "Microsoftgraphthreatassessmentresulttype"]] = None,
        **kwargs
    ):
        super(microsoftgraphthreatassessmentresult, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.created_date_time = created_date_time
        self.message = message
        self.result_type = result_type


class microsoftgraphthumbnail(msrest.serialization.Model):
    """thumbnail.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content stream for the thumbnail.
    :type content: bytes
    :param height: The height of the thumbnail, in pixels.
    :type height: int
    :param source_item_id: The unique identifier of the item that provided the thumbnail. This is
     only available when a folder thumbnail is requested.
    :type source_item_id: str
    :param url: The URL used to fetch the thumbnail content.
    :type url: str
    :param width: The width of the thumbnail, in pixels.
    :type width: int
    """

    _validation = {
        'height': {'maximum': 2147483647, 'minimum': -2147483648},
        'width': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'base64'},
        'height': {'key': 'height', 'type': 'int'},
        'source_item_id': {'key': 'sourceItemId', 'type': 'str'},
        'url': {'key': 'url', 'type': 'str'},
        'width': {'key': 'width', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[bytes] = None,
        height: Optional[int] = None,
        source_item_id: Optional[str] = None,
        url: Optional[str] = None,
        width: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphthumbnail, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.height = height
        self.source_item_id = source_item_id
        self.url = url
        self.width = width


class microsoftgraphthumbnailset(microsoftgraphentity):
    """thumbnailSet.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param large: thumbnail.
    :type large: ~identity_sign_ins.models.microsoftgraphthumbnail
    :param medium: thumbnail.
    :type medium: ~identity_sign_ins.models.microsoftgraphthumbnail
    :param small: thumbnail.
    :type small: ~identity_sign_ins.models.microsoftgraphthumbnail
    :param source: thumbnail.
    :type source: ~identity_sign_ins.models.microsoftgraphthumbnail
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'large': {'key': 'large', 'type': 'microsoftgraphthumbnail'},
        'medium': {'key': 'medium', 'type': 'microsoftgraphthumbnail'},
        'small': {'key': 'small', 'type': 'microsoftgraphthumbnail'},
        'source': {'key': 'source', 'type': 'microsoftgraphthumbnail'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        large: Optional["microsoftgraphthumbnail"] = None,
        medium: Optional["microsoftgraphthumbnail"] = None,
        small: Optional["microsoftgraphthumbnail"] = None,
        source: Optional["microsoftgraphthumbnail"] = None,
        **kwargs
    ):
        super(microsoftgraphthumbnailset, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.large = large
        self.medium = medium
        self.small = small
        self.source = source


class microsoftgraphtimeoff(microsoftgraphchangetrackedentity):
    """timeOff.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param draft_time_off: timeOffItem.
    :type draft_time_off: ~identity_sign_ins.models.microsoftgraphtimeoffitem
    :param shared_time_off: timeOffItem.
    :type shared_time_off: ~identity_sign_ins.models.microsoftgraphtimeoffitem
    :param user_id: ID of the user assigned to the timeOff. Required.
    :type user_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'draft_time_off': {'key': 'draftTimeOff', 'type': 'microsoftgraphtimeoffitem'},
        'shared_time_off': {'key': 'sharedTimeOff', 'type': 'microsoftgraphtimeoffitem'},
        'user_id': {'key': 'userId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        draft_time_off: Optional["microsoftgraphtimeoffitem"] = None,
        shared_time_off: Optional["microsoftgraphtimeoffitem"] = None,
        user_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphtimeoff, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.draft_time_off = draft_time_off
        self.shared_time_off = shared_time_off
        self.user_id = user_id


class microsoftgraphtimeoffitem(microsoftgraphscheduleentity):
    """timeOffItem.

    :param end_date_time:
    :type end_date_time: ~datetime.datetime
    :param start_date_time:
    :type start_date_time: ~datetime.datetime
    :param theme:  Possible values include: "white", "blue", "green", "purple", "pink", "yellow",
     "gray", "darkBlue", "darkGreen", "darkPurple", "darkPink", "darkYellow", "unknownFutureValue".
    :type theme: str or ~identity_sign_ins.models.Microsoftgraphscheduleentitytheme
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param time_off_reason_id: ID of the timeOffReason for this timeOffItem. Required.
    :type time_off_reason_id: str
    """

    _attribute_map = {
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'theme': {'key': 'theme', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'time_off_reason_id': {'key': 'timeOffReasonId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        end_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        theme: Optional[Union[str, "Microsoftgraphscheduleentitytheme"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        time_off_reason_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphtimeoffitem, self).__init__(end_date_time=end_date_time, start_date_time=start_date_time, theme=theme, **kwargs)
        self.additional_properties = additional_properties
        self.time_off_reason_id = time_off_reason_id


class microsoftgraphtimeoffreason(microsoftgraphchangetrackedentity):
    """timeOffReason.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param display_name: The name of the timeOffReason. Required.
    :type display_name: str
    :param icon_type:  Possible values include: "none", "car", "calendar", "running", "plane",
     "firstAid", "doctor", "notWorking", "clock", "juryDuty", "globe", "cup", "phone", "weather",
     "umbrella", "piggyBank", "dog", "cake", "trafficCone", "pin", "sunny", "unknownFutureValue".
    :type icon_type: str or ~identity_sign_ins.models.Microsoftgraphtimeoffreasonicontype
    :param is_active: Indicates whether the timeOffReason can be used when creating new entities or
     updating existing ones. Required.
    :type is_active: bool
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'icon_type': {'key': 'iconType', 'type': 'str'},
        'is_active': {'key': 'isActive', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        display_name: Optional[str] = None,
        icon_type: Optional[Union[str, "Microsoftgraphtimeoffreasonicontype"]] = None,
        is_active: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphtimeoffreason, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.display_name = display_name
        self.icon_type = icon_type
        self.is_active = is_active


class microsoftgraphtimeoffrequest(microsoftgraphschedulechangerequest):
    """timeOffRequest.

    :param id: Read-only.
    :type id: str
    :param created_date_time: The Timestamp type represents date and time information using ISO
     8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type created_date_time: ~datetime.datetime
    :param last_modified_by: identitySet.
    :type last_modified_by: ~identity_sign_ins.models.microsoftgraphidentityset
    :param last_modified_date_time: The Timestamp type represents date and time information using
     ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look
     like this: '2014-01-01T00:00:00Z'.
    :type last_modified_date_time: ~datetime.datetime
    :param assigned_to:  Possible values include: "sender", "recipient", "manager", "system",
     "unknownFutureValue".
    :type assigned_to: str or ~identity_sign_ins.models.Microsoftgraphschedulechangerequestactor
    :param manager_action_date_time:
    :type manager_action_date_time: ~datetime.datetime
    :param manager_action_message:
    :type manager_action_message: str
    :param manager_user_id:
    :type manager_user_id: str
    :param sender_date_time:
    :type sender_date_time: ~datetime.datetime
    :param sender_message:
    :type sender_message: str
    :param sender_user_id:
    :type sender_user_id: str
    :param state:  Possible values include: "pending", "approved", "declined",
     "unknownFutureValue".
    :type state: str or ~identity_sign_ins.models.Microsoftgraphschedulechangestate
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param end_date_time: The Timestamp type represents date and time information using ISO 8601
     format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type end_date_time: ~datetime.datetime
    :param start_date_time: The Timestamp type represents date and time information using ISO 8601
     format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like
     this: '2014-01-01T00:00:00Z'.
    :type start_date_time: ~datetime.datetime
    :param time_off_reason_id: The reason for the time off.
    :type time_off_reason_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'microsoftgraphidentityset'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'assigned_to': {'key': 'assignedTo', 'type': 'str'},
        'manager_action_date_time': {'key': 'managerActionDateTime', 'type': 'iso-8601'},
        'manager_action_message': {'key': 'managerActionMessage', 'type': 'str'},
        'manager_user_id': {'key': 'managerUserId', 'type': 'str'},
        'sender_date_time': {'key': 'senderDateTime', 'type': 'iso-8601'},
        'sender_message': {'key': 'senderMessage', 'type': 'str'},
        'sender_user_id': {'key': 'senderUserId', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'end_date_time': {'key': 'endDateTime', 'type': 'iso-8601'},
        'start_date_time': {'key': 'startDateTime', 'type': 'iso-8601'},
        'time_off_reason_id': {'key': 'timeOffReasonId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        last_modified_by: Optional["microsoftgraphidentityset"] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        assigned_to: Optional[Union[str, "Microsoftgraphschedulechangerequestactor"]] = None,
        manager_action_date_time: Optional[datetime.datetime] = None,
        manager_action_message: Optional[str] = None,
        manager_user_id: Optional[str] = None,
        sender_date_time: Optional[datetime.datetime] = None,
        sender_message: Optional[str] = None,
        sender_user_id: Optional[str] = None,
        state: Optional[Union[str, "Microsoftgraphschedulechangestate"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        end_date_time: Optional[datetime.datetime] = None,
        start_date_time: Optional[datetime.datetime] = None,
        time_off_reason_id: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphtimeoffrequest, self).__init__(id=id, created_date_time=created_date_time, last_modified_by=last_modified_by, last_modified_date_time=last_modified_date_time, assigned_to=assigned_to, manager_action_date_time=manager_action_date_time, manager_action_message=manager_action_message, manager_user_id=manager_user_id, sender_date_time=sender_date_time, sender_message=sender_message, sender_user_id=sender_user_id, state=state, **kwargs)
        self.additional_properties = additional_properties
        self.end_date_time = end_date_time
        self.start_date_time = start_date_time
        self.time_off_reason_id = time_off_reason_id


class microsoftgraphtimerange(msrest.serialization.Model):
    """timeRange.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param end_time: End time for the time range.
    :type end_time: ~datetime.time
    :param start_time: Start time for the time range.
    :type start_time: ~datetime.time
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'end_time': {'key': 'endTime', 'type': 'time'},
        'start_time': {'key': 'startTime', 'type': 'time'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        end_time: Optional[datetime.time] = None,
        start_time: Optional[datetime.time] = None,
        **kwargs
    ):
        super(microsoftgraphtimerange, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.end_time = end_time
        self.start_time = start_time


class microsoftgraphtimeslot(msrest.serialization.Model):
    """timeSlot.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param end: dateTimeTimeZone.
    :type end: ~identity_sign_ins.models.microsoftgraphdatetimezone
    :param start: dateTimeTimeZone.
    :type start: ~identity_sign_ins.models.microsoftgraphdatetimezone
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'end': {'key': 'end', 'type': 'microsoftgraphdatetimezone'},
        'start': {'key': 'start', 'type': 'microsoftgraphdatetimezone'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        end: Optional["microsoftgraphdatetimezone"] = None,
        start: Optional["microsoftgraphdatetimezone"] = None,
        **kwargs
    ):
        super(microsoftgraphtimeslot, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.end = end
        self.start = start


class microsoftgraphtimezonebase(msrest.serialization.Model):
    """timeZoneBase.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: The name of a time zone. It can be a standard time zone name such as 'Hawaii-
     Aleutian Standard Time', or 'Customized Time Zone' for a custom time zone.
    :type name: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphtimezonebase, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.name = name


class microsoftgraphtokenissuancepolicy(microsoftgraphstspolicy):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphtokenissuancepolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, definition=definition, is_organization_default=is_organization_default, applies_to=applies_to, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphtokenlifetimepolicy(microsoftgraphstspolicy):
    """Represents an Azure Active Directory object. The directoryObject type is the base type for many other directory entity types.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param description: Description for this policy.
    :type description: str
    :param display_name: Display name for this policy.
    :type display_name: str
    :param definition: A string collection containing a JSON string that defines the rules and
     settings for a policy. The syntax for the definition differs for each derived policy type.
     Required.
    :type definition: list[str]
    :param is_organization_default: If set to true, activates this policy. There can be many
     policies for the same policy type, but only one can be activated as the organization default.
     Optional, default value is false.
    :type is_organization_default: bool
    :param applies_to:
    :type applies_to: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'definition': {'key': 'definition', 'type': '[str]'},
        'is_organization_default': {'key': 'isOrganizationDefault', 'type': 'bool'},
        'applies_to': {'key': 'appliesTo', 'type': '[microsoftgraphdirectoryobject]'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        definition: Optional[List[str]] = None,
        is_organization_default: Optional[bool] = None,
        applies_to: Optional[List["microsoftgraphdirectoryobject"]] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphtokenlifetimepolicy, self).__init__(id=id, deleted_date_time=deleted_date_time, description=description, display_name=display_name, definition=definition, is_organization_default=is_organization_default, applies_to=applies_to, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphtrending(microsoftgraphentity):
    """trending.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param last_modified_date_time:
    :type last_modified_date_time: ~datetime.datetime
    :param resource_reference: resourceReference.
    :type resource_reference: ~identity_sign_ins.models.microsoftgraphresourcereference
    :param resource_visualization: resourceVisualization.
    :type resource_visualization: ~identity_sign_ins.models.microsoftgraphresourcevisualization
    :param weight: Value indicating how much the document is currently trending. The larger the
     number, the more the document is currently trending around the user (the more relevant it is).
     Returned documents are sorted by this value.
    :type weight: float
    :param resource: entity.
    :type resource: ~identity_sign_ins.models.microsoftgraphentity
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'resource_reference': {'key': 'resourceReference', 'type': 'microsoftgraphresourcereference'},
        'resource_visualization': {'key': 'resourceVisualization', 'type': 'microsoftgraphresourcevisualization'},
        'weight': {'key': 'weight', 'type': 'float'},
        'resource': {'key': 'resource', 'type': 'microsoftgraphentity'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        resource_reference: Optional["microsoftgraphresourcereference"] = None,
        resource_visualization: Optional["microsoftgraphresourcevisualization"] = None,
        weight: Optional[float] = None,
        resource: Optional["microsoftgraphentity"] = None,
        **kwargs
    ):
        super(microsoftgraphtrending, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.last_modified_date_time = last_modified_date_time
        self.resource_reference = resource_reference
        self.resource_visualization = resource_visualization
        self.weight = weight
        self.resource = resource


class microsoftgraphusagedetails(msrest.serialization.Model):
    """usageDetails.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param last_accessed_date_time: The date and time the resource was last accessed by the user.
     The timestamp represents date and time information using ISO 8601 format and is always in UTC
     time. For example, midnight UTC on Jan 1, 2014 would look like this: 2014-01-01T00:00:00Z.
     Read-only.
    :type last_accessed_date_time: ~datetime.datetime
    :param last_modified_date_time: The date and time the resource was last modified by the user.
     The timestamp represents date and time information using ISO 8601 format and is always in UTC
     time. For example, midnight UTC on Jan 1, 2014 would look like this: 2014-01-01T00:00:00Z.
     Read-only.
    :type last_modified_date_time: ~datetime.datetime
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'last_accessed_date_time': {'key': 'lastAccessedDateTime', 'type': 'iso-8601'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        last_accessed_date_time: Optional[datetime.datetime] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        super(microsoftgraphusagedetails, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.last_accessed_date_time = last_accessed_date_time
        self.last_modified_date_time = last_modified_date_time


class microsoftgraphusedinsight(microsoftgraphentity):
    """usedInsight.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param last_used: usageDetails.
    :type last_used: ~identity_sign_ins.models.microsoftgraphusagedetails
    :param resource_reference: resourceReference.
    :type resource_reference: ~identity_sign_ins.models.microsoftgraphresourcereference
    :param resource_visualization: resourceVisualization.
    :type resource_visualization: ~identity_sign_ins.models.microsoftgraphresourcevisualization
    :param resource: entity.
    :type resource: ~identity_sign_ins.models.microsoftgraphentity
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'last_used': {'key': 'lastUsed', 'type': 'microsoftgraphusagedetails'},
        'resource_reference': {'key': 'resourceReference', 'type': 'microsoftgraphresourcereference'},
        'resource_visualization': {'key': 'resourceVisualization', 'type': 'microsoftgraphresourcevisualization'},
        'resource': {'key': 'resource', 'type': 'microsoftgraphentity'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        last_used: Optional["microsoftgraphusagedetails"] = None,
        resource_reference: Optional["microsoftgraphresourcereference"] = None,
        resource_visualization: Optional["microsoftgraphresourcevisualization"] = None,
        resource: Optional["microsoftgraphentity"] = None,
        **kwargs
    ):
        super(microsoftgraphusedinsight, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.last_used = last_used
        self.resource_reference = resource_reference
        self.resource_visualization = resource_visualization
        self.resource = resource


class microsoftgraphuser(microsoftgraphdirectoryobject):
    """Represents an Azure Active Directory user object.

    :param id: Read-only.
    :type id: str
    :param deleted_date_time:
    :type deleted_date_time: ~datetime.datetime
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param account_enabled: true if the account is enabled; otherwise, false. This property is
     required when a user is created. Supports $filter.
    :type account_enabled: bool
    :param age_group: Sets the age group of the user. Allowed values: null, minor, notAdult and
     adult. Refer to the legal age group property definitions for further information.
    :type age_group: str
    :param assigned_licenses: The licenses that are assigned to the user. Not nullable.
    :type assigned_licenses: list[~identity_sign_ins.models.microsoftgraphassignedlicense]
    :param assigned_plans: The plans that are assigned to the user. Read-only. Not nullable.
    :type assigned_plans: list[~identity_sign_ins.models.microsoftgraphassignedplan]
    :param business_phones: The telephone numbers for the user. NOTE: Although this is a string
     collection, only one number can be set for this property.
    :type business_phones: list[str]
    :param city: The city in which the user is located. Supports $filter.
    :type city: str
    :param company_name: The company name which the user is associated. This property can be useful
     for describing the company that an external user comes from. The maximum length of the company
     name is 64 chararcters.Returned only on $select.
    :type company_name: str
    :param consent_provided_for_minor: Sets whether consent has been obtained for minors. Allowed
     values: null, granted, denied and notRequired. Refer to the legal age group property
     definitions for further information.
    :type consent_provided_for_minor: str
    :param country: The country/region in which the user is located; for example, 'US' or 'UK'.
     Supports $filter.
    :type country: str
    :param created_date_time: The created date of the user object.
    :type created_date_time: ~datetime.datetime
    :param creation_type: Indicates whether the user account was created as a regular school or
     work account (null), an external account (Invitation), a local account for an Azure Active
     Directory B2C tenant (LocalAccount) or self-service sign-up using email verification
     (EmailVerified). Read-only.
    :type creation_type: str
    :param department: The name for the department in which the user works. Supports $filter.
    :type department: str
    :param display_name: The name displayed in the address book for the user. This is usually the
     combination of the user's first name, middle initial and last name. This property is required
     when a user is created and it cannot be cleared during updates. Supports $filter and $orderby.
    :type display_name: str
    :param employee_id: The employee identifier assigned to the user by the organization. Supports
     $filter.
    :type employee_id: str
    :param external_user_state: For an external user invited to the tenant using the invitation
     API, this property represents the invited user's invitation status. For invited users, the
     state can be PendingAcceptance or Accepted, or null for all other users. Returned only on
     $select. Supports $filter with the supported values. For example: $filter=externalUserState eq
     'PendingAcceptance'.
    :type external_user_state: str
    :param external_user_state_change_date_time: Shows the timestamp for the latest change to the
     externalUserState property. Returned only on $select.
    :type external_user_state_change_date_time: ~datetime.datetime
    :param fax_number: The fax number of the user.
    :type fax_number: str
    :param given_name: The given name (first name) of the user. Supports $filter.
    :type given_name: str
    :param identities: Represents the identities that can be used to sign in to this user account.
     An identity can be provided by Microsoft (also known as a local account), by organizations, or
     by social identity providers such as Facebook, Google, and Microsoft, and tied to a user
     account. May contain multiple items with the same signInType value. Supports $filter.
    :type identities: list[~identity_sign_ins.models.microsoftgraphobjectidentity]
    :param im_addresses: The instant message voice over IP (VOIP) session initiation protocol (SIP)
     addresses for the user. Read-only.
    :type im_addresses: list[str]
    :param is_resource_account: Do not use – reserved for future use.
    :type is_resource_account: bool
    :param job_title: The user’s job title. Supports $filter.
    :type job_title: str
    :param last_password_change_date_time: The time when this Azure AD user last changed their
     password. The date and time information uses ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type last_password_change_date_time: ~datetime.datetime
    :param legal_age_group_classification: Used by enterprise applications to determine the legal
     age group of the user. This property is read-only and calculated based on ageGroup and
     consentProvidedForMinor properties. Allowed values: null, minorWithOutParentalConsent,
     minorWithParentalConsent, minorNoParentalConsentRequired, notAdult and adult. Refer to the
     legal age group property definitions for further information.).
    :type legal_age_group_classification: str
    :param license_assignment_states: State of license assignments for this user. Read-only.
    :type license_assignment_states:
     list[~identity_sign_ins.models.microsoftgraphlicenseassignmentstate]
    :param mail: The SMTP address for the user, for example, 'jeff@contoso.onmicrosoft.com'.
     Supports $filter.
    :type mail: str
    :param mail_nickname: The mail alias for the user. This property must be specified when a user
     is created. Supports $filter.
    :type mail_nickname: str
    :param mobile_phone: The primary cellular telephone number for the user.
    :type mobile_phone: str
    :param office_location: The office location in the user's place of business.
    :type office_location: str
    :param on_premises_distinguished_name: Contains the on-premises Active Directory distinguished
     name or DN. The property is only populated for customers who are synchronizing their on-
     premises directory to Azure Active Directory via Azure AD Connect. Read-only.
    :type on_premises_distinguished_name: str
    :param on_premises_domain_name: Contains the on-premises domainFQDN, also called dnsDomainName
     synchronized from the on-premises directory. The property is only populated for customers who
     are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect.
     Read-only.
    :type on_premises_domain_name: str
    :param on_premises_extension_attributes: onPremisesExtensionAttributes.
    :type on_premises_extension_attributes:
     ~identity_sign_ins.models.microsoftgraphonpremisesextensionattributes
    :param on_premises_immutable_id: This property is used to associate an on-premises Active
     Directory user account to their Azure AD user object. This property must be specified when
     creating a new user account in the Graph if you are using a federated domain for the user’s
     userPrincipalName (UPN) property. Important: The $ and _ characters cannot be used when
     specifying this property. Supports $filter.
    :type on_premises_immutable_id: str
    :param on_premises_last_sync_date_time: Indicates the last time at which the object was synced
     with the on-premises directory; for example: '2013-02-16T03:04:54Z'. The Timestamp type
     represents date and time information using ISO 8601 format and is always in UTC time. For
     example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z'. Read-only.
    :type on_premises_last_sync_date_time: ~datetime.datetime
    :param on_premises_provisioning_errors: Errors when using Microsoft synchronization product
     during provisioning.
    :type on_premises_provisioning_errors:
     list[~identity_sign_ins.models.microsoftgraphonpremisesprovisioningerror]
    :param on_premises_sam_account_name: Contains the on-premises samAccountName synchronized from
     the on-premises directory. The property is only populated for customers who are synchronizing
     their on-premises directory to Azure Active Directory via Azure AD Connect. Read-only.
    :type on_premises_sam_account_name: str
    :param on_premises_security_identifier: Contains the on-premises security identifier (SID) for
     the user that was synchronized from on-premises to the cloud. Read-only.
    :type on_premises_security_identifier: str
    :param on_premises_sync_enabled: true if this object is synced from an on-premises directory;
     false if this object was originally synced from an on-premises directory but is no longer
     synced; null if this object has never been synced from an on-premises directory (default).
     Read-only.
    :type on_premises_sync_enabled: bool
    :param on_premises_user_principal_name: Contains the on-premises userPrincipalName synchronized
     from the on-premises directory. The property is only populated for customers who are
     synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. Read-
     only.
    :type on_premises_user_principal_name: str
    :param other_mails: A list of additional email addresses for the user; for example:
     ['bob@contoso.com', 'Robert@fabrikam.com']. Supports $filter.
    :type other_mails: list[str]
    :param password_policies: Specifies password policies for the user. This value is an
     enumeration with one possible value being 'DisableStrongPassword', which allows weaker
     passwords than the default policy to be specified. 'DisablePasswordExpiration' can also be
     specified. The two may be specified together; for example: 'DisablePasswordExpiration,
     DisableStrongPassword'.
    :type password_policies: str
    :param password_profile: passwordProfile.
    :type password_profile: ~identity_sign_ins.models.microsoftgraphpasswordprofile
    :param postal_code: The postal code for the user's postal address. The postal code is specific
     to the user's country/region. In the United States of America, this attribute contains the ZIP
     code.
    :type postal_code: str
    :param preferred_language: The preferred language for the user. Should follow ISO 639-1 Code;
     for example 'en-US'.
    :type preferred_language: str
    :param provisioned_plans: The plans that are provisioned for the user. Read-only. Not nullable.
    :type provisioned_plans: list[~identity_sign_ins.models.microsoftgraphprovisionedplan]
    :param proxy_addresses: For example: ['SMTP: bob@contoso.com', 'smtp: bob@sales.contoso.com']
     The any operator is required for filter expressions on multi-valued properties. Read-only, Not
     nullable. Supports $filter.
    :type proxy_addresses: list[str]
    :param show_in_address_list: true if the Outlook global address list should contain this user,
     otherwise false. If not set, this will be treated as true. For users invited through the
     invitation manager, this property will be set to false.
    :type show_in_address_list: bool
    :param sign_in_sessions_valid_from_date_time: Any refresh tokens or sessions tokens (session
     cookies) issued before this time are invalid, and applications will get an error when using an
     invalid refresh or sessions token to acquire a delegated access token (to access APIs such as
     Microsoft Graph).  If this happens, the application will need to acquire a new refresh token by
     making a request to the authorize endpoint. Read-only. Use revokeSignInSessions to reset.
    :type sign_in_sessions_valid_from_date_time: ~datetime.datetime
    :param state: The state or province in the user's address. Supports $filter.
    :type state: str
    :param street_address: The street address of the user's place of business.
    :type street_address: str
    :param surname: The user's surname (family name or last name). Supports $filter.
    :type surname: str
    :param usage_location: A two letter country code (ISO standard 3166). Required for users that
     will be assigned licenses due to legal requirement to check for availability of services in
     countries.  Examples include: 'US', 'JP', and 'GB'. Not nullable. Supports $filter.
    :type usage_location: str
    :param user_principal_name: The user principal name (UPN) of the user. The UPN is an Internet-
     style login name for the user based on the Internet standard RFC 822. By convention, this
     should map to the user's email name. The general format is alias@domain, where domain must be
     present in the tenant’s collection of verified domains. This property is required when a user
     is created. The verified domains for the tenant can be accessed from the verifiedDomains
     property of organization. Supports $filter and $orderby.
    :type user_principal_name: str
    :param user_type: A string value that can be used to classify user types in your directory,
     such as 'Member' and 'Guest'. Supports $filter.
    :type user_type: str
    :param mailbox_settings: mailboxSettings.
    :type mailbox_settings: ~identity_sign_ins.models.microsoftgraphmailboxsettings
    :param device_enrollment_limit: The limit on the maximum number of devices that the user is
     permitted to enroll. Allowed values are 5 or 1000.
    :type device_enrollment_limit: int
    :param about_me: A freeform text entry field for the user to describe themselves.
    :type about_me: str
    :param birthday: The birthday of the user. The Timestamp type represents date and time
     information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan
     1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type birthday: ~datetime.datetime
    :param hire_date: The hire date of the user. The Timestamp type represents date and time
     information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan
     1, 2014 would look like this: '2014-01-01T00:00:00Z'.
    :type hire_date: ~datetime.datetime
    :param interests: A list for the user to describe their interests.
    :type interests: list[str]
    :param my_site: The URL for the user's personal site.
    :type my_site: str
    :param past_projects: A list for the user to enumerate their past projects.
    :type past_projects: list[str]
    :param preferred_name: The preferred name for the user.
    :type preferred_name: str
    :param responsibilities: A list for the user to enumerate their responsibilities.
    :type responsibilities: list[str]
    :param schools: A list for the user to enumerate the schools they have attended.
    :type schools: list[str]
    :param skills: A list for the user to enumerate their skills.
    :type skills: list[str]
    :param app_role_assignments:
    :type app_role_assignments: list[~identity_sign_ins.models.microsoftgraphapproleassignment]
    :param created_objects: Directory objects that were created by the user. Read-only. Nullable.
    :type created_objects: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param direct_reports: The users and contacts that report to the user. (The users and contacts
     that have their manager property set to this user.) Read-only. Nullable.
    :type direct_reports: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param license_details: A collection of this user's license details. Read-only.
    :type license_details: list[~identity_sign_ins.models.microsoftgraphlicensedetails]
    :param manager: Represents an Azure Active Directory object. The directoryObject type is the
     base type for many other directory entity types.
    :type manager: ~identity_sign_ins.models.microsoftgraphdirectoryobject
    :param member_of: The groups and directory roles that the user is a member of. Read-only.
     Nullable.
    :type member_of: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param oauth2_permission_grants:
    :type oauth2_permission_grants:
     list[~identity_sign_ins.models.microsoftgraphoauth2permissiongrant]
    :param owned_devices: Devices that are owned by the user. Read-only. Nullable.
    :type owned_devices: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param owned_objects: Directory objects that are owned by the user. Read-only. Nullable.
    :type owned_objects: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param registered_devices: Devices that are registered for the user. Read-only. Nullable.
    :type registered_devices: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param scoped_role_member_of:
    :type scoped_role_member_of: list[~identity_sign_ins.models.microsoftgraphscopedrolemembership]
    :param transitive_member_of:
    :type transitive_member_of: list[~identity_sign_ins.models.microsoftgraphdirectoryobject]
    :param calendar: calendar.
    :type calendar: ~identity_sign_ins.models.microsoftgraphcalendar
    :param calendar_groups: The user's calendar groups. Read-only. Nullable.
    :type calendar_groups: list[~identity_sign_ins.models.microsoftgraphcalendargroup]
    :param calendars: The user's calendars. Read-only. Nullable.
    :type calendars: list[~identity_sign_ins.models.microsoftgraphcalendar]
    :param calendar_view: The calendar view for the calendar. Read-only. Nullable.
    :type calendar_view: list[~identity_sign_ins.models.microsoftgraphevent]
    :param contact_folders: The user's contacts folders. Read-only. Nullable.
    :type contact_folders: list[~identity_sign_ins.models.microsoftgraphcontactfolder]
    :param contacts: The user's contacts. Read-only. Nullable.
    :type contacts: list[~identity_sign_ins.models.microsoftgraphcontact]
    :param events: The user's events. Default is to show Events under the Default Calendar. Read-
     only. Nullable.
    :type events: list[~identity_sign_ins.models.microsoftgraphevent]
    :param inference_classification: inferenceClassification.
    :type inference_classification: ~identity_sign_ins.models.microsoftgraphinferenceclassification
    :param mail_folders: The user's mail folders. Read-only. Nullable.
    :type mail_folders: list[~identity_sign_ins.models.microsoftgraphmailfolder]
    :param messages: The messages in a mailbox or folder. Read-only. Nullable.
    :type messages: list[~identity_sign_ins.models.microsoftgraphmessage]
    :param outlook: outlookUser.
    :type outlook: ~identity_sign_ins.models.microsoftgraphoutlookuser
    :param people: People that are relevant to the user. Read-only. Nullable.
    :type people: list[~identity_sign_ins.models.microsoftgraphperson]
    :param photo: profilePhoto.
    :type photo: ~identity_sign_ins.models.microsoftgraphprofilephoto
    :param photos:
    :type photos: list[~identity_sign_ins.models.microsoftgraphprofilephoto]
    :param drive: drive.
    :type drive: ~identity_sign_ins.models.microsoftgraphdrive
    :param drives: A collection of drives available for this user. Read-only.
    :type drives: list[~identity_sign_ins.models.microsoftgraphdrive]
    :param followed_sites:
    :type followed_sites: list[~identity_sign_ins.models.microsoftgraphsite]
    :param extensions: The collection of open extensions defined for the user. Read-only. Nullable.
    :type extensions: list[~identity_sign_ins.models.microsoftgraphextension]
    :param managed_devices: The managed devices associated with the user.
    :type managed_devices: list[~identity_sign_ins.models.microsoftgraphmanageddevice]
    :param managed_app_registrations: Zero or more managed app registrations that belong to the
     user.
    :type managed_app_registrations:
     list[~identity_sign_ins.models.microsoftgraphmanagedappregistration]
    :param device_management_troubleshooting_events: The list of troubleshooting events for this
     user.
    :type device_management_troubleshooting_events:
     list[~identity_sign_ins.models.microsoftgraphdevicemanagementtroubleshootingevent]
    :param planner: plannerUser.
    :type planner: ~identity_sign_ins.models.microsoftgraphplanneruser
    :param insights: officeGraphInsights.
    :type insights: ~identity_sign_ins.models.microsoftgraphofficegraphinsights
    :param settings: userSettings.
    :type settings: ~identity_sign_ins.models.microsoftgraphusersettings
    :param onenote: onenote.
    :type onenote: ~identity_sign_ins.models.microsoftgraphonenote
    :param activities: The user's activities across devices. Read-only. Nullable.
    :type activities: list[~identity_sign_ins.models.microsoftgraphuseractivity]
    :param online_meetings:
    :type online_meetings: list[~identity_sign_ins.models.microsoftgraphonlinemeeting]
    :param joined_teams:
    :type joined_teams: list[~identity_sign_ins.models.microsoftgraphteam]
    """

    _validation = {
        'device_enrollment_limit': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'deleted_date_time': {'key': 'deletedDateTime', 'type': 'iso-8601'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'account_enabled': {'key': 'accountEnabled', 'type': 'bool'},
        'age_group': {'key': 'ageGroup', 'type': 'str'},
        'assigned_licenses': {'key': 'assignedLicenses', 'type': '[microsoftgraphassignedlicense]'},
        'assigned_plans': {'key': 'assignedPlans', 'type': '[microsoftgraphassignedplan]'},
        'business_phones': {'key': 'businessPhones', 'type': '[str]'},
        'city': {'key': 'city', 'type': 'str'},
        'company_name': {'key': 'companyName', 'type': 'str'},
        'consent_provided_for_minor': {'key': 'consentProvidedForMinor', 'type': 'str'},
        'country': {'key': 'country', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'creation_type': {'key': 'creationType', 'type': 'str'},
        'department': {'key': 'department', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'employee_id': {'key': 'employeeId', 'type': 'str'},
        'external_user_state': {'key': 'externalUserState', 'type': 'str'},
        'external_user_state_change_date_time': {'key': 'externalUserStateChangeDateTime', 'type': 'iso-8601'},
        'fax_number': {'key': 'faxNumber', 'type': 'str'},
        'given_name': {'key': 'givenName', 'type': 'str'},
        'identities': {'key': 'identities', 'type': '[microsoftgraphobjectidentity]'},
        'im_addresses': {'key': 'imAddresses', 'type': '[str]'},
        'is_resource_account': {'key': 'isResourceAccount', 'type': 'bool'},
        'job_title': {'key': 'jobTitle', 'type': 'str'},
        'last_password_change_date_time': {'key': 'lastPasswordChangeDateTime', 'type': 'iso-8601'},
        'legal_age_group_classification': {'key': 'legalAgeGroupClassification', 'type': 'str'},
        'license_assignment_states': {'key': 'licenseAssignmentStates', 'type': '[microsoftgraphlicenseassignmentstate]'},
        'mail': {'key': 'mail', 'type': 'str'},
        'mail_nickname': {'key': 'mailNickname', 'type': 'str'},
        'mobile_phone': {'key': 'mobilePhone', 'type': 'str'},
        'office_location': {'key': 'officeLocation', 'type': 'str'},
        'on_premises_distinguished_name': {'key': 'onPremisesDistinguishedName', 'type': 'str'},
        'on_premises_domain_name': {'key': 'onPremisesDomainName', 'type': 'str'},
        'on_premises_extension_attributes': {'key': 'onPremisesExtensionAttributes', 'type': 'microsoftgraphonpremisesextensionattributes'},
        'on_premises_immutable_id': {'key': 'onPremisesImmutableId', 'type': 'str'},
        'on_premises_last_sync_date_time': {'key': 'onPremisesLastSyncDateTime', 'type': 'iso-8601'},
        'on_premises_provisioning_errors': {'key': 'onPremisesProvisioningErrors', 'type': '[microsoftgraphonpremisesprovisioningerror]'},
        'on_premises_sam_account_name': {'key': 'onPremisesSamAccountName', 'type': 'str'},
        'on_premises_security_identifier': {'key': 'onPremisesSecurityIdentifier', 'type': 'str'},
        'on_premises_sync_enabled': {'key': 'onPremisesSyncEnabled', 'type': 'bool'},
        'on_premises_user_principal_name': {'key': 'onPremisesUserPrincipalName', 'type': 'str'},
        'other_mails': {'key': 'otherMails', 'type': '[str]'},
        'password_policies': {'key': 'passwordPolicies', 'type': 'str'},
        'password_profile': {'key': 'passwordProfile', 'type': 'microsoftgraphpasswordprofile'},
        'postal_code': {'key': 'postalCode', 'type': 'str'},
        'preferred_language': {'key': 'preferredLanguage', 'type': 'str'},
        'provisioned_plans': {'key': 'provisionedPlans', 'type': '[microsoftgraphprovisionedplan]'},
        'proxy_addresses': {'key': 'proxyAddresses', 'type': '[str]'},
        'show_in_address_list': {'key': 'showInAddressList', 'type': 'bool'},
        'sign_in_sessions_valid_from_date_time': {'key': 'signInSessionsValidFromDateTime', 'type': 'iso-8601'},
        'state': {'key': 'state', 'type': 'str'},
        'street_address': {'key': 'streetAddress', 'type': 'str'},
        'surname': {'key': 'surname', 'type': 'str'},
        'usage_location': {'key': 'usageLocation', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
        'user_type': {'key': 'userType', 'type': 'str'},
        'mailbox_settings': {'key': 'mailboxSettings', 'type': 'microsoftgraphmailboxsettings'},
        'device_enrollment_limit': {'key': 'deviceEnrollmentLimit', 'type': 'int'},
        'about_me': {'key': 'aboutMe', 'type': 'str'},
        'birthday': {'key': 'birthday', 'type': 'iso-8601'},
        'hire_date': {'key': 'hireDate', 'type': 'iso-8601'},
        'interests': {'key': 'interests', 'type': '[str]'},
        'my_site': {'key': 'mySite', 'type': 'str'},
        'past_projects': {'key': 'pastProjects', 'type': '[str]'},
        'preferred_name': {'key': 'preferredName', 'type': 'str'},
        'responsibilities': {'key': 'responsibilities', 'type': '[str]'},
        'schools': {'key': 'schools', 'type': '[str]'},
        'skills': {'key': 'skills', 'type': '[str]'},
        'app_role_assignments': {'key': 'appRoleAssignments', 'type': '[microsoftgraphapproleassignment]'},
        'created_objects': {'key': 'createdObjects', 'type': '[microsoftgraphdirectoryobject]'},
        'direct_reports': {'key': 'directReports', 'type': '[microsoftgraphdirectoryobject]'},
        'license_details': {'key': 'licenseDetails', 'type': '[microsoftgraphlicensedetails]'},
        'manager': {'key': 'manager', 'type': 'microsoftgraphdirectoryobject'},
        'member_of': {'key': 'memberOf', 'type': '[microsoftgraphdirectoryobject]'},
        'oauth2_permission_grants': {'key': 'oauth2PermissionGrants', 'type': '[microsoftgraphoauth2permissiongrant]'},
        'owned_devices': {'key': 'ownedDevices', 'type': '[microsoftgraphdirectoryobject]'},
        'owned_objects': {'key': 'ownedObjects', 'type': '[microsoftgraphdirectoryobject]'},
        'registered_devices': {'key': 'registeredDevices', 'type': '[microsoftgraphdirectoryobject]'},
        'scoped_role_member_of': {'key': 'scopedRoleMemberOf', 'type': '[microsoftgraphscopedrolemembership]'},
        'transitive_member_of': {'key': 'transitiveMemberOf', 'type': '[microsoftgraphdirectoryobject]'},
        'calendar': {'key': 'calendar', 'type': 'microsoftgraphcalendar'},
        'calendar_groups': {'key': 'calendarGroups', 'type': '[microsoftgraphcalendargroup]'},
        'calendars': {'key': 'calendars', 'type': '[microsoftgraphcalendar]'},
        'calendar_view': {'key': 'calendarView', 'type': '[microsoftgraphevent]'},
        'contact_folders': {'key': 'contactFolders', 'type': '[microsoftgraphcontactfolder]'},
        'contacts': {'key': 'contacts', 'type': '[microsoftgraphcontact]'},
        'events': {'key': 'events', 'type': '[microsoftgraphevent]'},
        'inference_classification': {'key': 'inferenceClassification', 'type': 'microsoftgraphinferenceclassification'},
        'mail_folders': {'key': 'mailFolders', 'type': '[microsoftgraphmailfolder]'},
        'messages': {'key': 'messages', 'type': '[microsoftgraphmessage]'},
        'outlook': {'key': 'outlook', 'type': 'microsoftgraphoutlookuser'},
        'people': {'key': 'people', 'type': '[microsoftgraphperson]'},
        'photo': {'key': 'photo', 'type': 'microsoftgraphprofilephoto'},
        'photos': {'key': 'photos', 'type': '[microsoftgraphprofilephoto]'},
        'drive': {'key': 'drive', 'type': 'microsoftgraphdrive'},
        'drives': {'key': 'drives', 'type': '[microsoftgraphdrive]'},
        'followed_sites': {'key': 'followedSites', 'type': '[microsoftgraphsite]'},
        'extensions': {'key': 'extensions', 'type': '[microsoftgraphextension]'},
        'managed_devices': {'key': 'managedDevices', 'type': '[microsoftgraphmanageddevice]'},
        'managed_app_registrations': {'key': 'managedAppRegistrations', 'type': '[microsoftgraphmanagedappregistration]'},
        'device_management_troubleshooting_events': {'key': 'deviceManagementTroubleshootingEvents', 'type': '[microsoftgraphdevicemanagementtroubleshootingevent]'},
        'planner': {'key': 'planner', 'type': 'microsoftgraphplanneruser'},
        'insights': {'key': 'insights', 'type': 'microsoftgraphofficegraphinsights'},
        'settings': {'key': 'settings', 'type': 'microsoftgraphusersettings'},
        'onenote': {'key': 'onenote', 'type': 'microsoftgraphonenote'},
        'activities': {'key': 'activities', 'type': '[microsoftgraphuseractivity]'},
        'online_meetings': {'key': 'onlineMeetings', 'type': '[microsoftgraphonlinemeeting]'},
        'joined_teams': {'key': 'joinedTeams', 'type': '[microsoftgraphteam]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        deleted_date_time: Optional[datetime.datetime] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        account_enabled: Optional[bool] = None,
        age_group: Optional[str] = None,
        assigned_licenses: Optional[List["microsoftgraphassignedlicense"]] = None,
        assigned_plans: Optional[List["microsoftgraphassignedplan"]] = None,
        business_phones: Optional[List[str]] = None,
        city: Optional[str] = None,
        company_name: Optional[str] = None,
        consent_provided_for_minor: Optional[str] = None,
        country: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        creation_type: Optional[str] = None,
        department: Optional[str] = None,
        display_name: Optional[str] = None,
        employee_id: Optional[str] = None,
        external_user_state: Optional[str] = None,
        external_user_state_change_date_time: Optional[datetime.datetime] = None,
        fax_number: Optional[str] = None,
        given_name: Optional[str] = None,
        identities: Optional[List["microsoftgraphobjectidentity"]] = None,
        im_addresses: Optional[List[str]] = None,
        is_resource_account: Optional[bool] = None,
        job_title: Optional[str] = None,
        last_password_change_date_time: Optional[datetime.datetime] = None,
        legal_age_group_classification: Optional[str] = None,
        license_assignment_states: Optional[List["microsoftgraphlicenseassignmentstate"]] = None,
        mail: Optional[str] = None,
        mail_nickname: Optional[str] = None,
        mobile_phone: Optional[str] = None,
        office_location: Optional[str] = None,
        on_premises_distinguished_name: Optional[str] = None,
        on_premises_domain_name: Optional[str] = None,
        on_premises_extension_attributes: Optional["microsoftgraphonpremisesextensionattributes"] = None,
        on_premises_immutable_id: Optional[str] = None,
        on_premises_last_sync_date_time: Optional[datetime.datetime] = None,
        on_premises_provisioning_errors: Optional[List["microsoftgraphonpremisesprovisioningerror"]] = None,
        on_premises_sam_account_name: Optional[str] = None,
        on_premises_security_identifier: Optional[str] = None,
        on_premises_sync_enabled: Optional[bool] = None,
        on_premises_user_principal_name: Optional[str] = None,
        other_mails: Optional[List[str]] = None,
        password_policies: Optional[str] = None,
        password_profile: Optional["microsoftgraphpasswordprofile"] = None,
        postal_code: Optional[str] = None,
        preferred_language: Optional[str] = None,
        provisioned_plans: Optional[List["microsoftgraphprovisionedplan"]] = None,
        proxy_addresses: Optional[List[str]] = None,
        show_in_address_list: Optional[bool] = None,
        sign_in_sessions_valid_from_date_time: Optional[datetime.datetime] = None,
        state: Optional[str] = None,
        street_address: Optional[str] = None,
        surname: Optional[str] = None,
        usage_location: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        user_type: Optional[str] = None,
        mailbox_settings: Optional["microsoftgraphmailboxsettings"] = None,
        device_enrollment_limit: Optional[int] = None,
        about_me: Optional[str] = None,
        birthday: Optional[datetime.datetime] = None,
        hire_date: Optional[datetime.datetime] = None,
        interests: Optional[List[str]] = None,
        my_site: Optional[str] = None,
        past_projects: Optional[List[str]] = None,
        preferred_name: Optional[str] = None,
        responsibilities: Optional[List[str]] = None,
        schools: Optional[List[str]] = None,
        skills: Optional[List[str]] = None,
        app_role_assignments: Optional[List["microsoftgraphapproleassignment"]] = None,
        created_objects: Optional[List["microsoftgraphdirectoryobject"]] = None,
        direct_reports: Optional[List["microsoftgraphdirectoryobject"]] = None,
        license_details: Optional[List["microsoftgraphlicensedetails"]] = None,
        manager: Optional["microsoftgraphdirectoryobject"] = None,
        member_of: Optional[List["microsoftgraphdirectoryobject"]] = None,
        oauth2_permission_grants: Optional[List["microsoftgraphoauth2permissiongrant"]] = None,
        owned_devices: Optional[List["microsoftgraphdirectoryobject"]] = None,
        owned_objects: Optional[List["microsoftgraphdirectoryobject"]] = None,
        registered_devices: Optional[List["microsoftgraphdirectoryobject"]] = None,
        scoped_role_member_of: Optional[List["microsoftgraphscopedrolemembership"]] = None,
        transitive_member_of: Optional[List["microsoftgraphdirectoryobject"]] = None,
        calendar: Optional["microsoftgraphcalendar"] = None,
        calendar_groups: Optional[List["microsoftgraphcalendargroup"]] = None,
        calendars: Optional[List["microsoftgraphcalendar"]] = None,
        calendar_view: Optional[List["microsoftgraphevent"]] = None,
        contact_folders: Optional[List["microsoftgraphcontactfolder"]] = None,
        contacts: Optional[List["microsoftgraphcontact"]] = None,
        events: Optional[List["microsoftgraphevent"]] = None,
        inference_classification: Optional["microsoftgraphinferenceclassification"] = None,
        mail_folders: Optional[List["microsoftgraphmailfolder"]] = None,
        messages: Optional[List["microsoftgraphmessage"]] = None,
        outlook: Optional["microsoftgraphoutlookuser"] = None,
        people: Optional[List["microsoftgraphperson"]] = None,
        photo: Optional["microsoftgraphprofilephoto"] = None,
        photos: Optional[List["microsoftgraphprofilephoto"]] = None,
        drive: Optional["microsoftgraphdrive"] = None,
        drives: Optional[List["microsoftgraphdrive"]] = None,
        followed_sites: Optional[List["microsoftgraphsite"]] = None,
        extensions: Optional[List["microsoftgraphextension"]] = None,
        managed_devices: Optional[List["microsoftgraphmanageddevice"]] = None,
        managed_app_registrations: Optional[List["microsoftgraphmanagedappregistration"]] = None,
        device_management_troubleshooting_events: Optional[List["microsoftgraphdevicemanagementtroubleshootingevent"]] = None,
        planner: Optional["microsoftgraphplanneruser"] = None,
        insights: Optional["microsoftgraphofficegraphinsights"] = None,
        settings: Optional["microsoftgraphusersettings"] = None,
        onenote: Optional["microsoftgraphonenote"] = None,
        activities: Optional[List["microsoftgraphuseractivity"]] = None,
        online_meetings: Optional[List["microsoftgraphonlinemeeting"]] = None,
        joined_teams: Optional[List["microsoftgraphteam"]] = None,
        **kwargs
    ):
        super(microsoftgraphuser, self).__init__(id=id, deleted_date_time=deleted_date_time, **kwargs)
        self.additional_properties = additional_properties
        self.account_enabled = account_enabled
        self.age_group = age_group
        self.assigned_licenses = assigned_licenses
        self.assigned_plans = assigned_plans
        self.business_phones = business_phones
        self.city = city
        self.company_name = company_name
        self.consent_provided_for_minor = consent_provided_for_minor
        self.country = country
        self.created_date_time = created_date_time
        self.creation_type = creation_type
        self.department = department
        self.display_name = display_name
        self.employee_id = employee_id
        self.external_user_state = external_user_state
        self.external_user_state_change_date_time = external_user_state_change_date_time
        self.fax_number = fax_number
        self.given_name = given_name
        self.identities = identities
        self.im_addresses = im_addresses
        self.is_resource_account = is_resource_account
        self.job_title = job_title
        self.last_password_change_date_time = last_password_change_date_time
        self.legal_age_group_classification = legal_age_group_classification
        self.license_assignment_states = license_assignment_states
        self.mail = mail
        self.mail_nickname = mail_nickname
        self.mobile_phone = mobile_phone
        self.office_location = office_location
        self.on_premises_distinguished_name = on_premises_distinguished_name
        self.on_premises_domain_name = on_premises_domain_name
        self.on_premises_extension_attributes = on_premises_extension_attributes
        self.on_premises_immutable_id = on_premises_immutable_id
        self.on_premises_last_sync_date_time = on_premises_last_sync_date_time
        self.on_premises_provisioning_errors = on_premises_provisioning_errors
        self.on_premises_sam_account_name = on_premises_sam_account_name
        self.on_premises_security_identifier = on_premises_security_identifier
        self.on_premises_sync_enabled = on_premises_sync_enabled
        self.on_premises_user_principal_name = on_premises_user_principal_name
        self.other_mails = other_mails
        self.password_policies = password_policies
        self.password_profile = password_profile
        self.postal_code = postal_code
        self.preferred_language = preferred_language
        self.provisioned_plans = provisioned_plans
        self.proxy_addresses = proxy_addresses
        self.show_in_address_list = show_in_address_list
        self.sign_in_sessions_valid_from_date_time = sign_in_sessions_valid_from_date_time
        self.state = state
        self.street_address = street_address
        self.surname = surname
        self.usage_location = usage_location
        self.user_principal_name = user_principal_name
        self.user_type = user_type
        self.mailbox_settings = mailbox_settings
        self.device_enrollment_limit = device_enrollment_limit
        self.about_me = about_me
        self.birthday = birthday
        self.hire_date = hire_date
        self.interests = interests
        self.my_site = my_site
        self.past_projects = past_projects
        self.preferred_name = preferred_name
        self.responsibilities = responsibilities
        self.schools = schools
        self.skills = skills
        self.app_role_assignments = app_role_assignments
        self.created_objects = created_objects
        self.direct_reports = direct_reports
        self.license_details = license_details
        self.manager = manager
        self.member_of = member_of
        self.oauth2_permission_grants = oauth2_permission_grants
        self.owned_devices = owned_devices
        self.owned_objects = owned_objects
        self.registered_devices = registered_devices
        self.scoped_role_member_of = scoped_role_member_of
        self.transitive_member_of = transitive_member_of
        self.calendar = calendar
        self.calendar_groups = calendar_groups
        self.calendars = calendars
        self.calendar_view = calendar_view
        self.contact_folders = contact_folders
        self.contacts = contacts
        self.events = events
        self.inference_classification = inference_classification
        self.mail_folders = mail_folders
        self.messages = messages
        self.outlook = outlook
        self.people = people
        self.photo = photo
        self.photos = photos
        self.drive = drive
        self.drives = drives
        self.followed_sites = followed_sites
        self.extensions = extensions
        self.managed_devices = managed_devices
        self.managed_app_registrations = managed_app_registrations
        self.device_management_troubleshooting_events = device_management_troubleshooting_events
        self.planner = planner
        self.insights = insights
        self.settings = settings
        self.onenote = onenote
        self.activities = activities
        self.online_meetings = online_meetings
        self.joined_teams = joined_teams


class microsoftgraphuseractivity(microsoftgraphentity):
    """userActivity.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param activation_url: Required. URL used to launch the activity in the best native experience
     represented by the appId. Might launch a web-based app if no native app exists.
    :type activation_url: str
    :param activity_source_host: Required. URL for the domain representing the cross-platform
     identity mapping for the app. Mapping is stored either as a JSON file hosted on the domain or
     configurable via Windows Dev Center. The JSON file is named cross-platform-app-identifiers and
     is hosted at root of your HTTPS domain, either at the top level domain or include a sub domain.
     For example: https://contoso.com or https://myapp.contoso.com but NOT
     https://myapp.contoso.com/somepath. You must have a unique file and domain (or sub domain) per
     cross-platform app identity. For example, a separate file and domain is needed for Word vs.
     PowerPoint.
    :type activity_source_host: str
    :param app_activity_id: Required. The unique activity ID in the context of the app - supplied
     by caller and immutable thereafter.
    :type app_activity_id: str
    :param app_display_name: Optional. Short text description of the app used to generate the
     activity for use in cases when the app is not installed on the user’s local device.
    :type app_display_name: str
    :param content_info: Json.
    :type content_info: dict[str, object]
    :param content_url: Optional. Used in the event the content can be rendered outside of a native
     or web-based app experience (for example, a pointer to an item in an RSS feed).
    :type content_url: str
    :param created_date_time: Set by the server. DateTime in UTC when the object was created on the
     server.
    :type created_date_time: ~datetime.datetime
    :param expiration_date_time: Set by the server. DateTime in UTC when the object expired on the
     server.
    :type expiration_date_time: ~datetime.datetime
    :param fallback_url: Optional. URL used to launch the activity in a web-based app, if
     available.
    :type fallback_url: str
    :param last_modified_date_time: Set by the server. DateTime in UTC when the object was modified
     on the server.
    :type last_modified_date_time: ~datetime.datetime
    :param status:  Possible values include: "active", "updated", "deleted", "ignored",
     "unknownFutureValue".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphstatus
    :param user_timezone: Optional. The timezone in which the user's device used to generate the
     activity was located at activity creation time; values supplied as Olson IDs in order to
     support cross-platform representation.
    :type user_timezone: str
    :param visual_elements: visualInfo.
    :type visual_elements: ~identity_sign_ins.models.microsoftgraphvisualinfo
    :param history_items: Optional. NavigationProperty/Containment; navigation property to the
     activity's historyItems.
    :type history_items: list[~identity_sign_ins.models.microsoftgraphactivityhistoryitem]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'activation_url': {'key': 'activationUrl', 'type': 'str'},
        'activity_source_host': {'key': 'activitySourceHost', 'type': 'str'},
        'app_activity_id': {'key': 'appActivityId', 'type': 'str'},
        'app_display_name': {'key': 'appDisplayName', 'type': 'str'},
        'content_info': {'key': 'contentInfo', 'type': '{object}'},
        'content_url': {'key': 'contentUrl', 'type': 'str'},
        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
        'expiration_date_time': {'key': 'expirationDateTime', 'type': 'iso-8601'},
        'fallback_url': {'key': 'fallbackUrl', 'type': 'str'},
        'last_modified_date_time': {'key': 'lastModifiedDateTime', 'type': 'iso-8601'},
        'status': {'key': 'status', 'type': 'str'},
        'user_timezone': {'key': 'userTimezone', 'type': 'str'},
        'visual_elements': {'key': 'visualElements', 'type': 'microsoftgraphvisualinfo'},
        'history_items': {'key': 'historyItems', 'type': '[microsoftgraphactivityhistoryitem]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        activation_url: Optional[str] = None,
        activity_source_host: Optional[str] = None,
        app_activity_id: Optional[str] = None,
        app_display_name: Optional[str] = None,
        content_info: Optional[Dict[str, object]] = None,
        content_url: Optional[str] = None,
        created_date_time: Optional[datetime.datetime] = None,
        expiration_date_time: Optional[datetime.datetime] = None,
        fallback_url: Optional[str] = None,
        last_modified_date_time: Optional[datetime.datetime] = None,
        status: Optional[Union[str, "Microsoftgraphstatus"]] = None,
        user_timezone: Optional[str] = None,
        visual_elements: Optional["microsoftgraphvisualinfo"] = None,
        history_items: Optional[List["microsoftgraphactivityhistoryitem"]] = None,
        **kwargs
    ):
        super(microsoftgraphuseractivity, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.activation_url = activation_url
        self.activity_source_host = activity_source_host
        self.app_activity_id = app_activity_id
        self.app_display_name = app_display_name
        self.content_info = content_info
        self.content_url = content_url
        self.created_date_time = created_date_time
        self.expiration_date_time = expiration_date_time
        self.fallback_url = fallback_url
        self.last_modified_date_time = last_modified_date_time
        self.status = status
        self.user_timezone = user_timezone
        self.visual_elements = visual_elements
        self.history_items = history_items


class microsoftgraphusersettings(microsoftgraphentity):
    """userSettings.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param contribution_to_content_discovery_as_organization_disabled:
    :type contribution_to_content_discovery_as_organization_disabled: bool
    :param contribution_to_content_discovery_disabled:
    :type contribution_to_content_discovery_disabled: bool
    :param shift_preferences: shiftPreferences.
    :type shift_preferences: ~identity_sign_ins.models.microsoftgraphshiftpreferences
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'contribution_to_content_discovery_as_organization_disabled': {'key': 'contributionToContentDiscoveryAsOrganizationDisabled', 'type': 'bool'},
        'contribution_to_content_discovery_disabled': {'key': 'contributionToContentDiscoveryDisabled', 'type': 'bool'},
        'shift_preferences': {'key': 'shiftPreferences', 'type': 'microsoftgraphshiftpreferences'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        contribution_to_content_discovery_as_organization_disabled: Optional[bool] = None,
        contribution_to_content_discovery_disabled: Optional[bool] = None,
        shift_preferences: Optional["microsoftgraphshiftpreferences"] = None,
        **kwargs
    ):
        super(microsoftgraphusersettings, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.contribution_to_content_discovery_as_organization_disabled = contribution_to_content_discovery_as_organization_disabled
        self.contribution_to_content_discovery_disabled = contribution_to_content_discovery_disabled
        self.shift_preferences = shift_preferences


class microsoftgraphvideo(msrest.serialization.Model):
    """video.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param audio_bits_per_sample: Number of audio bits per sample.
    :type audio_bits_per_sample: int
    :param audio_channels: Number of audio channels.
    :type audio_channels: int
    :param audio_format: Name of the audio format (AAC, MP3, etc.).
    :type audio_format: str
    :param audio_samples_per_second: Number of audio samples per second.
    :type audio_samples_per_second: int
    :param bitrate: Bit rate of the video in bits per second.
    :type bitrate: int
    :param duration: Duration of the file in milliseconds.
    :type duration: long
    :param four_cc: 'Four character code' name of the video format.
    :type four_cc: str
    :param frame_rate: Frame rate of the video.
    :type frame_rate: float
    :param height: Height of the video, in pixels.
    :type height: int
    :param width: Width of the video, in pixels.
    :type width: int
    """

    _validation = {
        'audio_bits_per_sample': {'maximum': 2147483647, 'minimum': -2147483648},
        'audio_channels': {'maximum': 2147483647, 'minimum': -2147483648},
        'audio_samples_per_second': {'maximum': 2147483647, 'minimum': -2147483648},
        'bitrate': {'maximum': 2147483647, 'minimum': -2147483648},
        'height': {'maximum': 2147483647, 'minimum': -2147483648},
        'width': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'audio_bits_per_sample': {'key': 'audioBitsPerSample', 'type': 'int'},
        'audio_channels': {'key': 'audioChannels', 'type': 'int'},
        'audio_format': {'key': 'audioFormat', 'type': 'str'},
        'audio_samples_per_second': {'key': 'audioSamplesPerSecond', 'type': 'int'},
        'bitrate': {'key': 'bitrate', 'type': 'int'},
        'duration': {'key': 'duration', 'type': 'long'},
        'four_cc': {'key': 'fourCC', 'type': 'str'},
        'frame_rate': {'key': 'frameRate', 'type': 'float'},
        'height': {'key': 'height', 'type': 'int'},
        'width': {'key': 'width', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        audio_bits_per_sample: Optional[int] = None,
        audio_channels: Optional[int] = None,
        audio_format: Optional[str] = None,
        audio_samples_per_second: Optional[int] = None,
        bitrate: Optional[int] = None,
        duration: Optional[int] = None,
        four_cc: Optional[str] = None,
        frame_rate: Optional[float] = None,
        height: Optional[int] = None,
        width: Optional[int] = None,
        **kwargs
    ):
        super(microsoftgraphvideo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.audio_bits_per_sample = audio_bits_per_sample
        self.audio_channels = audio_channels
        self.audio_format = audio_format
        self.audio_samples_per_second = audio_samples_per_second
        self.bitrate = bitrate
        self.duration = duration
        self.four_cc = four_cc
        self.frame_rate = frame_rate
        self.height = height
        self.width = width


class microsoftgraphvisualinfo(msrest.serialization.Model):
    """visualInfo.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param attribution: imageInfo.
    :type attribution: ~identity_sign_ins.models.microsoftgraphimageinfo
    :param background_color: Optional. Background color used to render the activity in the UI -
     brand color for the application source of the activity. Must be a valid hex color.
    :type background_color: str
    :param content: Json.
    :type content: dict[str, object]
    :param description: Optional. Longer text description of the user's unique activity (example:
     document name, first sentence, and/or metadata).
    :type description: str
    :param display_text: Required. Short text description of the user's unique activity (for
     example, document name in cases where an activity refers to document creation).
    :type display_text: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'attribution': {'key': 'attribution', 'type': 'microsoftgraphimageinfo'},
        'background_color': {'key': 'backgroundColor', 'type': 'str'},
        'content': {'key': 'content', 'type': '{object}'},
        'description': {'key': 'description', 'type': 'str'},
        'display_text': {'key': 'displayText', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        attribution: Optional["microsoftgraphimageinfo"] = None,
        background_color: Optional[str] = None,
        content: Optional[Dict[str, object]] = None,
        description: Optional[str] = None,
        display_text: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphvisualinfo, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.attribution = attribution
        self.background_color = background_color
        self.content = content
        self.description = description
        self.display_text = display_text


class microsoftgraphwebsite(msrest.serialization.Model):
    """website.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param address: The URL of the website.
    :type address: str
    :param display_name: The display name of the web site.
    :type display_name: str
    :param type:  Possible values include: "other", "home", "work", "blog", "profile".
    :type type: str or ~identity_sign_ins.models.Microsoftgraphwebsitetype
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'address': {'key': 'address', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        address: Optional[str] = None,
        display_name: Optional[str] = None,
        type: Optional[Union[str, "Microsoftgraphwebsitetype"]] = None,
        **kwargs
    ):
        super(microsoftgraphwebsite, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.address = address
        self.display_name = display_name
        self.type = type


class microsoftgraphworkbook(microsoftgraphentity):
    """workbook.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param application: workbookApplication.
    :type application: ~identity_sign_ins.models.microsoftgraphworkbookapplication
    :param comments:
    :type comments: list[~identity_sign_ins.models.microsoftgraphworkbookcomment]
    :param functions: workbookFunctions.
    :type functions: ~identity_sign_ins.models.microsoftgraphworkbookfunctions
    :param names: Represents a collection of workbook scoped named items (named ranges and
     constants). Read-only.
    :type names: list[~identity_sign_ins.models.microsoftgraphworkbooknameditem]
    :param operations: The status of workbook operations. Getting an operation collection is not
     supported, but you can get the status of a long-running operation if the Location header is
     returned in the response. Read-only.
    :type operations: list[~identity_sign_ins.models.microsoftgraphworkbookoperation]
    :param tables: Represents a collection of tables associated with the workbook. Read-only.
    :type tables: list[~identity_sign_ins.models.microsoftgraphworkbooktable]
    :param worksheets: Represents a collection of worksheets associated with the workbook. Read-
     only.
    :type worksheets: list[~identity_sign_ins.models.microsoftgraphworkbookworksheet]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'application': {'key': 'application', 'type': 'microsoftgraphworkbookapplication'},
        'comments': {'key': 'comments', 'type': '[microsoftgraphworkbookcomment]'},
        'functions': {'key': 'functions', 'type': 'microsoftgraphworkbookfunctions'},
        'names': {'key': 'names', 'type': '[microsoftgraphworkbooknameditem]'},
        'operations': {'key': 'operations', 'type': '[microsoftgraphworkbookoperation]'},
        'tables': {'key': 'tables', 'type': '[microsoftgraphworkbooktable]'},
        'worksheets': {'key': 'worksheets', 'type': '[microsoftgraphworkbookworksheet]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        application: Optional["microsoftgraphworkbookapplication"] = None,
        comments: Optional[List["microsoftgraphworkbookcomment"]] = None,
        functions: Optional["microsoftgraphworkbookfunctions"] = None,
        names: Optional[List["microsoftgraphworkbooknameditem"]] = None,
        operations: Optional[List["microsoftgraphworkbookoperation"]] = None,
        tables: Optional[List["microsoftgraphworkbooktable"]] = None,
        worksheets: Optional[List["microsoftgraphworkbookworksheet"]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbook, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.application = application
        self.comments = comments
        self.functions = functions
        self.names = names
        self.operations = operations
        self.tables = tables
        self.worksheets = worksheets


class microsoftgraphworkbookapplication(microsoftgraphentity):
    """workbookApplication.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param calculation_mode: Returns the calculation mode used in the workbook. Possible values
     are: Automatic, AutomaticExceptTables, Manual.
    :type calculation_mode: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'calculation_mode': {'key': 'calculationMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        calculation_mode: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookapplication, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.calculation_mode = calculation_mode


class microsoftgraphworkbookchart(microsoftgraphentity):
    """workbookChart.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param height: Represents the height, in points, of the chart object.
    :type height: float
    :param left: The distance, in points, from the left side of the chart to the worksheet origin.
    :type left: float
    :param name: Represents the name of a chart object.
    :type name: str
    :param top: Represents the distance, in points, from the top edge of the object to the top of
     row 1 (on a worksheet) or the top of the chart area (on a chart).
    :type top: float
    :param width: Represents the width, in points, of the chart object.
    :type width: float
    :param axes: workbookChartAxes.
    :type axes: ~identity_sign_ins.models.microsoftgraphworkbookchartaxes
    :param data_labels: workbookChartDataLabels.
    :type data_labels: ~identity_sign_ins.models.microsoftgraphworkbookchartdatalabels
    :param format: workbookChartAreaFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartareaformat
    :param legend: workbookChartLegend.
    :type legend: ~identity_sign_ins.models.microsoftgraphworkbookchartlegend
    :param series: Represents either a single series or collection of series in the chart. Read-
     only.
    :type series: list[~identity_sign_ins.models.microsoftgraphworkbookchartseries]
    :param title: workbookChartTitle.
    :type title: ~identity_sign_ins.models.microsoftgraphworkbookcharttitle
    :param worksheet: workbookWorksheet.
    :type worksheet: ~identity_sign_ins.models.microsoftgraphworkbookworksheet
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'height': {'key': 'height', 'type': 'float'},
        'left': {'key': 'left', 'type': 'float'},
        'name': {'key': 'name', 'type': 'str'},
        'top': {'key': 'top', 'type': 'float'},
        'width': {'key': 'width', 'type': 'float'},
        'axes': {'key': 'axes', 'type': 'microsoftgraphworkbookchartaxes'},
        'data_labels': {'key': 'dataLabels', 'type': 'microsoftgraphworkbookchartdatalabels'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartareaformat'},
        'legend': {'key': 'legend', 'type': 'microsoftgraphworkbookchartlegend'},
        'series': {'key': 'series', 'type': '[microsoftgraphworkbookchartseries]'},
        'title': {'key': 'title', 'type': 'microsoftgraphworkbookcharttitle'},
        'worksheet': {'key': 'worksheet', 'type': 'microsoftgraphworkbookworksheet'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        height: Optional[float] = None,
        left: Optional[float] = None,
        name: Optional[str] = None,
        top: Optional[float] = None,
        width: Optional[float] = None,
        axes: Optional["microsoftgraphworkbookchartaxes"] = None,
        data_labels: Optional["microsoftgraphworkbookchartdatalabels"] = None,
        format: Optional["microsoftgraphworkbookchartareaformat"] = None,
        legend: Optional["microsoftgraphworkbookchartlegend"] = None,
        series: Optional[List["microsoftgraphworkbookchartseries"]] = None,
        title: Optional["microsoftgraphworkbookcharttitle"] = None,
        worksheet: Optional["microsoftgraphworkbookworksheet"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchart, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.height = height
        self.left = left
        self.name = name
        self.top = top
        self.width = width
        self.axes = axes
        self.data_labels = data_labels
        self.format = format
        self.legend = legend
        self.series = series
        self.title = title
        self.worksheet = worksheet


class microsoftgraphworkbookchartareaformat(microsoftgraphentity):
    """workbookChartAreaFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartareaformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill
        self.font = font


class microsoftgraphworkbookchartaxes(microsoftgraphentity):
    """workbookChartAxes.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param category_axis: workbookChartAxis.
    :type category_axis: ~identity_sign_ins.models.microsoftgraphworkbookchartaxis
    :param series_axis: workbookChartAxis.
    :type series_axis: ~identity_sign_ins.models.microsoftgraphworkbookchartaxis
    :param value_axis: workbookChartAxis.
    :type value_axis: ~identity_sign_ins.models.microsoftgraphworkbookchartaxis
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'category_axis': {'key': 'categoryAxis', 'type': 'microsoftgraphworkbookchartaxis'},
        'series_axis': {'key': 'seriesAxis', 'type': 'microsoftgraphworkbookchartaxis'},
        'value_axis': {'key': 'valueAxis', 'type': 'microsoftgraphworkbookchartaxis'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        category_axis: Optional["microsoftgraphworkbookchartaxis"] = None,
        series_axis: Optional["microsoftgraphworkbookchartaxis"] = None,
        value_axis: Optional["microsoftgraphworkbookchartaxis"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartaxes, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.category_axis = category_axis
        self.series_axis = series_axis
        self.value_axis = value_axis


class microsoftgraphworkbookchartaxis(microsoftgraphentity):
    """workbookChartAxis.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param major_unit: Json.
    :type major_unit: dict[str, object]
    :param maximum: Json.
    :type maximum: dict[str, object]
    :param minimum: Json.
    :type minimum: dict[str, object]
    :param minor_unit: Json.
    :type minor_unit: dict[str, object]
    :param format: workbookChartAxisFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartaxisformat
    :param major_gridlines: workbookChartGridlines.
    :type major_gridlines: ~identity_sign_ins.models.microsoftgraphworkbookchartgridlines
    :param minor_gridlines: workbookChartGridlines.
    :type minor_gridlines: ~identity_sign_ins.models.microsoftgraphworkbookchartgridlines
    :param title: workbookChartAxisTitle.
    :type title: ~identity_sign_ins.models.microsoftgraphworkbookchartaxistitle
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'major_unit': {'key': 'majorUnit', 'type': '{object}'},
        'maximum': {'key': 'maximum', 'type': '{object}'},
        'minimum': {'key': 'minimum', 'type': '{object}'},
        'minor_unit': {'key': 'minorUnit', 'type': '{object}'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartaxisformat'},
        'major_gridlines': {'key': 'majorGridlines', 'type': 'microsoftgraphworkbookchartgridlines'},
        'minor_gridlines': {'key': 'minorGridlines', 'type': 'microsoftgraphworkbookchartgridlines'},
        'title': {'key': 'title', 'type': 'microsoftgraphworkbookchartaxistitle'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        major_unit: Optional[Dict[str, object]] = None,
        maximum: Optional[Dict[str, object]] = None,
        minimum: Optional[Dict[str, object]] = None,
        minor_unit: Optional[Dict[str, object]] = None,
        format: Optional["microsoftgraphworkbookchartaxisformat"] = None,
        major_gridlines: Optional["microsoftgraphworkbookchartgridlines"] = None,
        minor_gridlines: Optional["microsoftgraphworkbookchartgridlines"] = None,
        title: Optional["microsoftgraphworkbookchartaxistitle"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartaxis, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.major_unit = major_unit
        self.maximum = maximum
        self.minimum = minimum
        self.minor_unit = minor_unit
        self.format = format
        self.major_gridlines = major_gridlines
        self.minor_gridlines = minor_gridlines
        self.title = title


class microsoftgraphworkbookchartaxisformat(microsoftgraphentity):
    """workbookChartAxisFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    :param line: workbookChartLineFormat.
    :type line: ~identity_sign_ins.models.microsoftgraphworkbookchartlineformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
        'line': {'key': 'line', 'type': 'microsoftgraphworkbookchartlineformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        line: Optional["microsoftgraphworkbookchartlineformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartaxisformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.font = font
        self.line = line


class microsoftgraphworkbookchartaxistitle(microsoftgraphentity):
    """workbookChartAxisTitle.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param text: Represents the axis title.
    :type text: str
    :param visible: A boolean that specifies the visibility of an axis title.
    :type visible: bool
    :param format: workbookChartAxisTitleFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartaxistitleformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'text': {'key': 'text', 'type': 'str'},
        'visible': {'key': 'visible', 'type': 'bool'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartaxistitleformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        text: Optional[str] = None,
        visible: Optional[bool] = None,
        format: Optional["microsoftgraphworkbookchartaxistitleformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartaxistitle, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.text = text
        self.visible = visible
        self.format = format


class microsoftgraphworkbookchartaxistitleformat(microsoftgraphentity):
    """workbookChartAxisTitleFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartaxistitleformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.font = font


class microsoftgraphworkbookchartdatalabelformat(microsoftgraphentity):
    """workbookChartDataLabelFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartdatalabelformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill
        self.font = font


class microsoftgraphworkbookchartdatalabels(microsoftgraphentity):
    """workbookChartDataLabels.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param position: DataLabelPosition value that represents the position of the data label. The
     possible values are: None, Center, InsideEnd, InsideBase, OutsideEnd, Left, Right, Top, Bottom,
     BestFit, Callout.
    :type position: str
    :param separator: String representing the separator used for the data labels on a chart.
    :type separator: str
    :param show_bubble_size: Boolean value representing if the data label bubble size is visible or
     not.
    :type show_bubble_size: bool
    :param show_category_name: Boolean value representing if the data label category name is
     visible or not.
    :type show_category_name: bool
    :param show_legend_key: Boolean value representing if the data label legend key is visible or
     not.
    :type show_legend_key: bool
    :param show_percentage: Boolean value representing if the data label percentage is visible or
     not.
    :type show_percentage: bool
    :param show_series_name: Boolean value representing if the data label series name is visible or
     not.
    :type show_series_name: bool
    :param show_value: Boolean value representing if the data label value is visible or not.
    :type show_value: bool
    :param format: workbookChartDataLabelFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartdatalabelformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'position': {'key': 'position', 'type': 'str'},
        'separator': {'key': 'separator', 'type': 'str'},
        'show_bubble_size': {'key': 'showBubbleSize', 'type': 'bool'},
        'show_category_name': {'key': 'showCategoryName', 'type': 'bool'},
        'show_legend_key': {'key': 'showLegendKey', 'type': 'bool'},
        'show_percentage': {'key': 'showPercentage', 'type': 'bool'},
        'show_series_name': {'key': 'showSeriesName', 'type': 'bool'},
        'show_value': {'key': 'showValue', 'type': 'bool'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartdatalabelformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        position: Optional[str] = None,
        separator: Optional[str] = None,
        show_bubble_size: Optional[bool] = None,
        show_category_name: Optional[bool] = None,
        show_legend_key: Optional[bool] = None,
        show_percentage: Optional[bool] = None,
        show_series_name: Optional[bool] = None,
        show_value: Optional[bool] = None,
        format: Optional["microsoftgraphworkbookchartdatalabelformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartdatalabels, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.position = position
        self.separator = separator
        self.show_bubble_size = show_bubble_size
        self.show_category_name = show_category_name
        self.show_legend_key = show_legend_key
        self.show_percentage = show_percentage
        self.show_series_name = show_series_name
        self.show_value = show_value
        self.format = format


class microsoftgraphworkbookchartfill(microsoftgraphentity):
    """workbookChartFill.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartfill, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphworkbookchartfont(microsoftgraphentity):
    """workbookChartFont.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param bold: Represents the bold status of font.
    :type bold: bool
    :param color: HTML color code representation of the text color. E.g. #FF0000 represents Red.
    :type color: str
    :param italic: Represents the italic status of the font.
    :type italic: bool
    :param name: Font name (e.g. 'Calibri').
    :type name: str
    :param size: Size of the font (e.g. 11).
    :type size: float
    :param underline: Type of underline applied to the font. The possible values are: None, Single.
    :type underline: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'bold': {'key': 'bold', 'type': 'bool'},
        'color': {'key': 'color', 'type': 'str'},
        'italic': {'key': 'italic', 'type': 'bool'},
        'name': {'key': 'name', 'type': 'str'},
        'size': {'key': 'size', 'type': 'float'},
        'underline': {'key': 'underline', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        bold: Optional[bool] = None,
        color: Optional[str] = None,
        italic: Optional[bool] = None,
        name: Optional[str] = None,
        size: Optional[float] = None,
        underline: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartfont, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.bold = bold
        self.color = color
        self.italic = italic
        self.name = name
        self.size = size
        self.underline = underline


class microsoftgraphworkbookchartgridlines(microsoftgraphentity):
    """workbookChartGridlines.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param visible: Boolean value representing if the axis gridlines are visible or not.
    :type visible: bool
    :param format: workbookChartGridlinesFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartgridlinesformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'visible': {'key': 'visible', 'type': 'bool'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartgridlinesformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        visible: Optional[bool] = None,
        format: Optional["microsoftgraphworkbookchartgridlinesformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartgridlines, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.visible = visible
        self.format = format


class microsoftgraphworkbookchartgridlinesformat(microsoftgraphentity):
    """workbookChartGridlinesFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param line: workbookChartLineFormat.
    :type line: ~identity_sign_ins.models.microsoftgraphworkbookchartlineformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'line': {'key': 'line', 'type': 'microsoftgraphworkbookchartlineformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        line: Optional["microsoftgraphworkbookchartlineformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartgridlinesformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.line = line


class microsoftgraphworkbookchartlegend(microsoftgraphentity):
    """workbookChartLegend.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param overlay: Boolean value for whether the chart legend should overlap with the main body of
     the chart.
    :type overlay: bool
    :param position: Represents the position of the legend on the chart. The possible values are:
     Top, Bottom, Left, Right, Corner, Custom.
    :type position: str
    :param visible: A boolean value the represents the visibility of a ChartLegend object.
    :type visible: bool
    :param format: workbookChartLegendFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartlegendformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'overlay': {'key': 'overlay', 'type': 'bool'},
        'position': {'key': 'position', 'type': 'str'},
        'visible': {'key': 'visible', 'type': 'bool'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartlegendformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        overlay: Optional[bool] = None,
        position: Optional[str] = None,
        visible: Optional[bool] = None,
        format: Optional["microsoftgraphworkbookchartlegendformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartlegend, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.overlay = overlay
        self.position = position
        self.visible = visible
        self.format = format


class microsoftgraphworkbookchartlegendformat(microsoftgraphentity):
    """workbookChartLegendFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartlegendformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill
        self.font = font


class microsoftgraphworkbookchartlineformat(microsoftgraphentity):
    """workbookChartLineFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param color: HTML color code representing the color of lines in the chart.
    :type color: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'color': {'key': 'color', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        color: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartlineformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.color = color


class microsoftgraphworkbookchartpoint(microsoftgraphentity):
    """workbookChartPoint.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param value: Json.
    :type value: dict[str, object]
    :param format: workbookChartPointFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartpointformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'value': {'key': 'value', 'type': '{object}'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartpointformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        value: Optional[Dict[str, object]] = None,
        format: Optional["microsoftgraphworkbookchartpointformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartpoint, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.value = value
        self.format = format


class microsoftgraphworkbookchartpointformat(microsoftgraphentity):
    """workbookChartPointFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartpointformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill


class microsoftgraphworkbookchartseries(microsoftgraphentity):
    """workbookChartSeries.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: Represents the name of a series in a chart.
    :type name: str
    :param format: workbookChartSeriesFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookchartseriesformat
    :param points: Represents a collection of all points in the series. Read-only.
    :type points: list[~identity_sign_ins.models.microsoftgraphworkbookchartpoint]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookchartseriesformat'},
        'points': {'key': 'points', 'type': '[microsoftgraphworkbookchartpoint]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        format: Optional["microsoftgraphworkbookchartseriesformat"] = None,
        points: Optional[List["microsoftgraphworkbookchartpoint"]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartseries, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.format = format
        self.points = points


class microsoftgraphworkbookchartseriesformat(microsoftgraphentity):
    """workbookChartSeriesFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    :param line: workbookChartLineFormat.
    :type line: ~identity_sign_ins.models.microsoftgraphworkbookchartlineformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
        'line': {'key': 'line', 'type': 'microsoftgraphworkbookchartlineformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        line: Optional["microsoftgraphworkbookchartlineformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookchartseriesformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill
        self.line = line


class microsoftgraphworkbookcharttitle(microsoftgraphentity):
    """workbookChartTitle.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param overlay: Boolean value representing if the chart title will overlay the chart or not.
    :type overlay: bool
    :param text: Represents the title text of a chart.
    :type text: str
    :param visible: A boolean value the represents the visibility of a chart title object.
    :type visible: bool
    :param format: workbookChartTitleFormat.
    :type format: ~identity_sign_ins.models.microsoftgraphworkbookcharttitleformat
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'overlay': {'key': 'overlay', 'type': 'bool'},
        'text': {'key': 'text', 'type': 'str'},
        'visible': {'key': 'visible', 'type': 'bool'},
        'format': {'key': 'format', 'type': 'microsoftgraphworkbookcharttitleformat'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        overlay: Optional[bool] = None,
        text: Optional[str] = None,
        visible: Optional[bool] = None,
        format: Optional["microsoftgraphworkbookcharttitleformat"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookcharttitle, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.overlay = overlay
        self.text = text
        self.visible = visible
        self.format = format


class microsoftgraphworkbookcharttitleformat(microsoftgraphentity):
    """workbookChartTitleFormat.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fill: workbookChartFill.
    :type fill: ~identity_sign_ins.models.microsoftgraphworkbookchartfill
    :param font: workbookChartFont.
    :type font: ~identity_sign_ins.models.microsoftgraphworkbookchartfont
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fill': {'key': 'fill', 'type': 'microsoftgraphworkbookchartfill'},
        'font': {'key': 'font', 'type': 'microsoftgraphworkbookchartfont'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fill: Optional["microsoftgraphworkbookchartfill"] = None,
        font: Optional["microsoftgraphworkbookchartfont"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookcharttitleformat, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fill = fill
        self.font = font


class microsoftgraphworkbookcomment(microsoftgraphentity):
    """workbookComment.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content of comment.
    :type content: str
    :param content_type: Indicates the type for the comment.
    :type content_type: str
    :param replies: Read-only. Nullable.
    :type replies: list[~identity_sign_ins.models.microsoftgraphworkbookcommentreply]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'str'},
        'content_type': {'key': 'contentType', 'type': 'str'},
        'replies': {'key': 'replies', 'type': '[microsoftgraphworkbookcommentreply]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[str] = None,
        content_type: Optional[str] = None,
        replies: Optional[List["microsoftgraphworkbookcommentreply"]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookcomment, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_type = content_type
        self.replies = replies


class microsoftgraphworkbookcommentreply(microsoftgraphentity):
    """workbookCommentReply.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param content: The content of a comment reply.
    :type content: str
    :param content_type: Indicates the type for the comment reply.
    :type content_type: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'content': {'key': 'content', 'type': 'str'},
        'content_type': {'key': 'contentType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        content: Optional[str] = None,
        content_type: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookcommentreply, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.content = content
        self.content_type = content_type


class microsoftgraphworkbookfilter(microsoftgraphentity):
    """workbookFilter.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param criteria: workbookFilterCriteria.
    :type criteria: ~identity_sign_ins.models.microsoftgraphworkbookfiltercriteria
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'criteria': {'key': 'criteria', 'type': 'microsoftgraphworkbookfiltercriteria'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        criteria: Optional["microsoftgraphworkbookfiltercriteria"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookfilter, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.criteria = criteria


class microsoftgraphworkbookfiltercriteria(msrest.serialization.Model):
    """workbookFilterCriteria.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param color:
    :type color: str
    :param criterion1:
    :type criterion1: str
    :param criterion2:
    :type criterion2: str
    :param dynamic_criteria:
    :type dynamic_criteria: str
    :param filter_on:
    :type filter_on: str
    :param icon: workbookIcon.
    :type icon: ~identity_sign_ins.models.microsoftgraphworkbookicon
    :param operator:
    :type operator: str
    :param values: Json.
    :type values: dict[str, object]
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'color': {'key': 'color', 'type': 'str'},
        'criterion1': {'key': 'criterion1', 'type': 'str'},
        'criterion2': {'key': 'criterion2', 'type': 'str'},
        'dynamic_criteria': {'key': 'dynamicCriteria', 'type': 'str'},
        'filter_on': {'key': 'filterOn', 'type': 'str'},
        'icon': {'key': 'icon', 'type': 'microsoftgraphworkbookicon'},
        'operator': {'key': 'operator', 'type': 'str'},
        'values': {'key': 'values', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        color: Optional[str] = None,
        criterion1: Optional[str] = None,
        criterion2: Optional[str] = None,
        dynamic_criteria: Optional[str] = None,
        filter_on: Optional[str] = None,
        icon: Optional["microsoftgraphworkbookicon"] = None,
        operator: Optional[str] = None,
        values: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookfiltercriteria, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.color = color
        self.criterion1 = criterion1
        self.criterion2 = criterion2
        self.dynamic_criteria = dynamic_criteria
        self.filter_on = filter_on
        self.icon = icon
        self.operator = operator
        self.values = values


class microsoftgraphworkbookfunctions(microsoftgraphentity):
    """workbookFunctions.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookfunctions, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties


class microsoftgraphworkbookicon(msrest.serialization.Model):
    """workbookIcon.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param index: Represents the index of the icon in the given set.
    :type index: int
    :param set: Represents the set that the icon is part of. The possible values are: Invalid,
     ThreeArrows, ThreeArrowsGray, ThreeFlags, ThreeTrafficLights1, ThreeTrafficLights2, ThreeSigns,
     ThreeSymbols, ThreeSymbols2, FourArrows, FourArrowsGray, FourRedToBlack, FourRating,
     FourTrafficLights, FiveArrows, FiveArrowsGray, FiveRating, FiveQuarters, ThreeStars,
     ThreeTriangles, FiveBoxes.
    :type set: str
    """

    _validation = {
        'index': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'index': {'key': 'index', 'type': 'int'},
        'set': {'key': 'set', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        index: Optional[int] = None,
        set: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookicon, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.index = index
        self.set = set


class microsoftgraphworkbooknameditem(microsoftgraphentity):
    """workbookNamedItem.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param comment: Represents the comment associated with this name.
    :type comment: str
    :param name: The name of the object. Read-only.
    :type name: str
    :param scope: Indicates whether the name is scoped to the workbook or to a specific worksheet.
     Read-only.
    :type scope: str
    :param type: Indicates what type of reference is associated with the name. The possible values
     are: String, Integer, Double, Boolean, Range. Read-only.
    :type type: str
    :param value: Json.
    :type value: dict[str, object]
    :param visible: Specifies whether the object is visible or not.
    :type visible: bool
    :param worksheet: workbookWorksheet.
    :type worksheet: ~identity_sign_ins.models.microsoftgraphworkbookworksheet
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'comment': {'key': 'comment', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'scope': {'key': 'scope', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'value': {'key': 'value', 'type': '{object}'},
        'visible': {'key': 'visible', 'type': 'bool'},
        'worksheet': {'key': 'worksheet', 'type': 'microsoftgraphworkbookworksheet'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        comment: Optional[str] = None,
        name: Optional[str] = None,
        scope: Optional[str] = None,
        type: Optional[str] = None,
        value: Optional[Dict[str, object]] = None,
        visible: Optional[bool] = None,
        worksheet: Optional["microsoftgraphworkbookworksheet"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooknameditem, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.comment = comment
        self.name = name
        self.scope = scope
        self.type = type
        self.value = value
        self.visible = visible
        self.worksheet = worksheet


class microsoftgraphworkbookoperation(microsoftgraphentity):
    """workbookOperation.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param error: workbookOperationError.
    :type error: ~identity_sign_ins.models.microsoftgraphworkbookoperationerror
    :param resource_location: The resource URI for the result.
    :type resource_location: str
    :param status:  Possible values include: "notStarted", "running", "succeeded", "failed".
    :type status: str or ~identity_sign_ins.models.Microsoftgraphworkbookoperationstatus
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'error': {'key': 'error', 'type': 'microsoftgraphworkbookoperationerror'},
        'resource_location': {'key': 'resourceLocation', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        error: Optional["microsoftgraphworkbookoperationerror"] = None,
        resource_location: Optional[str] = None,
        status: Optional[Union[str, "Microsoftgraphworkbookoperationstatus"]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookoperation, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.error = error
        self.resource_location = resource_location
        self.status = status


class microsoftgraphworkbookoperationerror(msrest.serialization.Model):
    """workbookOperationError.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: The error code.
    :type code: str
    :param inner_error: workbookOperationError.
    :type inner_error: ~identity_sign_ins.models.microsoftgraphworkbookoperationerror
    :param message: The error message.
    :type message: str
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'inner_error': {'key': 'innerError', 'type': 'microsoftgraphworkbookoperationerror'},
        'message': {'key': 'message', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        code: Optional[str] = None,
        inner_error: Optional["microsoftgraphworkbookoperationerror"] = None,
        message: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookoperationerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.inner_error = inner_error
        self.message = message


class microsoftgraphworkbookpivottable(microsoftgraphentity):
    """workbookPivotTable.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: Name of the PivotTable.
    :type name: str
    :param worksheet: workbookWorksheet.
    :type worksheet: ~identity_sign_ins.models.microsoftgraphworkbookworksheet
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'worksheet': {'key': 'worksheet', 'type': 'microsoftgraphworkbookworksheet'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        worksheet: Optional["microsoftgraphworkbookworksheet"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookpivottable, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.worksheet = worksheet


class microsoftgraphworkbooksortfield(msrest.serialization.Model):
    """workbookSortField.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param ascending: Represents whether the sorting is done in an ascending fashion.
    :type ascending: bool
    :param color: Represents the color that is the target of the condition if the sorting is on
     font or cell color.
    :type color: str
    :param data_option: Represents additional sorting options for this field. The possible values
     are: Normal, TextAsNumber.
    :type data_option: str
    :param icon: workbookIcon.
    :type icon: ~identity_sign_ins.models.microsoftgraphworkbookicon
    :param key: Represents the column (or row, depending on the sort orientation) that the
     condition is on. Represented as an offset from the first column (or row).
    :type key: int
    :param sort_on: Represents the type of sorting of this condition. The possible values are:
     Value, CellColor, FontColor, Icon.
    :type sort_on: str
    """

    _validation = {
        'key': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'ascending': {'key': 'ascending', 'type': 'bool'},
        'color': {'key': 'color', 'type': 'str'},
        'data_option': {'key': 'dataOption', 'type': 'str'},
        'icon': {'key': 'icon', 'type': 'microsoftgraphworkbookicon'},
        'key': {'key': 'key', 'type': 'int'},
        'sort_on': {'key': 'sortOn', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        ascending: Optional[bool] = None,
        color: Optional[str] = None,
        data_option: Optional[str] = None,
        icon: Optional["microsoftgraphworkbookicon"] = None,
        key: Optional[int] = None,
        sort_on: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooksortfield, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.ascending = ascending
        self.color = color
        self.data_option = data_option
        self.icon = icon
        self.key = key
        self.sort_on = sort_on


class microsoftgraphworkbooktable(microsoftgraphentity):
    """workbookTable.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param highlight_first_column: Indicates whether the first column contains special formatting.
    :type highlight_first_column: bool
    :param highlight_last_column: Indicates whether the last column contains special formatting.
    :type highlight_last_column: bool
    :param legacy_id: Legacy Id used in older Excle clients. The value of the identifier remains
     the same even when the table is renamed. This property should be interpreted as an opaque
     string value and should not be parsed to any other type. Read-only.
    :type legacy_id: str
    :param name: Name of the table.
    :type name: str
    :param show_banded_columns: Indicates whether the columns show banded formatting in which odd
     columns are highlighted differently from even ones to make reading the table easier.
    :type show_banded_columns: bool
    :param show_banded_rows: Indicates whether the rows show banded formatting in which odd rows
     are highlighted differently from even ones to make reading the table easier.
    :type show_banded_rows: bool
    :param show_filter_button: Indicates whether the filter buttons are visible at the top of each
     column header. Setting this is only allowed if the table contains a header row.
    :type show_filter_button: bool
    :param show_headers: Indicates whether the header row is visible or not. This value can be set
     to show or remove the header row.
    :type show_headers: bool
    :param show_totals: Indicates whether the total row is visible or not. This value can be set to
     show or remove the total row.
    :type show_totals: bool
    :param style: Constant value that represents the Table style. The possible values are:
     TableStyleLight1 thru TableStyleLight21, TableStyleMedium1 thru TableStyleMedium28,
     TableStyleStyleDark1 thru TableStyleStyleDark11. A custom user-defined style present in the
     workbook can also be specified.
    :type style: str
    :param columns: Represents a collection of all the columns in the table. Read-only.
    :type columns: list[~identity_sign_ins.models.microsoftgraphworkbooktablecolumn]
    :param rows: Represents a collection of all the rows in the table. Read-only.
    :type rows: list[~identity_sign_ins.models.microsoftgraphworkbooktablerow]
    :param sort: workbookTableSort.
    :type sort: ~identity_sign_ins.models.microsoftgraphworkbooktablesort
    :param worksheet: workbookWorksheet.
    :type worksheet: ~identity_sign_ins.models.microsoftgraphworkbookworksheet
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'highlight_first_column': {'key': 'highlightFirstColumn', 'type': 'bool'},
        'highlight_last_column': {'key': 'highlightLastColumn', 'type': 'bool'},
        'legacy_id': {'key': 'legacyId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'show_banded_columns': {'key': 'showBandedColumns', 'type': 'bool'},
        'show_banded_rows': {'key': 'showBandedRows', 'type': 'bool'},
        'show_filter_button': {'key': 'showFilterButton', 'type': 'bool'},
        'show_headers': {'key': 'showHeaders', 'type': 'bool'},
        'show_totals': {'key': 'showTotals', 'type': 'bool'},
        'style': {'key': 'style', 'type': 'str'},
        'columns': {'key': 'columns', 'type': '[microsoftgraphworkbooktablecolumn]'},
        'rows': {'key': 'rows', 'type': '[microsoftgraphworkbooktablerow]'},
        'sort': {'key': 'sort', 'type': 'microsoftgraphworkbooktablesort'},
        'worksheet': {'key': 'worksheet', 'type': 'microsoftgraphworkbookworksheet'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        highlight_first_column: Optional[bool] = None,
        highlight_last_column: Optional[bool] = None,
        legacy_id: Optional[str] = None,
        name: Optional[str] = None,
        show_banded_columns: Optional[bool] = None,
        show_banded_rows: Optional[bool] = None,
        show_filter_button: Optional[bool] = None,
        show_headers: Optional[bool] = None,
        show_totals: Optional[bool] = None,
        style: Optional[str] = None,
        columns: Optional[List["microsoftgraphworkbooktablecolumn"]] = None,
        rows: Optional[List["microsoftgraphworkbooktablerow"]] = None,
        sort: Optional["microsoftgraphworkbooktablesort"] = None,
        worksheet: Optional["microsoftgraphworkbookworksheet"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooktable, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.highlight_first_column = highlight_first_column
        self.highlight_last_column = highlight_last_column
        self.legacy_id = legacy_id
        self.name = name
        self.show_banded_columns = show_banded_columns
        self.show_banded_rows = show_banded_rows
        self.show_filter_button = show_filter_button
        self.show_headers = show_headers
        self.show_totals = show_totals
        self.style = style
        self.columns = columns
        self.rows = rows
        self.sort = sort
        self.worksheet = worksheet


class microsoftgraphworkbooktablecolumn(microsoftgraphentity):
    """workbookTableColumn.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param index: Returns the index number of the column within the columns collection of the
     table. Zero-indexed. Read-only.
    :type index: int
    :param name: Returns the name of the table column.
    :type name: str
    :param values: Json.
    :type values: dict[str, object]
    :param filter: workbookFilter.
    :type filter: ~identity_sign_ins.models.microsoftgraphworkbookfilter
    """

    _validation = {
        'index': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'index': {'key': 'index', 'type': 'int'},
        'name': {'key': 'name', 'type': 'str'},
        'values': {'key': 'values', 'type': '{object}'},
        'filter': {'key': 'filter', 'type': 'microsoftgraphworkbookfilter'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        index: Optional[int] = None,
        name: Optional[str] = None,
        values: Optional[Dict[str, object]] = None,
        filter: Optional["microsoftgraphworkbookfilter"] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooktablecolumn, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.index = index
        self.name = name
        self.values = values
        self.filter = filter


class microsoftgraphworkbooktablerow(microsoftgraphentity):
    """workbookTableRow.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param index: Returns the index number of the row within the rows collection of the table.
     Zero-indexed. Read-only.
    :type index: int
    :param values: Json.
    :type values: dict[str, object]
    """

    _validation = {
        'index': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'index': {'key': 'index', 'type': 'int'},
        'values': {'key': 'values', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        index: Optional[int] = None,
        values: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooktablerow, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.index = index
        self.values = values


class microsoftgraphworkbooktablesort(microsoftgraphentity):
    """workbookTableSort.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param fields: Represents the current conditions used to last sort the table. Read-only.
    :type fields: list[~identity_sign_ins.models.microsoftgraphworkbooksortfield]
    :param match_case: Represents whether the casing impacted the last sort of the table. Read-
     only.
    :type match_case: bool
    :param method: Represents Chinese character ordering method last used to sort the table. The
     possible values are: PinYin, StrokeCount. Read-only.
    :type method: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'fields': {'key': 'fields', 'type': '[microsoftgraphworkbooksortfield]'},
        'match_case': {'key': 'matchCase', 'type': 'bool'},
        'method': {'key': 'method', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        fields: Optional[List["microsoftgraphworkbooksortfield"]] = None,
        match_case: Optional[bool] = None,
        method: Optional[str] = None,
        **kwargs
    ):
        super(microsoftgraphworkbooktablesort, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.fields = fields
        self.match_case = match_case
        self.method = method


class microsoftgraphworkbookworksheet(microsoftgraphentity):
    """workbookWorksheet.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param name: The display name of the worksheet.
    :type name: str
    :param position: The zero-based position of the worksheet within the workbook.
    :type position: int
    :param visibility: The Visibility of the worksheet. The possible values are: Visible, Hidden,
     VeryHidden.
    :type visibility: str
    :param charts: Returns collection of charts that are part of the worksheet. Read-only.
    :type charts: list[~identity_sign_ins.models.microsoftgraphworkbookchart]
    :param names: Returns collection of names that are associated with the worksheet. Read-only.
    :type names: list[~identity_sign_ins.models.microsoftgraphworkbooknameditem]
    :param pivot_tables: Collection of PivotTables that are part of the worksheet.
    :type pivot_tables: list[~identity_sign_ins.models.microsoftgraphworkbookpivottable]
    :param protection: workbookWorksheetProtection.
    :type protection: ~identity_sign_ins.models.microsoftgraphworkbookworksheetprotection
    :param tables: Collection of tables that are part of the worksheet. Read-only.
    :type tables: list[~identity_sign_ins.models.microsoftgraphworkbooktable]
    """

    _validation = {
        'position': {'maximum': 2147483647, 'minimum': -2147483648},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'name': {'key': 'name', 'type': 'str'},
        'position': {'key': 'position', 'type': 'int'},
        'visibility': {'key': 'visibility', 'type': 'str'},
        'charts': {'key': 'charts', 'type': '[microsoftgraphworkbookchart]'},
        'names': {'key': 'names', 'type': '[microsoftgraphworkbooknameditem]'},
        'pivot_tables': {'key': 'pivotTables', 'type': '[microsoftgraphworkbookpivottable]'},
        'protection': {'key': 'protection', 'type': 'microsoftgraphworkbookworksheetprotection'},
        'tables': {'key': 'tables', 'type': '[microsoftgraphworkbooktable]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        name: Optional[str] = None,
        position: Optional[int] = None,
        visibility: Optional[str] = None,
        charts: Optional[List["microsoftgraphworkbookchart"]] = None,
        names: Optional[List["microsoftgraphworkbooknameditem"]] = None,
        pivot_tables: Optional[List["microsoftgraphworkbookpivottable"]] = None,
        protection: Optional["microsoftgraphworkbookworksheetprotection"] = None,
        tables: Optional[List["microsoftgraphworkbooktable"]] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookworksheet, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.name = name
        self.position = position
        self.visibility = visibility
        self.charts = charts
        self.names = names
        self.pivot_tables = pivot_tables
        self.protection = protection
        self.tables = tables


class microsoftgraphworkbookworksheetprotection(microsoftgraphentity):
    """workbookWorksheetProtection.

    :param id: Read-only.
    :type id: str
    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param options: workbookWorksheetProtectionOptions.
    :type options: ~identity_sign_ins.models.microsoftgraphworkbookworksheetprotectionoptions
    :param protected: Indicates if the worksheet is protected.  Read-only.
    :type protected: bool
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'additional_properties': {'key': '', 'type': '{object}'},
        'options': {'key': 'options', 'type': 'microsoftgraphworkbookworksheetprotectionoptions'},
        'protected': {'key': 'protected', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        additional_properties: Optional[Dict[str, object]] = None,
        options: Optional["microsoftgraphworkbookworksheetprotectionoptions"] = None,
        protected: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookworksheetprotection, self).__init__(id=id, **kwargs)
        self.additional_properties = additional_properties
        self.options = options
        self.protected = protected


class microsoftgraphworkbookworksheetprotectionoptions(msrest.serialization.Model):
    """workbookWorksheetProtectionOptions.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param allow_auto_filter: Represents the worksheet protection option of allowing using auto
     filter feature.
    :type allow_auto_filter: bool
    :param allow_delete_columns: Represents the worksheet protection option of allowing deleting
     columns.
    :type allow_delete_columns: bool
    :param allow_delete_rows: Represents the worksheet protection option of allowing deleting rows.
    :type allow_delete_rows: bool
    :param allow_format_cells: Represents the worksheet protection option of allowing formatting
     cells.
    :type allow_format_cells: bool
    :param allow_format_columns: Represents the worksheet protection option of allowing formatting
     columns.
    :type allow_format_columns: bool
    :param allow_format_rows: Represents the worksheet protection option of allowing formatting
     rows.
    :type allow_format_rows: bool
    :param allow_insert_columns: Represents the worksheet protection option of allowing inserting
     columns.
    :type allow_insert_columns: bool
    :param allow_insert_hyperlinks: Represents the worksheet protection option of allowing
     inserting hyperlinks.
    :type allow_insert_hyperlinks: bool
    :param allow_insert_rows: Represents the worksheet protection option of allowing inserting
     rows.
    :type allow_insert_rows: bool
    :param allow_pivot_tables: Represents the worksheet protection option of allowing using pivot
     table feature.
    :type allow_pivot_tables: bool
    :param allow_sort: Represents the worksheet protection option of allowing using sort feature.
    :type allow_sort: bool
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'allow_auto_filter': {'key': 'allowAutoFilter', 'type': 'bool'},
        'allow_delete_columns': {'key': 'allowDeleteColumns', 'type': 'bool'},
        'allow_delete_rows': {'key': 'allowDeleteRows', 'type': 'bool'},
        'allow_format_cells': {'key': 'allowFormatCells', 'type': 'bool'},
        'allow_format_columns': {'key': 'allowFormatColumns', 'type': 'bool'},
        'allow_format_rows': {'key': 'allowFormatRows', 'type': 'bool'},
        'allow_insert_columns': {'key': 'allowInsertColumns', 'type': 'bool'},
        'allow_insert_hyperlinks': {'key': 'allowInsertHyperlinks', 'type': 'bool'},
        'allow_insert_rows': {'key': 'allowInsertRows', 'type': 'bool'},
        'allow_pivot_tables': {'key': 'allowPivotTables', 'type': 'bool'},
        'allow_sort': {'key': 'allowSort', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        allow_auto_filter: Optional[bool] = None,
        allow_delete_columns: Optional[bool] = None,
        allow_delete_rows: Optional[bool] = None,
        allow_format_cells: Optional[bool] = None,
        allow_format_columns: Optional[bool] = None,
        allow_format_rows: Optional[bool] = None,
        allow_insert_columns: Optional[bool] = None,
        allow_insert_hyperlinks: Optional[bool] = None,
        allow_insert_rows: Optional[bool] = None,
        allow_pivot_tables: Optional[bool] = None,
        allow_sort: Optional[bool] = None,
        **kwargs
    ):
        super(microsoftgraphworkbookworksheetprotectionoptions, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.allow_auto_filter = allow_auto_filter
        self.allow_delete_columns = allow_delete_columns
        self.allow_delete_rows = allow_delete_rows
        self.allow_format_cells = allow_format_cells
        self.allow_format_columns = allow_format_columns
        self.allow_format_rows = allow_format_rows
        self.allow_insert_columns = allow_insert_columns
        self.allow_insert_hyperlinks = allow_insert_hyperlinks
        self.allow_insert_rows = allow_insert_rows
        self.allow_pivot_tables = allow_pivot_tables
        self.allow_sort = allow_sort


class microsoftgraphworkinghours(msrest.serialization.Model):
    """workingHours.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param days_of_week: The days of the week on which the user works.
    :type days_of_week: list[str or ~identity_sign_ins.models.Microsoftgraphdayofweek]
    :param end_time: The time of the day that the user stops working.
    :type end_time: ~datetime.time
    :param start_time: The time of the day that the user starts working.
    :type start_time: ~datetime.time
    :param time_zone: timeZoneBase.
    :type time_zone: ~identity_sign_ins.models.microsoftgraphtimezonebase
    """

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'days_of_week': {'key': 'daysOfWeek', 'type': '[str]'},
        'end_time': {'key': 'endTime', 'type': 'time'},
        'start_time': {'key': 'startTime', 'type': 'time'},
        'time_zone': {'key': 'timeZone', 'type': 'microsoftgraphtimezonebase'},
    }

    def __init__(
        self,
        *,
        additional_properties: Optional[Dict[str, object]] = None,
        days_of_week: Optional[List[Union[str, "Microsoftgraphdayofweek"]]] = None,
        end_time: Optional[datetime.time] = None,
        start_time: Optional[datetime.time] = None,
        time_zone: Optional["microsoftgraphtimezonebase"] = None,
        **kwargs
    ):
        super(microsoftgraphworkinghours, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.days_of_week = days_of_week
        self.end_time = end_time
        self.start_time = start_time
        self.time_zone = time_zone


class odataerror(msrest.serialization.Model):
    """odataerror.

    All required parameters must be populated in order to send to Azure.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param error: Required.
    :type error: ~identity_sign_ins.models.odataerrormain
    """

    _validation = {
        'error': {'required': True},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'error': {'key': 'error', 'type': 'odataerrormain'},
    }

    def __init__(
        self,
        *,
        error: "odataerrormain",
        additional_properties: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(odataerror, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.error = error


class odataerrordetail(msrest.serialization.Model):
    """odataerrordetail.

    All required parameters must be populated in order to send to Azure.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: Required.
    :type code: str
    :param message: Required.
    :type message: str
    :param target:
    :type target: str
    """

    _validation = {
        'code': {'required': True},
        'message': {'required': True},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        code: str,
        message: str,
        additional_properties: Optional[Dict[str, object]] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        super(odataerrordetail, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.message = message
        self.target = target


class odataerrormain(msrest.serialization.Model):
    """odataerrormain.

    All required parameters must be populated in order to send to Azure.

    :param additional_properties: Unmatched properties from the message are deserialized to this
     collection.
    :type additional_properties: dict[str, object]
    :param code: Required.
    :type code: str
    :param message: Required.
    :type message: str
    :param target:
    :type target: str
    :param details:
    :type details: list[~identity_sign_ins.models.odataerrordetail]
    :param innererror: The structure of this object is service-specific.
    :type innererror: dict[str, object]
    """

    _validation = {
        'code': {'required': True},
        'message': {'required': True},
    }

    _attribute_map = {
        'additional_properties': {'key': '', 'type': '{object}'},
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[odataerrordetail]'},
        'innererror': {'key': 'innererror', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        code: str,
        message: str,
        additional_properties: Optional[Dict[str, object]] = None,
        target: Optional[str] = None,
        details: Optional[List["odataerrordetail"]] = None,
        innererror: Optional[Dict[str, object]] = None,
        **kwargs
    ):
        super(odataerrormain, self).__init__(**kwargs)
        self.additional_properties = additional_properties
        self.code = code
        self.message = message
        self.target = target
        self.details = details
        self.innererror = innererror
